msw 0.43.0 → 0.44.1

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-297d38ba.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-297d38ba.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,
@@ -122,7 +122,7 @@ var cookieUtils = __toESM(require("cookie"));
122
122
  var cookie = (name, value, options) => {
123
123
  return (res) => {
124
124
  const serializedCookie = cookieUtils.serialize(name, value, options);
125
- res.headers.set("Set-Cookie", serializedCookie);
125
+ res.headers.append("Set-Cookie", serializedCookie);
126
126
  if (typeof document !== "undefined") {
127
127
  document.cookie = serializedCookie;
128
128
  }
@@ -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,67 @@ 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(url, init = {}) {
567
+ super(url, init);
568
+ if (init.id) {
569
+ this.id = init.id;
570
+ }
571
+ this.cache = init.cache || "default";
572
+ this.destination = init.destination || "";
573
+ this.integrity = init.integrity || "";
574
+ this.keepalive = init.keepalive || false;
575
+ this.mode = init.mode || "cors";
576
+ this.priority = init.priority || "auto";
577
+ this.redirect = init.redirect || "follow";
578
+ this.referrer = init.referrer || "";
579
+ this.referrerPolicy = init.referrerPolicy || "no-referrer";
580
+ this.cookies = init.cookies || this.getCookies();
581
+ }
582
+ get body() {
583
+ const text2 = (0, import_bufferUtils.decodeBuffer)(this["_body"]);
584
+ const body2 = parseBody(text2, this.headers);
585
+ if (isStringEqual(this.method, "GET") && body2 === "") {
586
+ return void 0;
587
+ }
588
+ return body2;
736
589
  }
737
- return request.body;
738
- }
590
+ passthrough() {
591
+ return {
592
+ status: 101,
593
+ statusText: "Continue",
594
+ headers: new import_lib.Headers(),
595
+ body: null,
596
+ passthrough: true,
597
+ once: false
598
+ };
599
+ }
600
+ getCookies() {
601
+ var _a;
602
+ const requestCookiesString = this.headers.get("cookie");
603
+ const ownCookies = requestCookiesString ? cookieUtils3.parse(requestCookiesString) : {};
604
+ import_cookies.store.hydrate();
605
+ 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 }]) => {
606
+ return Object.assign(cookies, { [name.trim()]: value });
607
+ }, {});
608
+ const cookiesFromDocument = getRequestCookies(this);
609
+ const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
610
+ for (const [name, value] of Object.entries(forwardedCookies)) {
611
+ this.headers.append("cookie", `${name}=${value}`);
612
+ }
613
+ return __spreadValues(__spreadValues({}, forwardedCookies), ownCookies);
614
+ }
615
+ };
739
616
 
740
617
  // src/utils/request/parseWorkerRequest.ts
741
618
  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;
619
+ const url = new URL(rawRequest.url);
620
+ const headers = new import_headers_polyfill4.Headers(rawRequest.headers);
621
+ return new MockedRequest(url, __spreadProps(__spreadValues({}, rawRequest), {
622
+ body: (0, import_interceptors2.encodeBuffer)(rawRequest.body || ""),
623
+ headers
624
+ }));
765
625
  }
766
626
 
767
627
  // src/utils/handleRequest.ts
@@ -940,14 +800,15 @@ function getTimestamp() {
940
800
  // src/utils/logging/prepareRequest.ts
941
801
  function prepareRequest(request) {
942
802
  return __spreadProps(__spreadValues({}, request), {
803
+ body: request.body,
943
804
  headers: request.headers.all()
944
805
  });
945
806
  }
946
807
 
947
808
  // src/utils/logging/prepareResponse.ts
948
- var import_headers_polyfill7 = require("headers-polyfill");
809
+ var import_headers_polyfill5 = require("headers-polyfill");
949
810
  function prepareResponse(res) {
950
- const responseHeaders = (0, import_headers_polyfill7.objectToHeaders)(res.headers);
811
+ const responseHeaders = (0, import_headers_polyfill5.objectToHeaders)(res.headers);
951
812
  return __spreadProps(__spreadValues({}, res), {
952
813
  body: parseBody(res.body, responseHeaders)
953
814
  });
@@ -1014,6 +875,151 @@ function matchRequestUrl(url, path, baseUrl) {
1014
875
  };
1015
876
  }
1016
877
 
878
+ // src/handlers/RequestHandler.ts
879
+ var import_headers_polyfill7 = require("headers-polyfill");
880
+
881
+ // src/response.ts
882
+ var import_headers_polyfill6 = require("headers-polyfill");
883
+
884
+ // src/utils/internal/compose.ts
885
+ function compose(...fns) {
886
+ return (...args) => {
887
+ return fns.reduceRight((leftFn, rightFn) => {
888
+ return leftFn instanceof Promise ? Promise.resolve(leftFn).then(rightFn) : rightFn(leftFn);
889
+ }, args[0]);
890
+ };
891
+ }
892
+
893
+ // src/response.ts
894
+ var defaultResponse = {
895
+ status: 200,
896
+ statusText: "OK",
897
+ body: null,
898
+ delay: 0,
899
+ once: false,
900
+ passthrough: false
901
+ };
902
+ var defaultResponseTransformers = [];
903
+ function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
904
+ return async (...transformers) => {
905
+ const initialResponse = Object.assign({}, defaultResponse, {
906
+ headers: new import_headers_polyfill6.Headers({
907
+ "x-powered-by": "msw"
908
+ })
909
+ }, responseOverrides);
910
+ const resolvedTransformers = [
911
+ ...defaultTransformers,
912
+ ...transformers
913
+ ].filter(Boolean);
914
+ const resolvedResponse = resolvedTransformers.length > 0 ? compose(...resolvedTransformers)(initialResponse) : initialResponse;
915
+ return resolvedResponse;
916
+ };
917
+ }
918
+ var response = Object.assign(createResponseComposition(), {
919
+ once: createResponseComposition({ once: true }),
920
+ networkError(message) {
921
+ throw new NetworkError(message);
922
+ }
923
+ });
924
+
925
+ // src/utils/internal/getCallFrame.ts
926
+ var SOURCE_FRAME = /\/msw\/src\/(.+)/;
927
+ var BUILD_FRAME = /(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/;
928
+ function getCallFrame(error2) {
929
+ const stack = error2.stack;
930
+ if (!stack) {
931
+ return;
932
+ }
933
+ const frames = stack.split("\n").slice(1);
934
+ const declarationFrame = frames.find((frame) => {
935
+ return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame));
936
+ });
937
+ if (!declarationFrame) {
938
+ return;
939
+ }
940
+ const declarationPath = declarationFrame.replace(/\s*at [^()]*\(([^)]+)\)/, "$1").replace(/^@/, "");
941
+ return declarationPath;
942
+ }
943
+
944
+ // src/utils/internal/isIterable.ts
945
+ function isIterable(fn) {
946
+ if (!fn) {
947
+ return false;
948
+ }
949
+ return typeof fn[Symbol.iterator] == "function";
950
+ }
951
+
952
+ // src/handlers/RequestHandler.ts
953
+ var defaultContext = {
954
+ status,
955
+ set,
956
+ delay,
957
+ fetch
958
+ };
959
+ var RequestHandler = class {
960
+ constructor(options) {
961
+ this.shouldSkip = false;
962
+ this.ctx = options.ctx || defaultContext;
963
+ this.resolver = options.resolver;
964
+ const callFrame = getCallFrame(new Error());
965
+ this.info = __spreadProps(__spreadValues({}, options.info), {
966
+ callFrame
967
+ });
968
+ }
969
+ parse(_request, _resolutionContext) {
970
+ return null;
971
+ }
972
+ test(request, resolutionContext) {
973
+ return this.predicate(request, this.parse(request, resolutionContext), resolutionContext);
974
+ }
975
+ getPublicRequest(request, _parsedResult) {
976
+ return request;
977
+ }
978
+ markAsSkipped(shouldSkip = true) {
979
+ this.shouldSkip = shouldSkip;
980
+ }
981
+ async run(request, resolutionContext) {
982
+ if (this.shouldSkip) {
983
+ return null;
984
+ }
985
+ const parsedResult = this.parse(request, resolutionContext);
986
+ const shouldIntercept = this.predicate(request, parsedResult, resolutionContext);
987
+ if (!shouldIntercept) {
988
+ return null;
989
+ }
990
+ const publicRequest = this.getPublicRequest(request, parsedResult);
991
+ const executeResolver = this.wrapResolver(this.resolver);
992
+ const mockedResponse = await executeResolver(publicRequest, response, this.ctx);
993
+ return this.createExecutionResult(parsedResult, publicRequest, mockedResponse);
994
+ }
995
+ wrapResolver(resolver) {
996
+ return async (req, res, ctx) => {
997
+ const result = this.resolverGenerator || await resolver(req, res, ctx);
998
+ if (isIterable(result)) {
999
+ const { value, done } = result[Symbol.iterator]().next();
1000
+ const nextResponse = await value;
1001
+ if (!nextResponse && done) {
1002
+ return this.resolverGeneratorResult;
1003
+ }
1004
+ if (!this.resolverGenerator) {
1005
+ this.resolverGenerator = result;
1006
+ }
1007
+ this.resolverGeneratorResult = nextResponse;
1008
+ return nextResponse;
1009
+ }
1010
+ return result;
1011
+ };
1012
+ }
1013
+ createExecutionResult(parsedResult, request, response2) {
1014
+ return {
1015
+ handler: this,
1016
+ parsedResult: parsedResult || null,
1017
+ request,
1018
+ response: response2 || null
1019
+ };
1020
+ }
1021
+ };
1022
+
1017
1023
  // src/handlers/RestHandler.ts
1018
1024
  var RESTMethods = /* @__PURE__ */ ((RESTMethods2) => {
1019
1025
  RESTMethods2["HEAD"] = "HEAD";
@@ -1032,6 +1038,15 @@ var restContext = __spreadProps(__spreadValues({}, defaultContext), {
1032
1038
  json,
1033
1039
  xml
1034
1040
  });
1041
+ var RestRequest = class extends MockedRequest {
1042
+ constructor(request, params) {
1043
+ super(request.url, __spreadProps(__spreadValues({}, request), {
1044
+ body: request["_body"]
1045
+ }));
1046
+ this.params = params;
1047
+ this.id = request.id;
1048
+ }
1049
+ };
1035
1050
  var RestHandler = class extends RequestHandler {
1036
1051
  constructor(method, path, resolver) {
1037
1052
  super({
@@ -1065,9 +1080,7 @@ var RestHandler = class extends RequestHandler {
1065
1080
  return matchRequestUrl(request.url, this.info.path, resolutionContext == null ? void 0 : resolutionContext.baseUrl);
1066
1081
  }
1067
1082
  getPublicRequest(request, parsedResult) {
1068
- return __spreadProps(__spreadValues({}, request), {
1069
- params: parsedResult.params || {}
1070
- });
1083
+ return new RestRequest(request, parsedResult.params || {});
1071
1084
  }
1072
1085
  predicate(request, parsedResult) {
1073
1086
  const matchesMethod = this.info.method instanceof RegExp ? this.info.method.test(request.method) : isStringEqual(this.info.method, request.method);
@@ -1130,6 +1143,14 @@ function isDocumentNode(value) {
1130
1143
  }
1131
1144
  return typeof value === "object" && "kind" in value && "definitions" in value;
1132
1145
  }
1146
+ var GraphQLRequest = class extends MockedRequest {
1147
+ constructor(request, variables) {
1148
+ super(request.url, __spreadProps(__spreadValues({}, request), {
1149
+ body: request["_body"]
1150
+ }));
1151
+ this.variables = variables;
1152
+ }
1153
+ };
1133
1154
  var GraphQLHandler = class extends RequestHandler {
1134
1155
  constructor(operationType, operationName, endpoint, resolver) {
1135
1156
  let resolvedOperationName = operationName;
@@ -1159,9 +1180,7 @@ var GraphQLHandler = class extends RequestHandler {
1159
1180
  return tryCatch(() => parseGraphQLRequest(request), (error2) => console.error(error2.message));
1160
1181
  }
1161
1182
  getPublicRequest(request, parsedResult) {
1162
- return __spreadProps(__spreadValues({}, request), {
1163
- variables: (parsedResult == null ? void 0 : parsedResult.variables) || {}
1164
- });
1183
+ return new GraphQLRequest(request, (parsedResult == null ? void 0 : parsedResult.variables) || {});
1165
1184
  }
1166
1185
  predicate(request, parsedResult) {
1167
1186
  if (!parsedResult) {
@@ -1467,8 +1486,8 @@ function transformResponse(response2) {
1467
1486
  async function requestIntegrityCheck(context, serviceWorker) {
1468
1487
  context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
1469
1488
  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"}).`);
1489
+ if (actualChecksum !== "df0d85222361310ecbe1792c606e08f2") {
1490
+ throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"df0d85222361310ecbe1792c606e08f2"}).`);
1472
1491
  }
1473
1492
  return serviceWorker;
1474
1493
  }
@@ -1646,43 +1665,18 @@ function prepareStartHandler(handler, context) {
1646
1665
  }
1647
1666
 
1648
1667
  // src/setupWorker/start/createFallbackRequestListener.ts
1649
- var import_interceptors = require("@mswjs/interceptors");
1668
+ var import_interceptors3 = require("@mswjs/interceptors");
1650
1669
  var import_fetch3 = require("@mswjs/interceptors/lib/interceptors/fetch");
1651
1670
  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
1671
  function createFallbackRequestListener(context, options) {
1680
- const interceptor = new import_interceptors.BatchInterceptor({
1672
+ const interceptor = new import_interceptors3.BatchInterceptor({
1681
1673
  name: "fallback",
1682
1674
  interceptors: [new import_fetch3.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
1683
1675
  });
1684
1676
  interceptor.on("request", async (request) => {
1685
- const mockedRequest = parseIsomorphicRequest(request);
1677
+ const mockedRequest = new MockedRequest(request.url, __spreadProps(__spreadValues({}, request), {
1678
+ body: await request.arrayBuffer()
1679
+ }));
1686
1680
  const response2 = await handleRequest(mockedRequest, context.requestHandlers, options, context.emitter, {
1687
1681
  transformResponse(response3) {
1688
1682
  return {
@@ -1767,7 +1761,7 @@ function setupWorker(...requestHandlers) {
1767
1761
  if (event.source !== context.worker) {
1768
1762
  return;
1769
1763
  }
1770
- const message = jsonParse(event.data);
1764
+ const message = event.data;
1771
1765
  if (!message) {
1772
1766
  return;
1773
1767
  }
@@ -1800,7 +1794,7 @@ function setupWorker(...requestHandlers) {
1800
1794
  return new Promise((resolve, reject) => {
1801
1795
  const handleIncomingMessage = (event) => {
1802
1796
  try {
1803
- const message = JSON.parse(event.data);
1797
+ const message = event.data;
1804
1798
  if (message.type === eventType) {
1805
1799
  resolve(message);
1806
1800
  }
@@ -1911,6 +1905,7 @@ var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {
1911
1905
  // Annotate the CommonJS export names for ESM import in node:
1912
1906
  0 && (module.exports = {
1913
1907
  GraphQLHandler,
1908
+ MockedRequest,
1914
1909
  RESTMethods,
1915
1910
  RequestHandler,
1916
1911
  RestHandler,
@@ -1924,7 +1919,6 @@ var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {
1924
1919
  graphqlContext,
1925
1920
  handleRequest,
1926
1921
  matchRequestUrl,
1927
- parseIsomorphicRequest,
1928
1922
  response,
1929
1923
  rest,
1930
1924
  restContext,