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.
Files changed (118) hide show
  1. package/config/constants.js +1 -3
  2. package/config/scripts/postinstall.js +32 -25
  3. package/lib/glossary-58eca5a8.d.ts +332 -0
  4. package/lib/iife/index.js +10911 -21
  5. package/lib/iife/index.js.map +1 -0
  6. package/lib/index.d.ts +353 -0
  7. package/lib/index.js +1875 -0
  8. package/lib/index.js.map +1 -0
  9. package/lib/{esm/mockServiceWorker.js → mockServiceWorker.js} +1 -1
  10. package/lib/native/index.d.ts +9 -0
  11. package/lib/native/index.js +1304 -0
  12. package/lib/native/index.mjs +1291 -0
  13. package/lib/node/index.d.ts +15 -0
  14. package/lib/node/index.js +1312 -0
  15. package/lib/node/index.js.map +1 -0
  16. package/lib/node/index.mjs +1297 -0
  17. package/lib/node/index.mjs.map +1 -0
  18. package/native/package.json +3 -2
  19. package/node/package.json +3 -2
  20. package/package.json +14 -24
  21. package/lib/esm/errors-deps.js +0 -74
  22. package/lib/esm/fetch-deps.js +0 -1005
  23. package/lib/esm/graphql-deps.js +0 -3545
  24. package/lib/esm/graphql.js +0 -5
  25. package/lib/esm/index-deps.js +0 -21
  26. package/lib/esm/index.js +0 -1731
  27. package/lib/esm/index2.js +0 -3
  28. package/lib/esm/matchRequestUrl-deps.js +0 -992
  29. package/lib/esm/rest-deps.js +0 -103
  30. package/lib/esm/rest.js +0 -5
  31. package/lib/esm/xml-deps.js +0 -44
  32. package/lib/iife/mockServiceWorker.js +0 -338
  33. package/lib/types/context/body.d.ts +0 -9
  34. package/lib/types/context/cookie.d.ts +0 -7
  35. package/lib/types/context/data.d.ts +0 -8
  36. package/lib/types/context/delay.d.ts +0 -15
  37. package/lib/types/context/errors.d.ts +0 -8
  38. package/lib/types/context/extensions.d.ts +0 -8
  39. package/lib/types/context/fetch.d.ts +0 -9
  40. package/lib/types/context/index.d.ts +0 -12
  41. package/lib/types/context/json.d.ts +0 -12
  42. package/lib/types/context/set.d.ts +0 -18
  43. package/lib/types/context/status.d.ts +0 -9
  44. package/lib/types/context/text.d.ts +0 -8
  45. package/lib/types/context/xml.d.ts +0 -9
  46. package/lib/types/graphql.d.ts +0 -74
  47. package/lib/types/handlers/GraphQLHandler.d.ts +0 -39
  48. package/lib/types/handlers/RequestHandler.d.ts +0 -103
  49. package/lib/types/handlers/RestHandler.d.ts +0 -47
  50. package/lib/types/index.d.ts +0 -26
  51. package/lib/types/native/index.d.ts +0 -1
  52. package/lib/types/node/createSetupServer.d.ts +0 -8
  53. package/lib/types/node/glossary.d.ts +0 -38
  54. package/lib/types/node/index.d.ts +0 -2
  55. package/lib/types/node/setupServer.d.ts +0 -6
  56. package/lib/types/response.d.ts +0 -35
  57. package/lib/types/rest.d.ts +0 -13
  58. package/lib/types/setupWorker/glossary.d.ts +0 -161
  59. package/lib/types/setupWorker/setupWorker.d.ts +0 -9
  60. package/lib/types/setupWorker/start/createFallbackStart.d.ts +0 -2
  61. package/lib/types/setupWorker/start/createStartHandler.d.ts +0 -2
  62. package/lib/types/setupWorker/start/utils/enableMocking.d.ts +0 -5
  63. package/lib/types/setupWorker/start/utils/getWorkerByRegistration.d.ts +0 -6
  64. package/lib/types/setupWorker/start/utils/getWorkerInstance.d.ts +0 -6
  65. package/lib/types/setupWorker/start/utils/prepareStartHandler.d.ts +0 -9
  66. package/lib/types/setupWorker/start/utils/printStartMessage.d.ts +0 -10
  67. package/lib/types/setupWorker/start/utils/validateWorkerScope.d.ts +0 -2
  68. package/lib/types/setupWorker/stop/createFallbackStop.d.ts +0 -2
  69. package/lib/types/setupWorker/stop/createStop.d.ts +0 -2
  70. package/lib/types/setupWorker/stop/utils/printStopMessage.d.ts +0 -3
  71. package/lib/types/sharedOptions.d.ts +0 -24
  72. package/lib/types/typeUtils.d.ts +0 -7
  73. package/lib/types/utils/NetworkError.d.ts +0 -3
  74. package/lib/types/utils/createBroadcastChannel.d.ts +0 -18
  75. package/lib/types/utils/deferNetworkRequestsUntil.d.ts +0 -6
  76. package/lib/types/utils/getResponse.d.ts +0 -15
  77. package/lib/types/utils/handleRequest.d.ts +0 -34
  78. package/lib/types/utils/internal/compose.d.ts +0 -14
  79. package/lib/types/utils/internal/devUtils.d.ts +0 -18
  80. package/lib/types/utils/internal/getCallFrame.d.ts +0 -4
  81. package/lib/types/utils/internal/isIterable.d.ts +0 -4
  82. package/lib/types/utils/internal/isObject.d.ts +0 -4
  83. package/lib/types/utils/internal/isStringEqual.d.ts +0 -4
  84. package/lib/types/utils/internal/jsonParse.d.ts +0 -5
  85. package/lib/types/utils/internal/mergeRight.d.ts +0 -5
  86. package/lib/types/utils/internal/parseGraphQLRequest.d.ts +0 -23
  87. package/lib/types/utils/internal/parseMultipartData.d.ts +0 -6
  88. package/lib/types/utils/internal/pipeEvents.d.ts +0 -6
  89. package/lib/types/utils/internal/requestHandlerUtils.d.ts +0 -4
  90. package/lib/types/utils/internal/requestIntegrityCheck.d.ts +0 -2
  91. package/lib/types/utils/internal/tryCatch.d.ts +0 -1
  92. package/lib/types/utils/internal/uuidv4.d.ts +0 -1
  93. package/lib/types/utils/logging/getStatusCodeColor.d.ts +0 -9
  94. package/lib/types/utils/logging/getTimestamp.d.ts +0 -4
  95. package/lib/types/utils/logging/prepareRequest.d.ts +0 -23
  96. package/lib/types/utils/logging/prepareResponse.d.ts +0 -10
  97. package/lib/types/utils/matching/matchRequestUrl.d.ts +0 -17
  98. package/lib/types/utils/matching/normalizePath.d.ts +0 -9
  99. package/lib/types/utils/request/getPublicUrlFromRequest.d.ts +0 -6
  100. package/lib/types/utils/request/getRequestCookies.d.ts +0 -7
  101. package/lib/types/utils/request/onUnhandledRequest.d.ts +0 -8
  102. package/lib/types/utils/request/parseBody.d.ts +0 -5
  103. package/lib/types/utils/request/parseIsomorphicRequest.d.ts +0 -6
  104. package/lib/types/utils/request/parseWorkerRequest.d.ts +0 -7
  105. package/lib/types/utils/request/pruneGetRequestBody.d.ts +0 -7
  106. package/lib/types/utils/request/readResponseCookies.d.ts +0 -3
  107. package/lib/types/utils/request/setRequestCookies.d.ts +0 -9
  108. package/lib/types/utils/url/cleanUrl.d.ts +0 -5
  109. package/lib/types/utils/url/getAbsoluteUrl.d.ts +0 -4
  110. package/lib/types/utils/url/getAbsoluteWorkerUrl.d.ts +0 -5
  111. package/lib/types/utils/url/isAbsoluteUrl.d.ts +0 -4
  112. package/lib/types/utils/worker/createFallbackRequestListener.d.ts +0 -4
  113. package/lib/types/utils/worker/createRequestListener.d.ts +0 -4
  114. package/lib/types/utils/worker/createResponseListener.d.ts +0 -3
  115. package/lib/umd/index.js +0 -31617
  116. package/lib/umd/mockServiceWorker.js +0 -338
  117. package/native/lib/index.js +0 -6384
  118. package/node/lib/index.js +0 -8276
package/lib/index.d.ts ADDED
@@ -0,0 +1,353 @@
1
+ import { R as ResponseTransformer, s as status, a as set, d as delay, f as fetch, b as RequestHandler, S as SetupWorkerApi, D as DefaultContext, c as DefaultBodyType, M as MockedRequest, e as ResponseResolver, g as ResponseResolutionContext, h as SerializedResponse, i as RequestHandlerDefaultInfo, j as MockedResponse, k as ResponseLookupResult, l as SharedOptions, m as ServerLifecycleEventsMap } from './glossary-58eca5a8.js';
2
+ export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, j as MockedResponse, b as RequestHandler, v as ResponseComposition, w as ResponseCompositionOptions, x as ResponseFunction, e as ResponseResolver, t as ResponseResolverReturnType, R as ResponseTransformer, S as SetupWorkerApi, l as SharedOptions, q as StartOptions, o as createResponseComposition, p as defaultContext, n as defaultResponse, r as response } from './glossary-58eca5a8.js';
3
+ import * as cookieUtils from 'cookie';
4
+ import { GraphQLError, OperationTypeNode, DocumentNode } from 'graphql';
5
+ import { StrictEventEmitter } from 'strict-event-emitter';
6
+ import { IsomorphicRequest } from '@mswjs/interceptors';
7
+ import 'type-fest';
8
+ import 'headers-polyfill';
9
+
10
+ declare type Path = string | RegExp;
11
+ declare type PathParams<KeyType extends keyof any = string> = {
12
+ [ParamName in KeyType]: string | ReadonlyArray<string>;
13
+ };
14
+ interface Match {
15
+ matches: boolean;
16
+ params?: PathParams;
17
+ }
18
+ /**
19
+ * Returns the result of matching given request URL against a mask.
20
+ */
21
+ declare function matchRequestUrl(url: URL, path: Path, baseUrl?: string): Match;
22
+
23
+ declare type Fn = (...arg: any[]) => any;
24
+ declare type RequiredDeep<Type, U extends Record<string, unknown> | Fn | undefined = undefined> = Type extends Fn ? Type : Type extends Record<string, any> ? {
25
+ [Key in keyof Type]-?: NonNullable<Type[Key]> extends NonNullable<U> ? NonNullable<Type[Key]> : RequiredDeep<NonNullable<Type[Key]>, U>;
26
+ } : Type;
27
+ declare type GraphQLPayloadContext<QueryType extends Record<string, unknown>> = (payload: QueryType) => ResponseTransformer;
28
+
29
+ /**
30
+ * Sets a given cookie on the mocked response.
31
+ * @example res(ctx.cookie('name', 'value'))
32
+ */
33
+ declare const cookie: (name: string, value: string, options?: cookieUtils.CookieSerializeOptions) => ResponseTransformer;
34
+
35
+ /**
36
+ * Sets a raw response body. Does not append any `Content-Type` headers.
37
+ * @example
38
+ * res(ctx.body('Successful response'))
39
+ * res(ctx.body(JSON.stringify({ key: 'value' })))
40
+ * @see {@link https://mswjs.io/docs/api/context/body `ctx.body()`}
41
+ */
42
+ declare const body: <BodyType extends string | Blob | BufferSource | FormData | ReadableStream<any>>(value: BodyType) => ResponseTransformer<BodyType, any>;
43
+
44
+ /**
45
+ * Sets a given payload as a GraphQL response body.
46
+ * @example
47
+ * res(ctx.data({ user: { firstName: 'John' }}))
48
+ * @see {@link https://mswjs.io/docs/api/context/data `ctx.data()`}
49
+ */
50
+ declare const data: GraphQLPayloadContext<Record<string, unknown>>;
51
+
52
+ /**
53
+ * Sets the GraphQL extensions on a given response.
54
+ * @example
55
+ * res(ctx.extensions({ tracing: { version: 1 }}))
56
+ * @see {@link https://mswjs.io/docs/api/context/extensions `ctx.extensions()`}
57
+ */
58
+ declare const extensions: GraphQLPayloadContext<Record<string, unknown>>;
59
+
60
+ /**
61
+ * Sets a given list of GraphQL errors on the mocked response.
62
+ * @example res(ctx.errors([{ message: 'Unauthorized' }]))
63
+ * @see {@link https://mswjs.io/docs/api/context/errors}
64
+ */
65
+ declare const errors: <ErrorsType extends readonly Partial<GraphQLError>[] | null | undefined>(errorsList: ErrorsType) => ResponseTransformer<string>;
66
+
67
+ /**
68
+ * Sets the given value as the JSON body of the response.
69
+ * Appends a `Content-Type: application/json` header on the
70
+ * mocked response.
71
+ * @example
72
+ * res(ctx.json('Some string'))
73
+ * res(ctx.json({ key: 'value' }))
74
+ * res(ctx.json([1, '2', false, { ok: true }]))
75
+ * @see {@link https://mswjs.io/docs/api/context/json `ctx.json()`}
76
+ */
77
+ declare const json: <BodyTypeJSON>(body: BodyTypeJSON) => ResponseTransformer<BodyTypeJSON, any>;
78
+
79
+ /**
80
+ * Sets a textual response body. Appends a `Content-Type: text/plain`
81
+ * header on the mocked response.
82
+ * @example res(ctx.text('Successful response'))
83
+ * @see {@link https://mswjs.io/docs/api/context/text `ctx.text()`}
84
+ */
85
+ declare const text: <BodyType extends string>(body: BodyType) => ResponseTransformer<BodyType, any>;
86
+
87
+ /**
88
+ * Sets an XML response body. Appends a `Content-Type: text/xml` header
89
+ * on the mocked response.
90
+ * @example
91
+ * res(ctx.xml('<node key="value">Content</node>'))
92
+ * @see {@link https://mswjs.io/docs/api/context/xml `ctx.xml()`}
93
+ */
94
+ declare const xml: <BodyType extends string>(body: BodyType) => ResponseTransformer<BodyType, any>;
95
+
96
+ declare const index_status: typeof status;
97
+ declare const index_set: typeof set;
98
+ declare const index_cookie: typeof cookie;
99
+ declare const index_body: typeof body;
100
+ declare const index_data: typeof data;
101
+ declare const index_extensions: typeof extensions;
102
+ declare const index_delay: typeof delay;
103
+ declare const index_errors: typeof errors;
104
+ declare const index_fetch: typeof fetch;
105
+ declare const index_json: typeof json;
106
+ declare const index_text: typeof text;
107
+ declare const index_xml: typeof xml;
108
+ declare namespace index {
109
+ export {
110
+ index_status as status,
111
+ index_set as set,
112
+ index_cookie as cookie,
113
+ index_body as body,
114
+ index_data as data,
115
+ index_extensions as extensions,
116
+ index_delay as delay,
117
+ index_errors as errors,
118
+ index_fetch as fetch,
119
+ index_json as json,
120
+ index_text as text,
121
+ index_xml as xml,
122
+ };
123
+ }
124
+
125
+ /**
126
+ * Creates a new mock Service Worker registration
127
+ * with the given request handlers.
128
+ * @param {RequestHandler[]} requestHandlers List of request handlers
129
+ * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker`}
130
+ */
131
+ declare function setupWorker(...requestHandlers: RequestHandler[]): SetupWorkerApi;
132
+
133
+ declare type RestHandlerMethod = string | RegExp;
134
+ interface RestHandlerInfo extends RequestHandlerDefaultInfo {
135
+ method: RestHandlerMethod;
136
+ path: Path;
137
+ }
138
+ declare enum RESTMethods {
139
+ HEAD = "HEAD",
140
+ GET = "GET",
141
+ POST = "POST",
142
+ PUT = "PUT",
143
+ PATCH = "PATCH",
144
+ OPTIONS = "OPTIONS",
145
+ DELETE = "DELETE"
146
+ }
147
+ declare type RestContext = DefaultContext & {
148
+ cookie: typeof cookie;
149
+ text: typeof text;
150
+ body: typeof body;
151
+ json: typeof json;
152
+ xml: typeof xml;
153
+ };
154
+ declare const restContext: RestContext;
155
+ declare type RequestQuery = {
156
+ [queryName: string]: string;
157
+ };
158
+ interface RestRequest<BodyType extends DefaultBodyType = DefaultBodyType, ParamsType extends PathParams = PathParams> extends MockedRequest<BodyType> {
159
+ params: ParamsType;
160
+ }
161
+ declare type ParsedRestRequest = Match;
162
+ /**
163
+ * Request handler for REST API requests.
164
+ * Provides request matching based on method and URL.
165
+ */
166
+ declare class RestHandler<RequestType extends MockedRequest<DefaultBodyType> = MockedRequest<DefaultBodyType>> extends RequestHandler<RestHandlerInfo, RequestType, ParsedRestRequest, RestRequest<RequestType extends MockedRequest<infer RequestBodyType> ? RequestBodyType : any, PathParams>> {
167
+ constructor(method: RestHandlerMethod, path: Path, resolver: ResponseResolver<any, any>);
168
+ private checkRedundantQueryParameters;
169
+ parse(request: RequestType, resolutionContext?: ResponseResolutionContext): Match;
170
+ protected getPublicRequest(request: RequestType, parsedResult: ParsedRestRequest): RestRequest<any, PathParams>;
171
+ predicate(request: RequestType, parsedResult: ParsedRestRequest): boolean;
172
+ log(request: RequestType, response: SerializedResponse): void;
173
+ }
174
+
175
+ declare const rest: {
176
+ all: <RequestBodyType extends DefaultBodyType = DefaultBodyType, Params extends PathParams<keyof Params> = PathParams<string>, ResponseBody extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType, Params>, RestContext, ResponseBody>) => RestHandler<MockedRequest<DefaultBodyType>>;
177
+ head: <RequestBodyType_1 extends DefaultBodyType = DefaultBodyType, Params_1 extends PathParams<keyof Params_1> = PathParams<string>, ResponseBody_1 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<never, Params_1>, RestContext, ResponseBody_1>) => RestHandler<MockedRequest<DefaultBodyType>>;
178
+ get: <RequestBodyType_2 extends DefaultBodyType = DefaultBodyType, Params_2 extends PathParams<keyof Params_2> = PathParams<string>, ResponseBody_2 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<never, Params_2>, RestContext, ResponseBody_2>) => RestHandler<MockedRequest<DefaultBodyType>>;
179
+ post: <RequestBodyType_3 extends DefaultBodyType = DefaultBodyType, Params_3 extends PathParams<keyof Params_3> = PathParams<string>, ResponseBody_3 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_3, Params_3>, RestContext, ResponseBody_3>) => RestHandler<MockedRequest<DefaultBodyType>>;
180
+ put: <RequestBodyType_4 extends DefaultBodyType = DefaultBodyType, Params_4 extends PathParams<keyof Params_4> = PathParams<string>, ResponseBody_4 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_4, Params_4>, RestContext, ResponseBody_4>) => RestHandler<MockedRequest<DefaultBodyType>>;
181
+ delete: <RequestBodyType_5 extends DefaultBodyType = DefaultBodyType, Params_5 extends PathParams<keyof Params_5> = PathParams<string>, ResponseBody_5 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_5, Params_5>, RestContext, ResponseBody_5>) => RestHandler<MockedRequest<DefaultBodyType>>;
182
+ patch: <RequestBodyType_6 extends DefaultBodyType = DefaultBodyType, Params_6 extends PathParams<keyof Params_6> = PathParams<string>, ResponseBody_6 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_6, Params_6>, RestContext, ResponseBody_6>) => RestHandler<MockedRequest<DefaultBodyType>>;
183
+ options: <RequestBodyType_7 extends DefaultBodyType = DefaultBodyType, Params_7 extends PathParams<keyof Params_7> = PathParams<string>, ResponseBody_7 extends DefaultBodyType = DefaultBodyType>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_7, Params_7>, RestContext, ResponseBody_7>) => RestHandler<MockedRequest<DefaultBodyType>>;
184
+ };
185
+
186
+ interface ParsedGraphQLQuery {
187
+ operationType: OperationTypeNode;
188
+ operationName?: string;
189
+ }
190
+ declare type ParsedGraphQLRequest<VariablesType extends GraphQLVariables = GraphQLVariables> = (ParsedGraphQLQuery & {
191
+ variables?: VariablesType;
192
+ }) | undefined;
193
+ declare type GraphQLMultipartRequestBody = {
194
+ operations: string;
195
+ map?: string;
196
+ } & {
197
+ [fileName: string]: File;
198
+ };
199
+
200
+ declare type ExpectedOperationTypeNode = OperationTypeNode | 'all';
201
+ declare type GraphQLHandlerNameSelector = DocumentNode | RegExp | string;
202
+ declare type GraphQLContext<QueryType extends Record<string, unknown>> = DefaultContext & {
203
+ data: GraphQLPayloadContext<QueryType>;
204
+ extensions: GraphQLPayloadContext<QueryType>;
205
+ errors: typeof errors;
206
+ cookie: typeof cookie;
207
+ };
208
+ declare const graphqlContext: GraphQLContext<any>;
209
+ declare type GraphQLVariables = Record<string, any>;
210
+ interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {
211
+ operationType: ExpectedOperationTypeNode;
212
+ operationName: GraphQLHandlerNameSelector;
213
+ }
214
+ declare type GraphQLRequestBody<VariablesType extends GraphQLVariables> = GraphQLJsonRequestBody<VariablesType> | GraphQLMultipartRequestBody | Record<string, any> | undefined;
215
+ interface GraphQLJsonRequestBody<Variables extends GraphQLVariables> {
216
+ query: string;
217
+ variables?: Variables;
218
+ }
219
+ interface GraphQLRequest<Variables extends GraphQLVariables> extends MockedRequest<GraphQLRequestBody<Variables>> {
220
+ variables: Variables;
221
+ }
222
+ declare class GraphQLHandler<Request extends GraphQLRequest<any> = GraphQLRequest<any>> extends RequestHandler<GraphQLHandlerInfo, Request, ParsedGraphQLRequest | null, GraphQLRequest<any>> {
223
+ private endpoint;
224
+ constructor(operationType: ExpectedOperationTypeNode, operationName: GraphQLHandlerNameSelector, endpoint: Path, resolver: ResponseResolver<any, any>);
225
+ parse(request: MockedRequest): ParsedGraphQLRequest<GraphQLVariables>;
226
+ protected getPublicRequest(request: Request, parsedResult: ParsedGraphQLRequest): GraphQLRequest<any>;
227
+ predicate(request: MockedRequest, parsedResult: ParsedGraphQLRequest): boolean;
228
+ log(request: Request, response: SerializedResponse, handler: this, parsedRequest: ParsedGraphQLRequest): void;
229
+ }
230
+
231
+ interface TypedDocumentNode<Result = {
232
+ [key: string]: any;
233
+ }, Variables = {
234
+ [key: string]: any;
235
+ }> extends DocumentNode {
236
+ __apiType?: (variables: Variables) => Result;
237
+ __resultType?: Result;
238
+ __variablesType?: Variables;
239
+ }
240
+ declare const standardGraphQLHandlers: {
241
+ /**
242
+ * Captures any GraphQL operation, regardless of its name, under the current scope.
243
+ * @example
244
+ * graphql.operation((req, res, ctx) => {
245
+ * return res(ctx.data({ name: 'John' }))
246
+ * })
247
+ * @see {@link https://mswjs.io/docs/api/graphql/operation `graphql.operation()`}
248
+ */
249
+ operation: <Query extends Record<string, any>, Variables extends GraphQLVariables = GraphQLVariables>(resolver: ResponseResolver<GraphQLRequest<Variables>, GraphQLContext<Query>, any>) => GraphQLHandler<GraphQLRequest<Variables>>;
250
+ /**
251
+ * Captures a GraphQL query by a given name.
252
+ * @example
253
+ * graphql.query('GetUser', (req, res, ctx) => {
254
+ * return res(ctx.data({ user: { name: 'John' } }))
255
+ * })
256
+ * @see {@link https://mswjs.io/docs/api/graphql/query `graphql.query()`}
257
+ */
258
+ query: <Query_1 extends Record<string, any>, Variables_1 extends GraphQLVariables = GraphQLVariables>(operationName: GraphQLHandlerNameSelector | TypedDocumentNode<Query_1, Variables_1>, resolver: ResponseResolver<GraphQLRequest<Variables_1>, GraphQLContext<Query_1>, any>) => GraphQLHandler<GraphQLRequest<Variables_1>>;
259
+ /**
260
+ * Captures a GraphQL mutation by a given name.
261
+ * @example
262
+ * graphql.mutation('SavePost', (req, res, ctx) => {
263
+ * return res(ctx.data({ post: { id: 'abc-123' } }))
264
+ * })
265
+ * @see {@link https://mswjs.io/docs/api/graphql/mutation `graphql.mutation()`}
266
+ */
267
+ mutation: <Query_1 extends Record<string, any>, Variables_1 extends GraphQLVariables = GraphQLVariables>(operationName: GraphQLHandlerNameSelector | TypedDocumentNode<Query_1, Variables_1>, resolver: ResponseResolver<GraphQLRequest<Variables_1>, GraphQLContext<Query_1>, any>) => GraphQLHandler<GraphQLRequest<Variables_1>>;
268
+ };
269
+ declare function createGraphQLLink(url: Path): typeof standardGraphQLHandlers;
270
+ declare const graphql: {
271
+ link: typeof createGraphQLLink;
272
+ /**
273
+ * Captures any GraphQL operation, regardless of its name, under the current scope.
274
+ * @example
275
+ * graphql.operation((req, res, ctx) => {
276
+ * return res(ctx.data({ name: 'John' }))
277
+ * })
278
+ * @see {@link https://mswjs.io/docs/api/graphql/operation `graphql.operation()`}
279
+ */
280
+ operation: <Query extends Record<string, any>, Variables extends GraphQLVariables = GraphQLVariables>(resolver: ResponseResolver<GraphQLRequest<Variables>, GraphQLContext<Query>, any>) => GraphQLHandler<GraphQLRequest<Variables>>;
281
+ /**
282
+ * Captures a GraphQL query by a given name.
283
+ * @example
284
+ * graphql.query('GetUser', (req, res, ctx) => {
285
+ * return res(ctx.data({ user: { name: 'John' } }))
286
+ * })
287
+ * @see {@link https://mswjs.io/docs/api/graphql/query `graphql.query()`}
288
+ */
289
+ query: <Query_1 extends Record<string, any>, Variables_1 extends GraphQLVariables = GraphQLVariables>(operationName: GraphQLHandlerNameSelector | TypedDocumentNode<Query_1, Variables_1>, resolver: ResponseResolver<GraphQLRequest<Variables_1>, GraphQLContext<Query_1>, any>) => GraphQLHandler<GraphQLRequest<Variables_1>>;
290
+ /**
291
+ * Captures a GraphQL mutation by a given name.
292
+ * @example
293
+ * graphql.mutation('SavePost', (req, res, ctx) => {
294
+ * return res(ctx.data({ post: { id: 'abc-123' } }))
295
+ * })
296
+ * @see {@link https://mswjs.io/docs/api/graphql/mutation `graphql.mutation()`}
297
+ */
298
+ mutation: <Query_1 extends Record<string, any>, Variables_1 extends GraphQLVariables = GraphQLVariables>(operationName: GraphQLHandlerNameSelector | TypedDocumentNode<Query_1, Variables_1>, resolver: ResponseResolver<GraphQLRequest<Variables_1>, GraphQLContext<Query_1>, any>) => GraphQLHandler<GraphQLRequest<Variables_1>>;
299
+ };
300
+
301
+ declare type ArityOneFunction = (arg: any) => any;
302
+ declare type LengthOfTuple<Tuple extends any[]> = Tuple extends {
303
+ length: infer L;
304
+ } ? L : never;
305
+ declare type DropFirstInTuple<Tuple extends any[]> = ((...args: Tuple) => any) extends (arg: any, ...rest: infer LastArg) => any ? LastArg : Tuple;
306
+ declare type LastInTuple<Tuple extends any[]> = Tuple[LengthOfTuple<DropFirstInTuple<Tuple>>];
307
+ declare type FirstFnParameterType<Functions extends ArityOneFunction[]> = Parameters<LastInTuple<Functions>>[any];
308
+ declare type LastFnParameterType<Functions extends ArityOneFunction[]> = ReturnType<Functions[0]>;
309
+ /**
310
+ * Composes a given list of functions into a new function that
311
+ * executes from right to left.
312
+ */
313
+ declare function compose<Functions extends ArityOneFunction[], LeftReturnType extends FirstFnParameterType<Functions>, RightReturnType extends LastFnParameterType<Functions>>(...fns: Functions): (...args: [LeftReturnType] extends [never] ? never[] : [LeftReturnType]) => RightReturnType;
314
+
315
+ interface HandleRequestOptions<ResponseType> {
316
+ /**
317
+ * Options for the response resolution process.
318
+ */
319
+ resolutionContext?: {
320
+ baseUrl?: string;
321
+ };
322
+ /**
323
+ * Transforms a `MockedResponse` instance returned from a handler
324
+ * to a response instance supported by the lower tooling (i.e. interceptors).
325
+ */
326
+ transformResponse?(response: MockedResponse<string>): ResponseType;
327
+ /**
328
+ * Invoked whenever a request is performed as-is.
329
+ */
330
+ onPassthroughResponse?(request: MockedRequest): void;
331
+ /**
332
+ * Invoked when the mocked response is ready to be sent.
333
+ */
334
+ onMockedResponse?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
335
+ /**
336
+ * Invoked when the mocked response is sent.
337
+ * Respects the response delay duration.
338
+ */
339
+ onMockedResponseSent?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
340
+ }
341
+ 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>;
342
+
343
+ /**
344
+ * Converts a given isomorphic request to a `MockedRequest` instance.
345
+ */
346
+ declare function parseIsomorphicRequest(request: IsomorphicRequest): MockedRequest;
347
+
348
+ /**
349
+ * Removes query parameters and hashes from a given URL string.
350
+ */
351
+ declare function cleanUrl(path: string): string;
352
+
353
+ export { GraphQLContext, GraphQLHandler, GraphQLJsonRequestBody, GraphQLRequest, GraphQLRequestBody, GraphQLVariables, HandleRequestOptions, Match, ParsedGraphQLRequest, ParsedRestRequest, Path, PathParams, RESTMethods, RequestQuery, RestContext, RestHandler, RestRequest, cleanUrl, compose, index as context, graphql, graphqlContext, handleRequest, matchRequestUrl, parseIsomorphicRequest, rest, restContext, setupWorker };