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.
Files changed (58) hide show
  1. package/lib/core/{GraphQLHandler-SHlRCcy4.d.ts → GraphQLHandler-JB4bsrLF.d.ts} +4 -2
  2. package/lib/core/{GraphQLHandler-zlmUDnN6.d.mts → GraphQLHandler-mT-MmgeB.d.mts} +4 -2
  3. package/lib/core/HttpResponse.d.mts +1 -1
  4. package/lib/core/HttpResponse.d.ts +1 -1
  5. package/lib/core/{RequestHandler-vxZdj6Tw.d.mts → RequestHandler-YiqamK0M.d.mts} +3 -3
  6. package/lib/core/{RequestHandler-rBDJQrEf.d.ts → RequestHandler-rmY-HeFN.d.ts} +3 -3
  7. package/lib/core/SetupApi.d.mts +1 -1
  8. package/lib/core/SetupApi.d.ts +1 -1
  9. package/lib/core/graphql.d.mts +11 -9
  10. package/lib/core/graphql.d.ts +11 -9
  11. package/lib/core/graphql.js.map +1 -1
  12. package/lib/core/graphql.mjs.map +1 -1
  13. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  14. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  15. package/lib/core/handlers/GraphQLHandler.js +5 -4
  16. package/lib/core/handlers/GraphQLHandler.js.map +1 -1
  17. package/lib/core/handlers/GraphQLHandler.mjs +5 -4
  18. package/lib/core/handlers/GraphQLHandler.mjs.map +1 -1
  19. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  20. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  21. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  22. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  23. package/lib/core/handlers/RequestHandler.js.map +1 -1
  24. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  25. package/lib/core/http.d.mts +13 -11
  26. package/lib/core/http.d.ts +13 -11
  27. package/lib/core/http.js.map +1 -1
  28. package/lib/core/http.mjs.map +1 -1
  29. package/lib/core/index.d.mts +4 -4
  30. package/lib/core/index.d.ts +4 -4
  31. package/lib/core/index.js.map +1 -1
  32. package/lib/core/index.mjs.map +1 -1
  33. package/lib/core/sharedOptions.d.mts +1 -1
  34. package/lib/core/sharedOptions.d.ts +1 -1
  35. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  36. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  37. package/lib/core/utils/getResponse.d.mts +1 -1
  38. package/lib/core/utils/getResponse.d.ts +1 -1
  39. package/lib/core/utils/handleRequest.d.mts +1 -1
  40. package/lib/core/utils/handleRequest.d.ts +1 -1
  41. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  42. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  43. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  44. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  45. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  46. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  47. package/lib/core/utils/request/onUnhandledRequest.d.mts +1 -1
  48. package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
  49. package/lib/iife/index.js +5 -4
  50. package/lib/iife/index.js.map +1 -1
  51. package/lib/mockServiceWorker.js +1 -1
  52. package/package.json +1 -1
  53. package/src/core/graphql.ts +24 -16
  54. package/src/core/handlers/GraphQLHandler.test.ts +15 -0
  55. package/src/core/handlers/GraphQLHandler.ts +8 -5
  56. package/src/core/handlers/RequestHandler.ts +14 -9
  57. package/src/core/http.ts +27 -14
  58. package/src/core/index.ts +3 -0
@@ -2,7 +2,7 @@
2
2
  /* tslint:disable */
3
3
 
4
4
  /**
5
- * Mock Service Worker (2.0.13).
5
+ * Mock Service Worker (2.0.14).
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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "msw",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "description": "Seamless REST/GraphQL API mocking library for browser and Node.js.",
5
5
  "main": "./lib/core/index.js",
6
6
  "module": "./lib/core/index.mjs",
@@ -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
- BodyType extends DefaultBodyType = undefined,
39
+ ResponseBodyType extends DefaultBodyType = undefined,
40
40
  > =
41
- | ([BodyType] extends [undefined] ? Response : StrictResponse<BodyType>)
41
+ | ([ResponseBodyType] extends [undefined]
42
+ ? Response
43
+ : StrictResponse<ResponseBodyType>)
42
44
  | undefined
43
45
  | void
44
46
 
45
47
  export type MaybeAsyncResponseResolverReturnType<
46
- BodyType extends DefaultBodyType,
47
- > = MaybePromise<ResponseResolverReturnType<BodyType>>
48
+ ResponseBodyType extends DefaultBodyType,
49
+ > = MaybePromise<ResponseResolverReturnType<ResponseBodyType>>
48
50
 
49
- export type AsyncResponseResolverReturnType<BodyType extends DefaultBodyType> =
50
- | MaybeAsyncResponseResolverReturnType<BodyType>
51
+ export type AsyncResponseResolverReturnType<
52
+ ResponseBodyType extends DefaultBodyType,
53
+ > = MaybePromise<
54
+ | ResponseResolverReturnType<ResponseBodyType>
51
55
  | Generator<
52
- MaybeAsyncResponseResolverReturnType<BodyType>,
53
- MaybeAsyncResponseResolverReturnType<BodyType>,
54
- MaybeAsyncResponseResolverReturnType<BodyType>
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'