msw 0.43.1 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,10 +1,10 @@
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';
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-17949ef9.js';
2
+ export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, H as MockedRequestInit, j as MockedResponse, z as RequestCache, E as RequestDestination, b as RequestHandler, B as RequestMode, F as RequestPriority, C as RequestRedirect, G as RequestReferrerPolicy, 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-17949ef9.js';
3
3
  import * as cookieUtils from 'cookie';
4
4
  import { GraphQLError, OperationTypeNode, DocumentNode } from 'graphql';
5
5
  import { StrictEventEmitter } from 'strict-event-emitter';
6
- import { IsomorphicRequest } from '@mswjs/interceptors';
7
6
  import 'type-fest';
7
+ import '@mswjs/interceptors';
8
8
  import 'headers-polyfill';
9
9
 
10
10
  declare type Path = string | RegExp;
@@ -155,10 +155,11 @@ declare const restContext: RestContext;
155
155
  declare type RequestQuery = {
156
156
  [queryName: string]: string;
157
157
  };
158
- interface RestRequest<BodyType extends DefaultBodyType = DefaultBodyType, ParamsType extends PathParams = PathParams> extends MockedRequest<BodyType> {
159
- params: ParamsType;
160
- }
161
158
  declare type ParsedRestRequest = Match;
159
+ declare class RestRequest<RequestBody extends DefaultBodyType = DefaultBodyType, RequestParams extends PathParams = PathParams> extends MockedRequest<RequestBody> {
160
+ readonly params: RequestParams;
161
+ constructor(request: MockedRequest<RequestBody>, params: RequestParams);
162
+ }
162
163
  /**
163
164
  * Request handler for REST API requests.
164
165
  * Provides request matching based on method and URL.
@@ -225,8 +226,9 @@ interface GraphQLJsonRequestBody<Variables extends GraphQLVariables> {
225
226
  query: string;
226
227
  variables?: Variables;
227
228
  }
228
- interface GraphQLRequest<Variables extends GraphQLVariables> extends MockedRequest<GraphQLRequestBody<Variables>> {
229
- variables: Variables;
229
+ declare class GraphQLRequest<Variables extends GraphQLVariables> extends MockedRequest<GraphQLRequestBody<Variables>> {
230
+ readonly variables: Variables;
231
+ constructor(request: MockedRequest, variables: Variables);
230
232
  }
231
233
  declare class GraphQLHandler<Request extends GraphQLRequest<any> = GraphQLRequest<any>> extends RequestHandler<GraphQLHandlerInfo, Request, ParsedGraphQLRequest | null, GraphQLRequest<any>> {
232
234
  private endpoint;
@@ -349,14 +351,9 @@ interface HandleRequestOptions<ResponseType> {
349
351
  }
350
352
  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>;
351
353
 
352
- /**
353
- * Converts a given isomorphic request to a `MockedRequest` instance.
354
- */
355
- declare function parseIsomorphicRequest(request: IsomorphicRequest): MockedRequest;
356
-
357
354
  /**
358
355
  * Removes query parameters and hashes from a given URL string.
359
356
  */
360
357
  declare function cleanUrl(path: string): string;
361
358
 
362
- 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 };
359
+ 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, rest, restContext, setupWorker };
package/lib/index.js CHANGED
@@ -52,6 +52,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
52
52
  var src_exports = {};
53
53
  __export(src_exports, {
54
54
  GraphQLHandler: () => GraphQLHandler,
55
+ MockedRequest: () => MockedRequest,
55
56
  RESTMethods: () => RESTMethods,
56
57
  RequestHandler: () => RequestHandler,
57
58
  RestHandler: () => RestHandler,
@@ -65,7 +66,6 @@ __export(src_exports, {
65
66
  graphqlContext: () => graphqlContext,
66
67
  handleRequest: () => handleRequest,
67
68
  matchRequestUrl: () => matchRequestUrl,
68
- parseIsomorphicRequest: () => parseIsomorphicRequest,
69
69
  response: () => response,
70
70
  rest: () => rest,
71
71
  restContext: () => restContext,
@@ -446,166 +446,15 @@ var NetworkError = class extends Error {
446
446
  };
447
447
 
448
448
  // src/utils/request/parseWorkerRequest.ts
449
- var import_headers_polyfill6 = require("headers-polyfill");
450
-
451
- // src/handlers/RequestHandler.ts
449
+ var import_interceptors2 = require("@mswjs/interceptors");
452
450
  var import_headers_polyfill4 = require("headers-polyfill");
453
451
 
454
- // src/response.ts
455
- var import_headers_polyfill3 = require("headers-polyfill");
456
-
457
- // src/utils/internal/compose.ts
458
- function compose(...fns) {
459
- return (...args) => {
460
- return fns.reduceRight((leftFn, rightFn) => {
461
- return leftFn instanceof Promise ? Promise.resolve(leftFn).then(rightFn) : rightFn(leftFn);
462
- }, args[0]);
463
- };
464
- }
465
-
466
- // src/response.ts
467
- var defaultResponse = {
468
- status: 200,
469
- statusText: "OK",
470
- body: null,
471
- delay: 0,
472
- once: false,
473
- passthrough: false
474
- };
475
- var defaultResponseTransformers = [];
476
- function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
477
- return async (...transformers) => {
478
- const initialResponse = Object.assign({}, defaultResponse, {
479
- headers: new import_headers_polyfill3.Headers({
480
- "x-powered-by": "msw"
481
- })
482
- }, responseOverrides);
483
- const resolvedTransformers = [
484
- ...defaultTransformers,
485
- ...transformers
486
- ].filter(Boolean);
487
- const resolvedResponse = resolvedTransformers.length > 0 ? compose(...resolvedTransformers)(initialResponse) : initialResponse;
488
- return resolvedResponse;
489
- };
490
- }
491
- var response = Object.assign(createResponseComposition(), {
492
- once: createResponseComposition({ once: true }),
493
- networkError(message) {
494
- throw new NetworkError(message);
495
- }
496
- });
497
-
498
- // src/utils/internal/getCallFrame.ts
499
- var SOURCE_FRAME = /\/msw\/src\/(.+)/;
500
- var BUILD_FRAME = /(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/;
501
- function getCallFrame(error2) {
502
- const stack = error2.stack;
503
- if (!stack) {
504
- return;
505
- }
506
- const frames = stack.split("\n").slice(1);
507
- const declarationFrame = frames.find((frame) => {
508
- return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame));
509
- });
510
- if (!declarationFrame) {
511
- return;
512
- }
513
- const declarationPath = declarationFrame.replace(/\s*at [^()]*\(([^)]+)\)/, "$1").replace(/^@/, "");
514
- return declarationPath;
515
- }
516
-
517
- // src/utils/internal/isIterable.ts
518
- function isIterable(fn) {
519
- if (!fn) {
520
- return false;
521
- }
522
- return typeof fn[Symbol.iterator] == "function";
523
- }
524
-
525
- // src/handlers/RequestHandler.ts
526
- var defaultContext = {
527
- status,
528
- set,
529
- delay,
530
- fetch
531
- };
532
- var RequestHandler = class {
533
- constructor(options) {
534
- this.shouldSkip = false;
535
- this.ctx = options.ctx || defaultContext;
536
- this.resolver = options.resolver;
537
- const callFrame = getCallFrame(new Error());
538
- this.info = __spreadProps(__spreadValues({}, options.info), {
539
- callFrame
540
- });
541
- }
542
- parse(_request, _resolutionContext) {
543
- return null;
544
- }
545
- test(request, resolutionContext) {
546
- return this.predicate(request, this.parse(request, resolutionContext), resolutionContext);
547
- }
548
- getPublicRequest(request, _parsedResult) {
549
- return request;
550
- }
551
- markAsSkipped(shouldSkip = true) {
552
- this.shouldSkip = shouldSkip;
553
- }
554
- async run(request, resolutionContext) {
555
- if (this.shouldSkip) {
556
- return null;
557
- }
558
- const parsedResult = this.parse(request, resolutionContext);
559
- const shouldIntercept = this.predicate(request, parsedResult, resolutionContext);
560
- if (!shouldIntercept) {
561
- return null;
562
- }
563
- const publicRequest = this.getPublicRequest(request, parsedResult);
564
- const executeResolver = this.wrapResolver(this.resolver);
565
- const mockedResponse = await executeResolver(publicRequest, response, this.ctx);
566
- return this.createExecutionResult(parsedResult, publicRequest, mockedResponse);
567
- }
568
- wrapResolver(resolver) {
569
- return async (req, res, ctx) => {
570
- const result = this.resolverGenerator || await resolver(req, res, ctx);
571
- if (isIterable(result)) {
572
- const { value, done } = result[Symbol.iterator]().next();
573
- const nextResponse = await value;
574
- if (!nextResponse && done) {
575
- return this.resolverGeneratorResult;
576
- }
577
- if (!this.resolverGenerator) {
578
- this.resolverGenerator = result;
579
- }
580
- this.resolverGeneratorResult = nextResponse;
581
- return nextResponse;
582
- }
583
- return result;
584
- };
585
- }
586
- createExecutionResult(parsedResult, request, response2) {
587
- return {
588
- handler: this,
589
- parsedResult: parsedResult || null,
590
- request,
591
- response: response2 || null
592
- };
593
- }
594
- };
595
- function passthrough() {
596
- return {
597
- status: 101,
598
- statusText: "Continue",
599
- headers: new import_headers_polyfill4.Headers(),
600
- body: null,
601
- passthrough: true,
602
- once: false
603
- };
604
- }
605
-
606
- // src/utils/request/setRequestCookies.ts
452
+ // src/utils/request/MockedRequest.ts
607
453
  var cookieUtils3 = __toESM(require("cookie"));
608
454
  var import_cookies = require("@mswjs/cookies");
455
+ var import_interceptors = require("@mswjs/interceptors");
456
+ var import_bufferUtils = require("@mswjs/interceptors/lib/utils/bufferUtils");
457
+ var import_lib = require("headers-polyfill/lib");
609
458
 
610
459
  // src/utils/request/getRequestCookies.ts
611
460
  var cookieUtils2 = __toESM(require("cookie"));
@@ -629,28 +478,11 @@ function getRequestCookies(request) {
629
478
  }
630
479
  }
631
480
 
632
- // src/utils/request/setRequestCookies.ts
633
- function setRequestCookies(request) {
634
- var _a;
635
- const requestCookiesString = request.headers.get("cookie");
636
- import_cookies.store.hydrate();
637
- const cookiesFromStore = Array.from((_a = import_cookies.store.get(__spreadProps(__spreadValues({}, request), { url: request.url.toString() }))) == null ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
638
- return Object.assign(cookies, { [name.trim()]: value });
639
- }, {});
640
- const cookiesFromDocument = getRequestCookies(request);
641
- const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
642
- for (const [name, value] of Object.entries(forwardedCookies)) {
643
- request.headers.append("cookie", `${name}=${value}`);
644
- }
645
- const ownCookies = requestCookiesString ? cookieUtils3.parse(requestCookiesString) : {};
646
- request.cookies = __spreadValues(__spreadValues(__spreadValues({}, request.cookies), forwardedCookies), ownCookies);
647
- }
648
-
649
481
  // src/utils/internal/parseMultipartData.ts
650
- var import_headers_polyfill5 = require("headers-polyfill");
482
+ var import_headers_polyfill3 = require("headers-polyfill");
651
483
  function parseContentHeaders(headersString) {
652
484
  var _a, _b;
653
- const headers = (0, import_headers_polyfill5.stringToHeaders)(headersString);
485
+ const headers = (0, import_headers_polyfill3.stringToHeaders)(headersString);
654
486
  const contentType = headers.get("content-type") || "text/plain";
655
487
  const disposition = headers.get("content-disposition");
656
488
  if (!disposition) {
@@ -729,39 +561,74 @@ function isStringEqual(actual, expected) {
729
561
  return actual.toLowerCase() === expected.toLowerCase();
730
562
  }
731
563
 
732
- // src/utils/request/pruneGetRequestBody.ts
733
- function pruneGetRequestBody(request) {
734
- if (request.method && isStringEqual(request.method, "GET") && request.body === "") {
735
- return void 0;
564
+ // src/utils/request/MockedRequest.ts
565
+ var MockedRequest = class extends import_interceptors.IsomorphicRequest {
566
+ constructor(input, init = {}) {
567
+ var __super = (...args) => {
568
+ super(...args);
569
+ };
570
+ if (input instanceof import_interceptors.IsomorphicRequest) {
571
+ __super(input);
572
+ } else {
573
+ __super(input, init);
574
+ }
575
+ if (init.id) {
576
+ this.id = init.id;
577
+ }
578
+ this.cache = init.cache || "default";
579
+ this.destination = init.destination || "";
580
+ this.integrity = init.integrity || "";
581
+ this.keepalive = init.keepalive || false;
582
+ this.mode = init.mode || "cors";
583
+ this.priority = init.priority || "auto";
584
+ this.redirect = init.redirect || "follow";
585
+ this.referrer = init.referrer || "";
586
+ this.referrerPolicy = init.referrerPolicy || "no-referrer";
587
+ this.cookies = init.cookies || this.getCookies();
588
+ }
589
+ get body() {
590
+ const text2 = (0, import_bufferUtils.decodeBuffer)(this["_body"]);
591
+ const body2 = parseBody(text2, this.headers);
592
+ if (isStringEqual(this.method, "GET") && body2 === "") {
593
+ return void 0;
594
+ }
595
+ return body2;
736
596
  }
737
- return request.body;
738
- }
597
+ passthrough() {
598
+ return {
599
+ status: 101,
600
+ statusText: "Continue",
601
+ headers: new import_lib.Headers(),
602
+ body: null,
603
+ passthrough: true,
604
+ once: false
605
+ };
606
+ }
607
+ getCookies() {
608
+ var _a;
609
+ const requestCookiesString = this.headers.get("cookie");
610
+ const ownCookies = requestCookiesString ? cookieUtils3.parse(requestCookiesString) : {};
611
+ import_cookies.store.hydrate();
612
+ const cookiesFromStore = Array.from((_a = import_cookies.store.get(__spreadProps(__spreadValues({}, this), { url: this.url.href }))) == null ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
613
+ return Object.assign(cookies, { [name.trim()]: value });
614
+ }, {});
615
+ const cookiesFromDocument = getRequestCookies(this);
616
+ const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
617
+ for (const [name, value] of Object.entries(forwardedCookies)) {
618
+ this.headers.append("cookie", `${name}=${value}`);
619
+ }
620
+ return __spreadValues(__spreadValues({}, forwardedCookies), ownCookies);
621
+ }
622
+ };
739
623
 
740
624
  // src/utils/request/parseWorkerRequest.ts
741
625
  function parseWorkerRequest(rawRequest) {
742
- const request = {
743
- id: rawRequest.id,
744
- cache: rawRequest.cache,
745
- credentials: rawRequest.credentials,
746
- method: rawRequest.method,
747
- url: new URL(rawRequest.url),
748
- referrer: rawRequest.referrer,
749
- referrerPolicy: rawRequest.referrerPolicy,
750
- redirect: rawRequest.redirect,
751
- mode: rawRequest.mode,
752
- params: {},
753
- cookies: {},
754
- integrity: rawRequest.integrity,
755
- keepalive: rawRequest.keepalive,
756
- destination: rawRequest.destination,
757
- body: pruneGetRequestBody(rawRequest),
758
- bodyUsed: rawRequest.bodyUsed,
759
- headers: new import_headers_polyfill6.Headers(rawRequest.headers),
760
- passthrough
761
- };
762
- setRequestCookies(request);
763
- request.body = parseBody(request.body, request.headers);
764
- return request;
626
+ const url = new URL(rawRequest.url);
627
+ const headers = new import_headers_polyfill4.Headers(rawRequest.headers);
628
+ return new MockedRequest(url, __spreadProps(__spreadValues({}, rawRequest), {
629
+ body: (0, import_interceptors2.encodeBuffer)(rawRequest.body || ""),
630
+ headers
631
+ }));
765
632
  }
766
633
 
767
634
  // src/utils/handleRequest.ts
@@ -940,14 +807,15 @@ function getTimestamp() {
940
807
  // src/utils/logging/prepareRequest.ts
941
808
  function prepareRequest(request) {
942
809
  return __spreadProps(__spreadValues({}, request), {
810
+ body: request.body,
943
811
  headers: request.headers.all()
944
812
  });
945
813
  }
946
814
 
947
815
  // src/utils/logging/prepareResponse.ts
948
- var import_headers_polyfill7 = require("headers-polyfill");
816
+ var import_headers_polyfill5 = require("headers-polyfill");
949
817
  function prepareResponse(res) {
950
- const responseHeaders = (0, import_headers_polyfill7.objectToHeaders)(res.headers);
818
+ const responseHeaders = (0, import_headers_polyfill5.objectToHeaders)(res.headers);
951
819
  return __spreadProps(__spreadValues({}, res), {
952
820
  body: parseBody(res.body, responseHeaders)
953
821
  });
@@ -1014,6 +882,151 @@ function matchRequestUrl(url, path, baseUrl) {
1014
882
  };
1015
883
  }
1016
884
 
885
+ // src/handlers/RequestHandler.ts
886
+ var import_headers_polyfill7 = require("headers-polyfill");
887
+
888
+ // src/response.ts
889
+ var import_headers_polyfill6 = require("headers-polyfill");
890
+
891
+ // src/utils/internal/compose.ts
892
+ function compose(...fns) {
893
+ return (...args) => {
894
+ return fns.reduceRight((leftFn, rightFn) => {
895
+ return leftFn instanceof Promise ? Promise.resolve(leftFn).then(rightFn) : rightFn(leftFn);
896
+ }, args[0]);
897
+ };
898
+ }
899
+
900
+ // src/response.ts
901
+ var defaultResponse = {
902
+ status: 200,
903
+ statusText: "OK",
904
+ body: null,
905
+ delay: 0,
906
+ once: false,
907
+ passthrough: false
908
+ };
909
+ var defaultResponseTransformers = [];
910
+ function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
911
+ return async (...transformers) => {
912
+ const initialResponse = Object.assign({}, defaultResponse, {
913
+ headers: new import_headers_polyfill6.Headers({
914
+ "x-powered-by": "msw"
915
+ })
916
+ }, responseOverrides);
917
+ const resolvedTransformers = [
918
+ ...defaultTransformers,
919
+ ...transformers
920
+ ].filter(Boolean);
921
+ const resolvedResponse = resolvedTransformers.length > 0 ? compose(...resolvedTransformers)(initialResponse) : initialResponse;
922
+ return resolvedResponse;
923
+ };
924
+ }
925
+ var response = Object.assign(createResponseComposition(), {
926
+ once: createResponseComposition({ once: true }),
927
+ networkError(message) {
928
+ throw new NetworkError(message);
929
+ }
930
+ });
931
+
932
+ // src/utils/internal/getCallFrame.ts
933
+ var SOURCE_FRAME = /\/msw\/src\/(.+)/;
934
+ var BUILD_FRAME = /(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/;
935
+ function getCallFrame(error2) {
936
+ const stack = error2.stack;
937
+ if (!stack) {
938
+ return;
939
+ }
940
+ const frames = stack.split("\n").slice(1);
941
+ const declarationFrame = frames.find((frame) => {
942
+ return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame));
943
+ });
944
+ if (!declarationFrame) {
945
+ return;
946
+ }
947
+ const declarationPath = declarationFrame.replace(/\s*at [^()]*\(([^)]+)\)/, "$1").replace(/^@/, "");
948
+ return declarationPath;
949
+ }
950
+
951
+ // src/utils/internal/isIterable.ts
952
+ function isIterable(fn) {
953
+ if (!fn) {
954
+ return false;
955
+ }
956
+ return typeof fn[Symbol.iterator] == "function";
957
+ }
958
+
959
+ // src/handlers/RequestHandler.ts
960
+ var defaultContext = {
961
+ status,
962
+ set,
963
+ delay,
964
+ fetch
965
+ };
966
+ var RequestHandler = class {
967
+ constructor(options) {
968
+ this.shouldSkip = false;
969
+ this.ctx = options.ctx || defaultContext;
970
+ this.resolver = options.resolver;
971
+ const callFrame = getCallFrame(new Error());
972
+ this.info = __spreadProps(__spreadValues({}, options.info), {
973
+ callFrame
974
+ });
975
+ }
976
+ parse(_request, _resolutionContext) {
977
+ return null;
978
+ }
979
+ test(request, resolutionContext) {
980
+ return this.predicate(request, this.parse(request, resolutionContext), resolutionContext);
981
+ }
982
+ getPublicRequest(request, _parsedResult) {
983
+ return request;
984
+ }
985
+ markAsSkipped(shouldSkip = true) {
986
+ this.shouldSkip = shouldSkip;
987
+ }
988
+ async run(request, resolutionContext) {
989
+ if (this.shouldSkip) {
990
+ return null;
991
+ }
992
+ const parsedResult = this.parse(request, resolutionContext);
993
+ const shouldIntercept = this.predicate(request, parsedResult, resolutionContext);
994
+ if (!shouldIntercept) {
995
+ return null;
996
+ }
997
+ const publicRequest = this.getPublicRequest(request, parsedResult);
998
+ const executeResolver = this.wrapResolver(this.resolver);
999
+ const mockedResponse = await executeResolver(publicRequest, response, this.ctx);
1000
+ return this.createExecutionResult(parsedResult, publicRequest, mockedResponse);
1001
+ }
1002
+ wrapResolver(resolver) {
1003
+ return async (req, res, ctx) => {
1004
+ const result = this.resolverGenerator || await resolver(req, res, ctx);
1005
+ if (isIterable(result)) {
1006
+ const { value, done } = result[Symbol.iterator]().next();
1007
+ const nextResponse = await value;
1008
+ if (!nextResponse && done) {
1009
+ return this.resolverGeneratorResult;
1010
+ }
1011
+ if (!this.resolverGenerator) {
1012
+ this.resolverGenerator = result;
1013
+ }
1014
+ this.resolverGeneratorResult = nextResponse;
1015
+ return nextResponse;
1016
+ }
1017
+ return result;
1018
+ };
1019
+ }
1020
+ createExecutionResult(parsedResult, request, response2) {
1021
+ return {
1022
+ handler: this,
1023
+ parsedResult: parsedResult || null,
1024
+ request,
1025
+ response: response2 || null
1026
+ };
1027
+ }
1028
+ };
1029
+
1017
1030
  // src/handlers/RestHandler.ts
1018
1031
  var RESTMethods = /* @__PURE__ */ ((RESTMethods2) => {
1019
1032
  RESTMethods2["HEAD"] = "HEAD";
@@ -1032,6 +1045,15 @@ var restContext = __spreadProps(__spreadValues({}, defaultContext), {
1032
1045
  json,
1033
1046
  xml
1034
1047
  });
1048
+ var RestRequest = class extends MockedRequest {
1049
+ constructor(request, params) {
1050
+ super(request.url, __spreadProps(__spreadValues({}, request), {
1051
+ body: request["_body"]
1052
+ }));
1053
+ this.params = params;
1054
+ this.id = request.id;
1055
+ }
1056
+ };
1035
1057
  var RestHandler = class extends RequestHandler {
1036
1058
  constructor(method, path, resolver) {
1037
1059
  super({
@@ -1065,9 +1087,7 @@ var RestHandler = class extends RequestHandler {
1065
1087
  return matchRequestUrl(request.url, this.info.path, resolutionContext == null ? void 0 : resolutionContext.baseUrl);
1066
1088
  }
1067
1089
  getPublicRequest(request, parsedResult) {
1068
- return __spreadProps(__spreadValues({}, request), {
1069
- params: parsedResult.params || {}
1070
- });
1090
+ return new RestRequest(request, parsedResult.params || {});
1071
1091
  }
1072
1092
  predicate(request, parsedResult) {
1073
1093
  const matchesMethod = this.info.method instanceof RegExp ? this.info.method.test(request.method) : isStringEqual(this.info.method, request.method);
@@ -1130,6 +1150,14 @@ function isDocumentNode(value) {
1130
1150
  }
1131
1151
  return typeof value === "object" && "kind" in value && "definitions" in value;
1132
1152
  }
1153
+ var GraphQLRequest = class extends MockedRequest {
1154
+ constructor(request, variables) {
1155
+ super(request.url, __spreadProps(__spreadValues({}, request), {
1156
+ body: request["_body"]
1157
+ }));
1158
+ this.variables = variables;
1159
+ }
1160
+ };
1133
1161
  var GraphQLHandler = class extends RequestHandler {
1134
1162
  constructor(operationType, operationName, endpoint, resolver) {
1135
1163
  let resolvedOperationName = operationName;
@@ -1159,9 +1187,7 @@ var GraphQLHandler = class extends RequestHandler {
1159
1187
  return tryCatch(() => parseGraphQLRequest(request), (error2) => console.error(error2.message));
1160
1188
  }
1161
1189
  getPublicRequest(request, parsedResult) {
1162
- return __spreadProps(__spreadValues({}, request), {
1163
- variables: (parsedResult == null ? void 0 : parsedResult.variables) || {}
1164
- });
1190
+ return new GraphQLRequest(request, (parsedResult == null ? void 0 : parsedResult.variables) || {});
1165
1191
  }
1166
1192
  predicate(request, parsedResult) {
1167
1193
  if (!parsedResult) {
@@ -1467,8 +1493,8 @@ function transformResponse(response2) {
1467
1493
  async function requestIntegrityCheck(context, serviceWorker) {
1468
1494
  context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
1469
1495
  const { payload: actualChecksum } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
1470
- if (actualChecksum !== "c9450df6e4dc5e45740c3b0b640727a2") {
1471
- throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"c9450df6e4dc5e45740c3b0b640727a2"}).`);
1496
+ if (actualChecksum !== "df0d85222361310ecbe1792c606e08f2") {
1497
+ throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"df0d85222361310ecbe1792c606e08f2"}).`);
1472
1498
  }
1473
1499
  return serviceWorker;
1474
1500
  }
@@ -1646,43 +1672,16 @@ function prepareStartHandler(handler, context) {
1646
1672
  }
1647
1673
 
1648
1674
  // src/setupWorker/start/createFallbackRequestListener.ts
1649
- var import_interceptors = require("@mswjs/interceptors");
1675
+ var import_interceptors3 = require("@mswjs/interceptors");
1650
1676
  var import_fetch3 = require("@mswjs/interceptors/lib/interceptors/fetch");
1651
1677
  var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest");
1652
-
1653
- // src/utils/request/parseIsomorphicRequest.ts
1654
- function parseIsomorphicRequest(request) {
1655
- const mockedRequest = {
1656
- id: request.id,
1657
- url: request.url,
1658
- method: request.method,
1659
- body: parseBody(request.body, request.headers),
1660
- credentials: request.credentials || "same-origin",
1661
- headers: request.headers,
1662
- cookies: {},
1663
- redirect: "manual",
1664
- referrer: "",
1665
- keepalive: false,
1666
- cache: "default",
1667
- mode: "cors",
1668
- referrerPolicy: "no-referrer",
1669
- integrity: "",
1670
- destination: "document",
1671
- bodyUsed: false,
1672
- passthrough
1673
- };
1674
- setRequestCookies(mockedRequest);
1675
- return mockedRequest;
1676
- }
1677
-
1678
- // src/setupWorker/start/createFallbackRequestListener.ts
1679
1678
  function createFallbackRequestListener(context, options) {
1680
- const interceptor = new import_interceptors.BatchInterceptor({
1679
+ const interceptor = new import_interceptors3.BatchInterceptor({
1681
1680
  name: "fallback",
1682
1681
  interceptors: [new import_fetch3.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
1683
1682
  });
1684
1683
  interceptor.on("request", async (request) => {
1685
- const mockedRequest = parseIsomorphicRequest(request);
1684
+ const mockedRequest = new MockedRequest(request);
1686
1685
  const response2 = await handleRequest(mockedRequest, context.requestHandlers, options, context.emitter, {
1687
1686
  transformResponse(response3) {
1688
1687
  return {
@@ -1767,7 +1766,7 @@ function setupWorker(...requestHandlers) {
1767
1766
  if (event.source !== context.worker) {
1768
1767
  return;
1769
1768
  }
1770
- const message = jsonParse(event.data);
1769
+ const message = event.data;
1771
1770
  if (!message) {
1772
1771
  return;
1773
1772
  }
@@ -1800,7 +1799,7 @@ function setupWorker(...requestHandlers) {
1800
1799
  return new Promise((resolve, reject) => {
1801
1800
  const handleIncomingMessage = (event) => {
1802
1801
  try {
1803
- const message = JSON.parse(event.data);
1802
+ const message = event.data;
1804
1803
  if (message.type === eventType) {
1805
1804
  resolve(message);
1806
1805
  }
@@ -1911,6 +1910,7 @@ var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {
1911
1910
  // Annotate the CommonJS export names for ESM import in node:
1912
1911
  0 && (module.exports = {
1913
1912
  GraphQLHandler,
1913
+ MockedRequest,
1914
1914
  RESTMethods,
1915
1915
  RequestHandler,
1916
1916
  RestHandler,
@@ -1924,7 +1924,6 @@ var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {
1924
1924
  graphqlContext,
1925
1925
  handleRequest,
1926
1926
  matchRequestUrl,
1927
- parseIsomorphicRequest,
1928
1927
  response,
1929
1928
  rest,
1930
1929
  restContext,