msw 2.0.13 → 2.0.14
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/core/{GraphQLHandler-SHlRCcy4.d.ts → GraphQLHandler-JB4bsrLF.d.ts} +4 -2
- package/lib/core/{GraphQLHandler-zlmUDnN6.d.mts → GraphQLHandler-mT-MmgeB.d.mts} +4 -2
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/{RequestHandler-vxZdj6Tw.d.mts → RequestHandler-YiqamK0M.d.mts} +3 -3
- package/lib/core/{RequestHandler-rBDJQrEf.d.ts → RequestHandler-rmY-HeFN.d.ts} +3 -3
- package/lib/core/SetupApi.d.mts +1 -1
- package/lib/core/SetupApi.d.ts +1 -1
- package/lib/core/graphql.d.mts +11 -9
- package/lib/core/graphql.d.ts +11 -9
- package/lib/core/graphql.js.map +1 -1
- package/lib/core/graphql.mjs.map +1 -1
- package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
- package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
- package/lib/core/handlers/GraphQLHandler.js +5 -4
- package/lib/core/handlers/GraphQLHandler.js.map +1 -1
- package/lib/core/handlers/GraphQLHandler.mjs +5 -4
- package/lib/core/handlers/GraphQLHandler.mjs.map +1 -1
- package/lib/core/handlers/HttpHandler.d.mts +1 -1
- package/lib/core/handlers/HttpHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.d.mts +1 -1
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.js.map +1 -1
- package/lib/core/handlers/RequestHandler.mjs.map +1 -1
- package/lib/core/http.d.mts +13 -11
- package/lib/core/http.d.ts +13 -11
- package/lib/core/http.js.map +1 -1
- package/lib/core/http.mjs.map +1 -1
- package/lib/core/index.d.mts +4 -4
- package/lib/core/index.d.ts +4 -4
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/sharedOptions.d.mts +1 -1
- package/lib/core/sharedOptions.d.ts +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
- package/lib/core/utils/getResponse.d.mts +1 -1
- package/lib/core/utils/getResponse.d.ts +1 -1
- package/lib/core/utils/handleRequest.d.mts +1 -1
- package/lib/core/utils/handleRequest.d.ts +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
- package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/core/utils/request/onUnhandledRequest.d.mts +1 -1
- package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
- package/lib/iife/index.js +5 -4
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/package.json +1 -1
- package/src/core/graphql.ts +24 -16
- package/src/core/handlers/GraphQLHandler.test.ts +15 -0
- package/src/core/handlers/GraphQLHandler.ts +8 -5
- package/src/core/handlers/RequestHandler.ts +14 -9
- package/src/core/http.ts +27 -14
- package/src/core/index.ts +3 -0
package/lib/mockServiceWorker.js
CHANGED
package/package.json
CHANGED
package/src/core/graphql.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
GraphQLHandlerNameSelector,
|
|
11
11
|
GraphQLResolverExtras,
|
|
12
12
|
GraphQLResponseBody,
|
|
13
|
+
GraphQLQuery,
|
|
13
14
|
} from './handlers/GraphQLHandler'
|
|
14
15
|
import type { Path } from './utils/matching/matchRequestUrl'
|
|
15
16
|
|
|
@@ -22,25 +23,32 @@ export interface TypedDocumentNode<
|
|
|
22
23
|
__variablesType?: Variables
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
export type GraphQLRequestHandler = <
|
|
27
|
+
Query extends GraphQLQuery = GraphQLQuery,
|
|
28
|
+
Variables extends GraphQLVariables = GraphQLVariables,
|
|
29
|
+
>(
|
|
30
|
+
operationName:
|
|
31
|
+
| GraphQLHandlerNameSelector
|
|
32
|
+
| DocumentNode
|
|
33
|
+
| TypedDocumentNode<Query, Variables>,
|
|
34
|
+
resolver: GraphQLResponseResolver<Query, Variables>,
|
|
35
|
+
options?: RequestHandlerOptions,
|
|
36
|
+
) => GraphQLHandler
|
|
37
|
+
|
|
38
|
+
export type GraphQLResponseResolver<
|
|
39
|
+
Query extends GraphQLQuery = GraphQLQuery,
|
|
40
|
+
Variables extends GraphQLVariables = GraphQLVariables,
|
|
41
|
+
> = ResponseResolver<
|
|
42
|
+
GraphQLResolverExtras<Variables>,
|
|
43
|
+
null,
|
|
44
|
+
GraphQLResponseBody<Query>
|
|
45
|
+
>
|
|
46
|
+
|
|
25
47
|
function createScopedGraphQLHandler(
|
|
26
48
|
operationType: ExpectedOperationTypeNode,
|
|
27
49
|
url: Path,
|
|
28
|
-
) {
|
|
29
|
-
return
|
|
30
|
-
Query extends Record<string, any>,
|
|
31
|
-
Variables extends GraphQLVariables = GraphQLVariables,
|
|
32
|
-
>(
|
|
33
|
-
operationName:
|
|
34
|
-
| GraphQLHandlerNameSelector
|
|
35
|
-
| DocumentNode
|
|
36
|
-
| TypedDocumentNode<Query, Variables>,
|
|
37
|
-
resolver: ResponseResolver<
|
|
38
|
-
GraphQLResolverExtras<Variables>,
|
|
39
|
-
null,
|
|
40
|
-
GraphQLResponseBody<Query>
|
|
41
|
-
>,
|
|
42
|
-
options: RequestHandlerOptions = {},
|
|
43
|
-
) => {
|
|
50
|
+
): GraphQLRequestHandler {
|
|
51
|
+
return (operationName, resolver, options = {}) => {
|
|
44
52
|
return new GraphQLHandler(
|
|
45
53
|
operationType,
|
|
46
54
|
operationName,
|
|
@@ -160,6 +160,7 @@ describe('parse', () => {
|
|
|
160
160
|
})
|
|
161
161
|
|
|
162
162
|
expect(await handler.parse({ request })).toEqual({
|
|
163
|
+
cookies: {},
|
|
163
164
|
match: {
|
|
164
165
|
matches: true,
|
|
165
166
|
params: {
|
|
@@ -188,6 +189,7 @@ describe('parse', () => {
|
|
|
188
189
|
})
|
|
189
190
|
|
|
190
191
|
expect(await handler.parse({ request })).toEqual({
|
|
192
|
+
cookies: {},
|
|
191
193
|
match: {
|
|
192
194
|
matches: true,
|
|
193
195
|
params: {
|
|
@@ -215,6 +217,7 @@ describe('parse', () => {
|
|
|
215
217
|
})
|
|
216
218
|
|
|
217
219
|
expect(await handler.parse({ request })).toEqual({
|
|
220
|
+
cookies: {},
|
|
218
221
|
match: {
|
|
219
222
|
matches: true,
|
|
220
223
|
params: {
|
|
@@ -243,6 +246,7 @@ describe('parse', () => {
|
|
|
243
246
|
})
|
|
244
247
|
|
|
245
248
|
expect(await handler.parse({ request })).toEqual({
|
|
249
|
+
cookies: {},
|
|
246
250
|
match: {
|
|
247
251
|
matches: true,
|
|
248
252
|
params: {
|
|
@@ -272,6 +276,7 @@ describe('parse', () => {
|
|
|
272
276
|
})
|
|
273
277
|
|
|
274
278
|
expect(await handler.parse({ request })).toEqual({
|
|
279
|
+
cookies: {},
|
|
275
280
|
match: {
|
|
276
281
|
matches: true,
|
|
277
282
|
params: {
|
|
@@ -300,6 +305,7 @@ describe('parse', () => {
|
|
|
300
305
|
})
|
|
301
306
|
|
|
302
307
|
expect(await handler.parse({ request })).toEqual({
|
|
308
|
+
cookies: {},
|
|
303
309
|
match: {
|
|
304
310
|
matches: true,
|
|
305
311
|
params: {
|
|
@@ -327,6 +333,7 @@ describe('parse', () => {
|
|
|
327
333
|
})
|
|
328
334
|
|
|
329
335
|
expect(await handler.parse({ request })).toEqual({
|
|
336
|
+
cookies: {},
|
|
330
337
|
match: {
|
|
331
338
|
matches: true,
|
|
332
339
|
params: {
|
|
@@ -355,6 +362,7 @@ describe('parse', () => {
|
|
|
355
362
|
})
|
|
356
363
|
|
|
357
364
|
expect(await handler.parse({ request })).toEqual({
|
|
365
|
+
cookies: {},
|
|
358
366
|
match: {
|
|
359
367
|
matches: true,
|
|
360
368
|
params: {
|
|
@@ -393,6 +401,7 @@ describe('parse', () => {
|
|
|
393
401
|
),
|
|
394
402
|
}),
|
|
395
403
|
).resolves.toEqual({
|
|
404
|
+
cookies: {},
|
|
396
405
|
match: {
|
|
397
406
|
matches: true,
|
|
398
407
|
params: {},
|
|
@@ -418,6 +427,7 @@ describe('parse', () => {
|
|
|
418
427
|
),
|
|
419
428
|
}),
|
|
420
429
|
).resolves.toEqual({
|
|
430
|
+
cookies: {},
|
|
421
431
|
match: {
|
|
422
432
|
matches: true,
|
|
423
433
|
params: {},
|
|
@@ -452,6 +462,7 @@ describe('parse', () => {
|
|
|
452
462
|
),
|
|
453
463
|
}),
|
|
454
464
|
).resolves.toEqual({
|
|
465
|
+
cookies: {},
|
|
455
466
|
match: {
|
|
456
467
|
matches: false,
|
|
457
468
|
params: {},
|
|
@@ -471,6 +482,7 @@ describe('parse', () => {
|
|
|
471
482
|
),
|
|
472
483
|
}),
|
|
473
484
|
).resolves.toEqual({
|
|
485
|
+
cookies: {},
|
|
474
486
|
match: {
|
|
475
487
|
matches: false,
|
|
476
488
|
params: {},
|
|
@@ -499,6 +511,7 @@ describe('parse', () => {
|
|
|
499
511
|
),
|
|
500
512
|
}),
|
|
501
513
|
).resolves.toEqual({
|
|
514
|
+
cookies: {},
|
|
502
515
|
match: {
|
|
503
516
|
matches: false,
|
|
504
517
|
params: {},
|
|
@@ -518,6 +531,7 @@ describe('parse', () => {
|
|
|
518
531
|
),
|
|
519
532
|
}),
|
|
520
533
|
).resolves.toEqual({
|
|
534
|
+
cookies: {},
|
|
521
535
|
match: {
|
|
522
536
|
matches: false,
|
|
523
537
|
params: {},
|
|
@@ -726,6 +740,7 @@ describe('run', () => {
|
|
|
726
740
|
|
|
727
741
|
expect(result!.handler).toEqual(handler)
|
|
728
742
|
expect(result!.parsedResult).toEqual({
|
|
743
|
+
cookies: {},
|
|
729
744
|
match: {
|
|
730
745
|
matches: true,
|
|
731
746
|
params: {
|
|
@@ -24,6 +24,7 @@ import { getAllRequestCookies } from '../utils/request/getRequestCookies'
|
|
|
24
24
|
export type ExpectedOperationTypeNode = OperationTypeNode | 'all'
|
|
25
25
|
export type GraphQLHandlerNameSelector = DocumentNode | RegExp | string
|
|
26
26
|
|
|
27
|
+
export type GraphQLQuery = Record<string, any>
|
|
27
28
|
export type GraphQLVariables = Record<string, any>
|
|
28
29
|
|
|
29
30
|
export interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {
|
|
@@ -33,6 +34,7 @@ export interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {
|
|
|
33
34
|
|
|
34
35
|
export type GraphQLRequestParsedResult = {
|
|
35
36
|
match: Match
|
|
37
|
+
cookies: Record<string, string>
|
|
36
38
|
} & (
|
|
37
39
|
| ParsedGraphQLRequest<GraphQLVariables>
|
|
38
40
|
/**
|
|
@@ -165,8 +167,10 @@ export class GraphQLHandler extends RequestHandler<
|
|
|
165
167
|
* need to parse it since there's no case where we would handle this
|
|
166
168
|
*/
|
|
167
169
|
const match = matchRequestUrl(new URL(args.request.url), this.endpoint)
|
|
170
|
+
const cookies = getAllRequestCookies(args.request)
|
|
171
|
+
|
|
168
172
|
if (!match.matches) {
|
|
169
|
-
return { match }
|
|
173
|
+
return { match, cookies }
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
const parsedResult = await this.parseGraphQLRequestOrGetFromCache(
|
|
@@ -174,11 +178,12 @@ export class GraphQLHandler extends RequestHandler<
|
|
|
174
178
|
)
|
|
175
179
|
|
|
176
180
|
if (typeof parsedResult === 'undefined') {
|
|
177
|
-
return { match }
|
|
181
|
+
return { match, cookies }
|
|
178
182
|
}
|
|
179
183
|
|
|
180
184
|
return {
|
|
181
185
|
match,
|
|
186
|
+
cookies,
|
|
182
187
|
query: parsedResult.query,
|
|
183
188
|
operationType: parsedResult.operationType,
|
|
184
189
|
operationName: parsedResult.operationName,
|
|
@@ -224,13 +229,11 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
224
229
|
request: Request
|
|
225
230
|
parsedResult: GraphQLRequestParsedResult
|
|
226
231
|
}) {
|
|
227
|
-
const cookies = getAllRequestCookies(args.request)
|
|
228
|
-
|
|
229
232
|
return {
|
|
230
233
|
query: args.parsedResult.query || '',
|
|
231
234
|
operationName: args.parsedResult.operationName || '',
|
|
232
235
|
variables: args.parsedResult.variables || {},
|
|
233
|
-
cookies,
|
|
236
|
+
cookies: args.parsedResult.cookies,
|
|
234
237
|
}
|
|
235
238
|
}
|
|
236
239
|
|
|
@@ -36,23 +36,28 @@ export interface RequestHandlerInternalInfo {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export type ResponseResolverReturnType<
|
|
39
|
-
|
|
39
|
+
ResponseBodyType extends DefaultBodyType = undefined,
|
|
40
40
|
> =
|
|
41
|
-
| ([
|
|
41
|
+
| ([ResponseBodyType] extends [undefined]
|
|
42
|
+
? Response
|
|
43
|
+
: StrictResponse<ResponseBodyType>)
|
|
42
44
|
| undefined
|
|
43
45
|
| void
|
|
44
46
|
|
|
45
47
|
export type MaybeAsyncResponseResolverReturnType<
|
|
46
|
-
|
|
47
|
-
> = MaybePromise<ResponseResolverReturnType<
|
|
48
|
+
ResponseBodyType extends DefaultBodyType,
|
|
49
|
+
> = MaybePromise<ResponseResolverReturnType<ResponseBodyType>>
|
|
48
50
|
|
|
49
|
-
export type AsyncResponseResolverReturnType<
|
|
50
|
-
|
|
51
|
+
export type AsyncResponseResolverReturnType<
|
|
52
|
+
ResponseBodyType extends DefaultBodyType,
|
|
53
|
+
> = MaybePromise<
|
|
54
|
+
| ResponseResolverReturnType<ResponseBodyType>
|
|
51
55
|
| Generator<
|
|
52
|
-
MaybeAsyncResponseResolverReturnType<
|
|
53
|
-
MaybeAsyncResponseResolverReturnType<
|
|
54
|
-
MaybeAsyncResponseResolverReturnType<
|
|
56
|
+
MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
|
|
57
|
+
MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
|
|
58
|
+
MaybeAsyncResponseResolverReturnType<ResponseBodyType>
|
|
55
59
|
>
|
|
60
|
+
>
|
|
56
61
|
|
|
57
62
|
export type ResponseResolverInfo<
|
|
58
63
|
ResolverExtraInfo extends Record<string, unknown>,
|
package/src/core/http.ts
CHANGED
|
@@ -10,22 +10,35 @@ import {
|
|
|
10
10
|
} from './handlers/HttpHandler'
|
|
11
11
|
import type { Path, PathParams } from './utils/matching/matchRequestUrl'
|
|
12
12
|
|
|
13
|
+
export type HttpRequestHandler = <
|
|
14
|
+
Params extends PathParams<keyof Params> = PathParams,
|
|
15
|
+
RequestBodyType extends DefaultBodyType = DefaultBodyType,
|
|
16
|
+
// Response body type MUST be undefined by default.
|
|
17
|
+
// This is how we can distinguish between a handler that
|
|
18
|
+
// returns plain "Response" and the one returning "HttpResponse"
|
|
19
|
+
// to enforce a stricter response body type.
|
|
20
|
+
ResponseBodyType extends DefaultBodyType = undefined,
|
|
21
|
+
RequestPath extends Path = Path,
|
|
22
|
+
>(
|
|
23
|
+
path: RequestPath,
|
|
24
|
+
resolver: HttpResponseResolver<Params, RequestBodyType, ResponseBodyType>,
|
|
25
|
+
options?: RequestHandlerOptions,
|
|
26
|
+
) => HttpHandler
|
|
27
|
+
|
|
28
|
+
export type HttpResponseResolver<
|
|
29
|
+
Params extends PathParams<keyof Params> = PathParams,
|
|
30
|
+
RequestBodyType extends DefaultBodyType = DefaultBodyType,
|
|
31
|
+
ResponseBodyType extends DefaultBodyType = DefaultBodyType,
|
|
32
|
+
> = ResponseResolver<
|
|
33
|
+
HttpRequestResolverExtras<Params>,
|
|
34
|
+
RequestBodyType,
|
|
35
|
+
ResponseBodyType
|
|
36
|
+
>
|
|
37
|
+
|
|
13
38
|
function createHttpHandler<Method extends HttpMethods | RegExp>(
|
|
14
39
|
method: Method,
|
|
15
|
-
) {
|
|
16
|
-
return
|
|
17
|
-
Params extends PathParams<keyof Params> = PathParams,
|
|
18
|
-
RequestBodyType extends DefaultBodyType = DefaultBodyType,
|
|
19
|
-
ResponseBodyType extends DefaultBodyType = undefined,
|
|
20
|
-
>(
|
|
21
|
-
path: Path,
|
|
22
|
-
resolver: ResponseResolver<
|
|
23
|
-
HttpRequestResolverExtras<Params>,
|
|
24
|
-
RequestBodyType,
|
|
25
|
-
ResponseBodyType
|
|
26
|
-
>,
|
|
27
|
-
options: RequestHandlerOptions = {},
|
|
28
|
-
) => {
|
|
40
|
+
): HttpRequestHandler {
|
|
41
|
+
return (path, resolver, options = {}) => {
|
|
29
42
|
return new HttpHandler(method, path, resolver, options)
|
|
30
43
|
}
|
|
31
44
|
}
|
package/src/core/index.ts
CHANGED
|
@@ -34,12 +34,15 @@ export type {
|
|
|
34
34
|
RequestQuery,
|
|
35
35
|
HttpRequestParsedResult,
|
|
36
36
|
} from './handlers/HttpHandler'
|
|
37
|
+
export type { HttpResponseResolver } from './http'
|
|
37
38
|
|
|
38
39
|
export type {
|
|
40
|
+
GraphQLQuery,
|
|
39
41
|
GraphQLVariables,
|
|
40
42
|
GraphQLRequestBody,
|
|
41
43
|
GraphQLJsonRequestBody,
|
|
42
44
|
} from './handlers/GraphQLHandler'
|
|
45
|
+
export type { GraphQLResponseResolver } from './graphql'
|
|
43
46
|
|
|
44
47
|
export type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'
|
|
45
48
|
export type { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'
|