msw 1.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +32 -29
  2. package/browser/package.json +5 -0
  3. package/cli/init.js +3 -3
  4. package/config/constants.js +1 -2
  5. package/lib/browser/index.d.ts +104 -0
  6. package/lib/browser/index.js +751 -0
  7. package/lib/browser/index.mjs +733 -0
  8. package/lib/core/GraphQLHandler-b42ca96f.d.ts +74 -0
  9. package/lib/core/HttpResponse.d.ts +2 -0
  10. package/lib/core/HttpResponse.js +94 -0
  11. package/lib/core/HttpResponse.mjs +77 -0
  12. package/lib/core/RequestHandler-1a5dbdc7.d.ts +172 -0
  13. package/lib/core/SetupApi.d.ts +26 -0
  14. package/lib/core/SetupApi.js +83 -0
  15. package/lib/core/SetupApi.mjs +63 -0
  16. package/lib/core/bypass.d.ts +16 -0
  17. package/lib/core/bypass.js +36 -0
  18. package/lib/core/bypass.mjs +16 -0
  19. package/lib/core/delay.d.ts +18 -0
  20. package/lib/core/delay.js +92 -0
  21. package/lib/core/delay.mjs +72 -0
  22. package/lib/core/graphql.d.ts +109 -0
  23. package/lib/core/graphql.js +112 -0
  24. package/lib/core/graphql.mjs +96 -0
  25. package/lib/core/handlers/GraphQLHandler.d.ts +5 -0
  26. package/lib/core/handlers/GraphQLHandler.js +145 -0
  27. package/lib/core/handlers/GraphQLHandler.mjs +130 -0
  28. package/lib/core/handlers/HttpHandler.d.ts +62 -0
  29. package/lib/core/handlers/HttpHandler.js +149 -0
  30. package/lib/core/handlers/HttpHandler.mjs +133 -0
  31. package/lib/core/handlers/RequestHandler.d.ts +2 -0
  32. package/lib/core/handlers/RequestHandler.js +180 -0
  33. package/lib/core/handlers/RequestHandler.mjs +162 -0
  34. package/lib/core/http.d.ts +26 -0
  35. package/lib/core/http.js +39 -0
  36. package/lib/core/http.mjs +22 -0
  37. package/lib/core/http.spec.d.ts +2 -0
  38. package/lib/core/http.spec.js +15 -0
  39. package/lib/core/http.spec.mjs +14 -0
  40. package/lib/core/index.d.ts +18 -0
  41. package/lib/core/index.js +49 -0
  42. package/lib/core/index.mjs +28 -0
  43. package/lib/core/passthrough.d.ts +17 -0
  44. package/lib/core/passthrough.js +32 -0
  45. package/lib/core/passthrough.mjs +12 -0
  46. package/lib/core/sharedOptions.d.ts +66 -0
  47. package/lib/core/sharedOptions.js +16 -0
  48. package/lib/core/sharedOptions.mjs +0 -0
  49. package/lib/core/typeUtils.d.ts +7 -0
  50. package/lib/core/typeUtils.js +16 -0
  51. package/lib/core/typeUtils.mjs +0 -0
  52. package/lib/core/utils/HttpResponse/decorators.d.ts +12 -0
  53. package/lib/core/utils/HttpResponse/decorators.js +80 -0
  54. package/lib/core/utils/HttpResponse/decorators.mjs +52 -0
  55. package/lib/core/utils/getResponse.d.ts +2 -0
  56. package/lib/core/utils/getResponse.js +64 -0
  57. package/lib/core/utils/getResponse.mjs +44 -0
  58. package/lib/core/utils/handleRequest.d.ts +30 -0
  59. package/lib/core/utils/handleRequest.js +102 -0
  60. package/lib/core/utils/handleRequest.mjs +82 -0
  61. package/lib/core/utils/internal/Disposable.d.ts +7 -0
  62. package/lib/core/utils/internal/Disposable.js +53 -0
  63. package/lib/core/utils/internal/Disposable.mjs +33 -0
  64. package/lib/core/utils/internal/checkGlobals.d.ts +3 -0
  65. package/lib/core/utils/internal/checkGlobals.js +33 -0
  66. package/lib/core/utils/internal/checkGlobals.mjs +13 -0
  67. package/lib/core/utils/internal/devUtils.d.ts +19 -0
  68. package/lib/core/utils/internal/devUtils.js +40 -0
  69. package/lib/core/utils/internal/devUtils.mjs +20 -0
  70. package/lib/core/utils/internal/getCallFrame.d.ts +6 -0
  71. package/lib/core/utils/internal/getCallFrame.js +40 -0
  72. package/lib/core/utils/internal/getCallFrame.mjs +20 -0
  73. package/lib/core/utils/internal/isIterable.d.ts +6 -0
  74. package/lib/core/utils/internal/isIterable.js +29 -0
  75. package/lib/core/utils/internal/isIterable.mjs +9 -0
  76. package/lib/core/utils/internal/isObject.d.ts +6 -0
  77. package/lib/core/utils/internal/isObject.js +26 -0
  78. package/lib/core/utils/internal/isObject.mjs +6 -0
  79. package/lib/core/utils/internal/isStringEqual.d.ts +6 -0
  80. package/lib/core/utils/internal/isStringEqual.js +26 -0
  81. package/lib/core/utils/internal/isStringEqual.mjs +6 -0
  82. package/lib/core/utils/internal/jsonParse.d.ts +7 -0
  83. package/lib/core/utils/internal/jsonParse.js +30 -0
  84. package/lib/core/utils/internal/jsonParse.mjs +10 -0
  85. package/lib/core/utils/internal/mergeRight.d.ts +7 -0
  86. package/lib/core/utils/internal/mergeRight.js +39 -0
  87. package/lib/core/utils/internal/mergeRight.mjs +19 -0
  88. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +5 -0
  89. package/lib/core/utils/internal/parseGraphQLRequest.js +184 -0
  90. package/lib/core/utils/internal/parseGraphQLRequest.mjs +165 -0
  91. package/lib/core/utils/internal/parseMultipartData.d.ts +10 -0
  92. package/lib/core/utils/internal/parseMultipartData.js +81 -0
  93. package/lib/core/utils/internal/parseMultipartData.mjs +61 -0
  94. package/lib/core/utils/internal/pipeEvents.d.ts +8 -0
  95. package/lib/core/utils/internal/pipeEvents.js +34 -0
  96. package/lib/core/utils/internal/pipeEvents.mjs +14 -0
  97. package/lib/core/utils/internal/requestHandlerUtils.d.ts +8 -0
  98. package/lib/core/utils/internal/requestHandlerUtils.js +36 -0
  99. package/lib/core/utils/internal/requestHandlerUtils.mjs +16 -0
  100. package/lib/core/utils/internal/toReadonlyArray.d.ts +6 -0
  101. package/lib/core/utils/internal/toReadonlyArray.js +28 -0
  102. package/lib/core/utils/internal/toReadonlyArray.mjs +8 -0
  103. package/lib/core/utils/internal/tryCatch.d.ts +3 -0
  104. package/lib/core/utils/internal/tryCatch.js +31 -0
  105. package/lib/core/utils/internal/tryCatch.mjs +11 -0
  106. package/lib/core/utils/internal/uuidv4.d.ts +3 -0
  107. package/lib/core/utils/internal/uuidv4.js +26 -0
  108. package/lib/core/utils/internal/uuidv4.mjs +6 -0
  109. package/lib/core/utils/logging/getStatusCodeColor.d.ts +11 -0
  110. package/lib/core/utils/logging/getStatusCodeColor.js +39 -0
  111. package/lib/core/utils/logging/getStatusCodeColor.mjs +19 -0
  112. package/lib/core/utils/logging/getTimestamp.d.ts +6 -0
  113. package/lib/core/utils/logging/getTimestamp.js +27 -0
  114. package/lib/core/utils/logging/getTimestamp.mjs +7 -0
  115. package/lib/core/utils/logging/serializeRequest.d.ts +12 -0
  116. package/lib/core/utils/logging/serializeRequest.js +55 -0
  117. package/lib/core/utils/logging/serializeRequest.mjs +35 -0
  118. package/lib/core/utils/logging/serializeResponse.d.ts +9 -0
  119. package/lib/core/utils/logging/serializeResponse.js +69 -0
  120. package/lib/core/utils/logging/serializeResponse.mjs +39 -0
  121. package/lib/core/utils/matching/matchRequestUrl.d.ts +19 -0
  122. package/lib/core/utils/matching/matchRequestUrl.js +50 -0
  123. package/lib/core/utils/matching/matchRequestUrl.mjs +30 -0
  124. package/lib/core/utils/matching/normalizePath.d.ts +12 -0
  125. package/lib/core/utils/matching/normalizePath.js +32 -0
  126. package/lib/core/utils/matching/normalizePath.mjs +12 -0
  127. package/lib/core/utils/request/getPublicUrlFromRequest.d.ts +7 -0
  128. package/lib/core/utils/request/getPublicUrlFromRequest.js +30 -0
  129. package/lib/core/utils/request/getPublicUrlFromRequest.mjs +10 -0
  130. package/lib/core/utils/request/getRequestCookies.d.ts +8 -0
  131. package/lib/core/utils/request/getRequestCookies.js +88 -0
  132. package/lib/core/utils/request/getRequestCookies.mjs +60 -0
  133. package/lib/core/utils/request/onUnhandledRequest.d.ts +12 -0
  134. package/lib/core/utils/request/onUnhandledRequest.js +193 -0
  135. package/lib/core/utils/request/onUnhandledRequest.mjs +165 -0
  136. package/lib/core/utils/request/readResponseCookies.d.ts +3 -0
  137. package/lib/core/utils/request/readResponseCookies.js +45 -0
  138. package/lib/core/utils/request/readResponseCookies.mjs +27 -0
  139. package/lib/core/utils/toResponseInit.d.ts +3 -0
  140. package/lib/core/utils/toResponseInit.js +30 -0
  141. package/lib/core/utils/toResponseInit.mjs +10 -0
  142. package/lib/core/utils/url/cleanUrl.d.ts +7 -0
  143. package/lib/core/utils/url/cleanUrl.js +31 -0
  144. package/lib/core/utils/url/cleanUrl.mjs +11 -0
  145. package/lib/core/utils/url/getAbsoluteUrl.d.ts +6 -0
  146. package/lib/core/utils/url/getAbsoluteUrl.js +37 -0
  147. package/lib/core/utils/url/getAbsoluteUrl.mjs +17 -0
  148. package/lib/core/utils/url/isAbsoluteUrl.d.ts +6 -0
  149. package/lib/core/utils/url/isAbsoluteUrl.js +26 -0
  150. package/lib/core/utils/url/isAbsoluteUrl.mjs +6 -0
  151. package/lib/iife/index.js +6203 -12360
  152. package/lib/mockServiceWorker.js +82 -93
  153. package/lib/native/index.d.ts +67 -7
  154. package/lib/native/index.js +74 -1500
  155. package/lib/native/index.mjs +69 -1514
  156. package/lib/node/index.d.ts +68 -9
  157. package/lib/node/index.js +77 -1508
  158. package/lib/node/index.mjs +71 -1521
  159. package/native/package.json +2 -1
  160. package/node/package.json +2 -1
  161. package/package.json +53 -23
  162. package/lib/SetupServerApi-1855d9c6.d.ts +0 -20
  163. package/lib/glossary-de6278a9.d.ts +0 -385
  164. package/lib/iife/index.js.map +0 -1
  165. package/lib/index.d.ts +0 -365
  166. package/lib/index.js +0 -2295
  167. package/lib/index.js.map +0 -1
  168. package/lib/node/index.js.map +0 -1
  169. package/lib/node/index.mjs.map +0 -1
@@ -0,0 +1,74 @@
1
+ import { OperationTypeNode, DocumentNode, GraphQLError } from 'graphql';
2
+ import { g as RequestHandlerDefaultInfo, D as DefaultBodyType, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-1a5dbdc7.js';
3
+ import { Path } from './utils/matching/matchRequestUrl.js';
4
+
5
+ interface ParsedGraphQLQuery {
6
+ operationType: OperationTypeNode;
7
+ operationName?: string;
8
+ }
9
+ type ParsedGraphQLRequest<VariablesType extends GraphQLVariables = GraphQLVariables> = (ParsedGraphQLQuery & {
10
+ query: string;
11
+ variables?: VariablesType;
12
+ }) | undefined;
13
+ declare function parseDocumentNode(node: DocumentNode): ParsedGraphQLQuery;
14
+ type GraphQLParsedOperationsMap = Record<string, string[]>;
15
+ type GraphQLMultipartRequestBody = {
16
+ operations: string;
17
+ map?: string;
18
+ } & {
19
+ [fileName: string]: File;
20
+ };
21
+ /**
22
+ * Determines if a given request can be considered a GraphQL request.
23
+ * Does not parse the query and does not guarantee its validity.
24
+ */
25
+ declare function parseGraphQLRequest(request: Request): Promise<ParsedGraphQLRequest>;
26
+
27
+ type ExpectedOperationTypeNode = OperationTypeNode | 'all';
28
+ type GraphQLHandlerNameSelector = DocumentNode | RegExp | string;
29
+ type GraphQLVariables = Record<string, any>;
30
+ interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {
31
+ operationType: ExpectedOperationTypeNode;
32
+ operationName: GraphQLHandlerNameSelector;
33
+ }
34
+ type GraphQLResolverExtras<Variables extends GraphQLVariables> = {
35
+ query: string;
36
+ operationName: string;
37
+ variables: Variables;
38
+ };
39
+ type GraphQLRequestBody<VariablesType extends GraphQLVariables> = GraphQLJsonRequestBody<VariablesType> | GraphQLMultipartRequestBody | Record<string, any> | undefined;
40
+ interface GraphQLJsonRequestBody<Variables extends GraphQLVariables> {
41
+ query: string;
42
+ variables?: Variables;
43
+ }
44
+ interface GraphQLResponseBody<BodyType extends DefaultBodyType> {
45
+ data?: BodyType;
46
+ errors?: readonly Partial<GraphQLError>[];
47
+ }
48
+ declare function isDocumentNode(value: DocumentNode | any): value is DocumentNode;
49
+ declare class GraphQLHandler extends RequestHandler<GraphQLHandlerInfo, ParsedGraphQLRequest, GraphQLResolverExtras<any>> {
50
+ private endpoint;
51
+ constructor(operationType: ExpectedOperationTypeNode, operationName: GraphQLHandlerNameSelector, endpoint: Path, resolver: ResponseResolver<GraphQLResolverExtras<any>, any, any>, options?: RequestHandlerOptions);
52
+ parse(args: {
53
+ request: Request;
54
+ }): Promise<ParsedGraphQLRequest<GraphQLVariables>>;
55
+ predicate(args: {
56
+ request: Request;
57
+ parsedResult: ParsedGraphQLRequest;
58
+ }): boolean;
59
+ protected extendResolverArgs(args: {
60
+ request: Request;
61
+ parsedResult: ParsedGraphQLRequest<GraphQLVariables>;
62
+ }): {
63
+ query: string;
64
+ operationName: string;
65
+ variables: GraphQLVariables;
66
+ };
67
+ log(args: {
68
+ request: Request;
69
+ response: Response;
70
+ parsedResult: ParsedGraphQLRequest;
71
+ }): Promise<void>;
72
+ }
73
+
74
+ export { ExpectedOperationTypeNode as E, GraphQLHandler as G, ParsedGraphQLRequest as P, GraphQLVariables as a, GraphQLRequestBody as b, GraphQLJsonRequestBody as c, GraphQLHandlerNameSelector as d, GraphQLResolverExtras as e, GraphQLResponseBody as f, ParsedGraphQLQuery as g, GraphQLParsedOperationsMap as h, GraphQLMultipartRequestBody as i, parseGraphQLRequest as j, GraphQLHandlerInfo as k, isDocumentNode as l, parseDocumentNode as p };
@@ -0,0 +1,2 @@
1
+ export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './RequestHandler-1a5dbdc7.js';
2
+ import './typeUtils.js';
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var HttpResponse_exports = {};
20
+ __export(HttpResponse_exports, {
21
+ HttpResponse: () => HttpResponse
22
+ });
23
+ module.exports = __toCommonJS(HttpResponse_exports);
24
+ var import_decorators = require("./utils/HttpResponse/decorators.js");
25
+ class HttpResponse extends Response {
26
+ constructor(body, init) {
27
+ const responseInit = (0, import_decorators.normalizeResponseInit)(init);
28
+ super(body, responseInit);
29
+ (0, import_decorators.decorateResponse)(this, responseInit);
30
+ }
31
+ /**
32
+ * Create a `Response` with a `Content-Type: "text/plain"` body.
33
+ * @example
34
+ * HttpResponse.text('hello world')
35
+ * HttpResponse.text('Error', { status: 500 })
36
+ */
37
+ static text(body, init) {
38
+ const responseInit = (0, import_decorators.normalizeResponseInit)(init);
39
+ responseInit.headers.set("Content-Type", "text/plain");
40
+ return new HttpResponse(body, responseInit);
41
+ }
42
+ /**
43
+ * Create a `Response` with a `Content-Type: "application/json"` body.
44
+ * @example
45
+ * HttpResponse.json({ firstName: 'John' })
46
+ * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })
47
+ */
48
+ static json(body, init) {
49
+ const responseInit = (0, import_decorators.normalizeResponseInit)(init);
50
+ responseInit.headers.set("Content-Type", "application/json");
51
+ return new HttpResponse(
52
+ JSON.stringify(body),
53
+ responseInit
54
+ );
55
+ }
56
+ /**
57
+ * Create a `Response` with a `Content-Type: "application/xml"` body.
58
+ * @example
59
+ * HttpResponse.xml(`<user name="John" />`)
60
+ * HttpResponse.xml(`<article id="abc-123" />`, { status: 201 })
61
+ */
62
+ static xml(body, init) {
63
+ const responseInit = (0, import_decorators.normalizeResponseInit)(init);
64
+ responseInit.headers.set("Content-Type", "text/xml");
65
+ return new HttpResponse(body, responseInit);
66
+ }
67
+ /**
68
+ * Create a `Response` with an `ArrayBuffer` body.
69
+ * @example
70
+ * const buffer = new ArrayBuffer(3)
71
+ * const view = new Uint8Array(buffer)
72
+ * view.set([1, 2, 3])
73
+ *
74
+ * HttpResponse.arrayBuffer(buffer)
75
+ */
76
+ static arrayBuffer(body, init) {
77
+ const responseInit = (0, import_decorators.normalizeResponseInit)(init);
78
+ if (body) {
79
+ responseInit.headers.set("Content-Length", body.byteLength.toString());
80
+ }
81
+ return new HttpResponse(body, responseInit);
82
+ }
83
+ /**
84
+ * Create a `Response` with a `FormData` body.
85
+ * @example
86
+ * const data = new FormData()
87
+ * data.set('name', 'Alice')
88
+ *
89
+ * HttpResponse.formData(data)
90
+ */
91
+ static formData(body, init) {
92
+ return new HttpResponse(body, (0, import_decorators.normalizeResponseInit)(init));
93
+ }
94
+ }
@@ -0,0 +1,77 @@
1
+ import {
2
+ decorateResponse,
3
+ normalizeResponseInit
4
+ } from './utils/HttpResponse/decorators.mjs';
5
+ class HttpResponse extends Response {
6
+ constructor(body, init) {
7
+ const responseInit = normalizeResponseInit(init);
8
+ super(body, responseInit);
9
+ decorateResponse(this, responseInit);
10
+ }
11
+ /**
12
+ * Create a `Response` with a `Content-Type: "text/plain"` body.
13
+ * @example
14
+ * HttpResponse.text('hello world')
15
+ * HttpResponse.text('Error', { status: 500 })
16
+ */
17
+ static text(body, init) {
18
+ const responseInit = normalizeResponseInit(init);
19
+ responseInit.headers.set("Content-Type", "text/plain");
20
+ return new HttpResponse(body, responseInit);
21
+ }
22
+ /**
23
+ * Create a `Response` with a `Content-Type: "application/json"` body.
24
+ * @example
25
+ * HttpResponse.json({ firstName: 'John' })
26
+ * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })
27
+ */
28
+ static json(body, init) {
29
+ const responseInit = normalizeResponseInit(init);
30
+ responseInit.headers.set("Content-Type", "application/json");
31
+ return new HttpResponse(
32
+ JSON.stringify(body),
33
+ responseInit
34
+ );
35
+ }
36
+ /**
37
+ * Create a `Response` with a `Content-Type: "application/xml"` body.
38
+ * @example
39
+ * HttpResponse.xml(`<user name="John" />`)
40
+ * HttpResponse.xml(`<article id="abc-123" />`, { status: 201 })
41
+ */
42
+ static xml(body, init) {
43
+ const responseInit = normalizeResponseInit(init);
44
+ responseInit.headers.set("Content-Type", "text/xml");
45
+ return new HttpResponse(body, responseInit);
46
+ }
47
+ /**
48
+ * Create a `Response` with an `ArrayBuffer` body.
49
+ * @example
50
+ * const buffer = new ArrayBuffer(3)
51
+ * const view = new Uint8Array(buffer)
52
+ * view.set([1, 2, 3])
53
+ *
54
+ * HttpResponse.arrayBuffer(buffer)
55
+ */
56
+ static arrayBuffer(body, init) {
57
+ const responseInit = normalizeResponseInit(init);
58
+ if (body) {
59
+ responseInit.headers.set("Content-Length", body.byteLength.toString());
60
+ }
61
+ return new HttpResponse(body, responseInit);
62
+ }
63
+ /**
64
+ * Create a `Response` with a `FormData` body.
65
+ * @example
66
+ * const data = new FormData()
67
+ * data.set('name', 'Alice')
68
+ *
69
+ * HttpResponse.formData(data)
70
+ */
71
+ static formData(body, init) {
72
+ return new HttpResponse(body, normalizeResponseInit(init));
73
+ }
74
+ }
75
+ export {
76
+ HttpResponse
77
+ };
@@ -0,0 +1,172 @@
1
+ import { MaybePromise } from './typeUtils.js';
2
+
3
+ interface ResponseLookupResult {
4
+ handler: RequestHandler;
5
+ parsedResult?: any;
6
+ response?: Response;
7
+ }
8
+ interface ResponseResolutionContext {
9
+ baseUrl?: string;
10
+ }
11
+ /**
12
+ * Returns a mocked response for a given request using following request handlers.
13
+ */
14
+ declare const getResponse: <Handler extends RequestHandler<RequestHandlerDefaultInfo, any, any, RequestHandlerOptions>[]>(request: Request, handlers: Handler, resolutionContext?: ResponseResolutionContext) => Promise<ResponseLookupResult | null>;
15
+
16
+ interface HttpResponseInit extends ResponseInit {
17
+ type?: ResponseType;
18
+ }
19
+ declare const bodyType: unique symbol;
20
+ interface StrictRequest<BodyType extends DefaultBodyType> extends Request {
21
+ json(): Promise<BodyType>;
22
+ }
23
+ /**
24
+ * Opaque `Response` type that supports strict body type.
25
+ */
26
+ interface StrictResponse<BodyType extends DefaultBodyType> extends Response {
27
+ readonly [bodyType]: BodyType;
28
+ }
29
+ /**
30
+ * A drop-in replacement for the standard `Response` class
31
+ * to allow additional features, like mocking the response `Set-Cookie` header.
32
+ *
33
+ * @example
34
+ * new HttpResponse('Hello world', { status: 201 })
35
+ * HttpResponse.json({ name: 'John' })
36
+ * HttpResponse.formData(form)
37
+ *
38
+ * @see {@link https://mswjs.io/docs/api/http-response `HttpResponse` API reference}
39
+ */
40
+ declare class HttpResponse extends Response {
41
+ constructor(body?: BodyInit | null, init?: HttpResponseInit);
42
+ /**
43
+ * Create a `Response` with a `Content-Type: "text/plain"` body.
44
+ * @example
45
+ * HttpResponse.text('hello world')
46
+ * HttpResponse.text('Error', { status: 500 })
47
+ */
48
+ static text<BodyType extends string>(body?: BodyType | null, init?: HttpResponseInit): StrictResponse<BodyType>;
49
+ /**
50
+ * Create a `Response` with a `Content-Type: "application/json"` body.
51
+ * @example
52
+ * HttpResponse.json({ firstName: 'John' })
53
+ * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })
54
+ */
55
+ static json<BodyType extends DefaultBodyType>(body?: BodyType | null, init?: HttpResponseInit): StrictResponse<BodyType>;
56
+ /**
57
+ * Create a `Response` with a `Content-Type: "application/xml"` body.
58
+ * @example
59
+ * HttpResponse.xml(`<user name="John" />`)
60
+ * HttpResponse.xml(`<article id="abc-123" />`, { status: 201 })
61
+ */
62
+ static xml<BodyType extends string>(body?: BodyType | null, init?: HttpResponseInit): Response;
63
+ /**
64
+ * Create a `Response` with an `ArrayBuffer` body.
65
+ * @example
66
+ * const buffer = new ArrayBuffer(3)
67
+ * const view = new Uint8Array(buffer)
68
+ * view.set([1, 2, 3])
69
+ *
70
+ * HttpResponse.arrayBuffer(buffer)
71
+ */
72
+ static arrayBuffer(body?: ArrayBuffer, init?: HttpResponseInit): Response;
73
+ /**
74
+ * Create a `Response` with a `FormData` body.
75
+ * @example
76
+ * const data = new FormData()
77
+ * data.set('name', 'Alice')
78
+ *
79
+ * HttpResponse.formData(data)
80
+ */
81
+ static formData(body?: FormData, init?: HttpResponseInit): Response;
82
+ }
83
+
84
+ type DefaultRequestMultipartBody = Record<string, string | File | Array<string | File>>;
85
+ type DefaultBodyType = Record<string, any> | DefaultRequestMultipartBody | string | number | boolean | null | undefined;
86
+ interface RequestHandlerDefaultInfo {
87
+ header: string;
88
+ }
89
+ interface RequestHandlerInternalInfo {
90
+ callFrame?: string;
91
+ }
92
+ type ResponseResolverReturnType<BodyType extends DefaultBodyType = undefined> = (BodyType extends undefined ? Response : StrictResponse<BodyType>) | undefined | void;
93
+ type MaybeAsyncResponseResolverReturnType<BodyType extends DefaultBodyType> = MaybePromise<ResponseResolverReturnType<BodyType>>;
94
+ type AsyncResponseResolverReturnType<BodyType extends DefaultBodyType> = MaybeAsyncResponseResolverReturnType<BodyType> | Generator<MaybeAsyncResponseResolverReturnType<BodyType>, MaybeAsyncResponseResolverReturnType<BodyType>, MaybeAsyncResponseResolverReturnType<BodyType>>;
95
+ type ResponseResolverInfo<ResolverExtraInfo extends Record<string, unknown>, RequestBodyType extends DefaultBodyType = DefaultBodyType> = {
96
+ request: StrictRequest<RequestBodyType>;
97
+ } & ResolverExtraInfo;
98
+ type ResponseResolver<ResolverExtraInfo extends Record<string, unknown> = Record<string, unknown>, RequestBodyType extends DefaultBodyType = DefaultBodyType, ResponseBodyType extends DefaultBodyType = undefined> = (info: ResponseResolverInfo<ResolverExtraInfo, RequestBodyType>) => AsyncResponseResolverReturnType<ResponseBodyType>;
99
+ interface RequestHandlerArgs<HandlerInfo, HandlerOptions extends RequestHandlerOptions> {
100
+ info: HandlerInfo;
101
+ resolver: ResponseResolver<any>;
102
+ options?: HandlerOptions;
103
+ }
104
+ interface RequestHandlerOptions {
105
+ once?: boolean;
106
+ }
107
+ interface RequestHandlerExecutionResult<ParsedResult extends Record<string, unknown> | undefined> {
108
+ handler: RequestHandler;
109
+ parsedResult?: ParsedResult;
110
+ request: Request;
111
+ response?: Response;
112
+ }
113
+ declare abstract class RequestHandler<HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo, ParsedResult extends Record<string, any> | undefined = any, ResolverExtras extends Record<string, unknown> = any, HandlerOptions extends RequestHandlerOptions = RequestHandlerOptions> {
114
+ info: HandlerInfo & RequestHandlerInternalInfo;
115
+ /**
116
+ * Indicates whether this request handler has been used
117
+ * (its resolver has successfully executed).
118
+ */
119
+ isUsed: boolean;
120
+ protected resolver: ResponseResolver<ResolverExtras, any, any>;
121
+ private resolverGenerator?;
122
+ private resolverGeneratorResult?;
123
+ private options?;
124
+ constructor(args: RequestHandlerArgs<HandlerInfo, HandlerOptions>);
125
+ /**
126
+ * Determine if the intercepted request should be mocked.
127
+ */
128
+ abstract predicate(args: {
129
+ request: Request;
130
+ parsedResult: ParsedResult;
131
+ resolutionContext?: ResponseResolutionContext;
132
+ }): boolean;
133
+ /**
134
+ * Print out the successfully handled request.
135
+ */
136
+ abstract log(args: {
137
+ request: Request;
138
+ response: Response;
139
+ parsedResult: ParsedResult;
140
+ }): void;
141
+ /**
142
+ * Parse the intercepted request to extract additional information from it.
143
+ * Parsed result is then exposed to other methods of this request handler.
144
+ */
145
+ parse(_args: {
146
+ request: Request;
147
+ resolutionContext?: ResponseResolutionContext;
148
+ }): Promise<ParsedResult>;
149
+ /**
150
+ * Test if this handler matches the given request.
151
+ */
152
+ test(args: {
153
+ request: Request;
154
+ resolutionContext?: ResponseResolutionContext;
155
+ }): Promise<boolean>;
156
+ protected extendResolverArgs(_args: {
157
+ request: Request;
158
+ parsedResult: ParsedResult;
159
+ }): ResolverExtras;
160
+ /**
161
+ * Execute this request handler and produce a mocked response
162
+ * using the given resolver function.
163
+ */
164
+ run(args: {
165
+ request: StrictRequest<any>;
166
+ resolutionContext?: ResponseResolutionContext;
167
+ }): Promise<RequestHandlerExecutionResult<ParsedResult> | null>;
168
+ private wrapResolver;
169
+ private createExecutionResult;
170
+ }
171
+
172
+ export { AsyncResponseResolverReturnType as A, DefaultBodyType as D, HttpResponseInit as H, MaybeAsyncResponseResolverReturnType as M, RequestHandler as R, StrictRequest as S, ResponseResolver as a, ResponseResolverReturnType as b, RequestHandlerOptions as c, DefaultRequestMultipartBody as d, StrictResponse as e, HttpResponse as f, RequestHandlerDefaultInfo as g, ResponseLookupResult as h, ResponseResolutionContext as i, getResponse as j, RequestHandlerInternalInfo as k, ResponseResolverInfo as l, RequestHandlerArgs as m, RequestHandlerExecutionResult as n };
@@ -0,0 +1,26 @@
1
+ import { EventMap, Emitter } from 'strict-event-emitter';
2
+ import { R as RequestHandler, g as RequestHandlerDefaultInfo } from './RequestHandler-1a5dbdc7.js';
3
+ import { LifeCycleEventEmitter } from './sharedOptions.js';
4
+ import { Disposable } from './utils/internal/Disposable.js';
5
+ import './typeUtils.js';
6
+ import './utils/request/onUnhandledRequest.js';
7
+
8
+ /**
9
+ * Generic class for the mock API setup.
10
+ */
11
+ declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
12
+ protected initialHandlers: ReadonlyArray<RequestHandler>;
13
+ protected currentHandlers: Array<RequestHandler>;
14
+ protected readonly emitter: Emitter<EventsMap>;
15
+ protected readonly publicEmitter: Emitter<EventsMap>;
16
+ readonly events: LifeCycleEventEmitter<EventsMap>;
17
+ constructor(...initialHandlers: Array<RequestHandler>);
18
+ private validateHandlers;
19
+ use(...runtimeHandlers: Array<RequestHandler>): void;
20
+ restoreHandlers(): void;
21
+ resetHandlers(...nextHandlers: Array<RequestHandler>): void;
22
+ listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any, any>>;
23
+ private createLifeCycleEvents;
24
+ }
25
+
26
+ export { SetupApi };
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var SetupApi_exports = {};
20
+ __export(SetupApi_exports, {
21
+ SetupApi: () => SetupApi
22
+ });
23
+ module.exports = __toCommonJS(SetupApi_exports);
24
+ var import_outvariant = require("outvariant");
25
+ var import_strict_event_emitter = require("strict-event-emitter");
26
+ var import_devUtils = require("./utils/internal/devUtils.js");
27
+ var import_pipeEvents = require("./utils/internal/pipeEvents.js");
28
+ var import_toReadonlyArray = require("./utils/internal/toReadonlyArray.js");
29
+ var import_Disposable = require("./utils/internal/Disposable.js");
30
+ class SetupApi extends import_Disposable.Disposable {
31
+ constructor(...initialHandlers) {
32
+ super();
33
+ this.validateHandlers(...initialHandlers);
34
+ this.initialHandlers = (0, import_toReadonlyArray.toReadonlyArray)(initialHandlers);
35
+ this.currentHandlers = [...initialHandlers];
36
+ this.emitter = new import_strict_event_emitter.Emitter();
37
+ this.publicEmitter = new import_strict_event_emitter.Emitter();
38
+ (0, import_pipeEvents.pipeEvents)(this.emitter, this.publicEmitter);
39
+ this.events = this.createLifeCycleEvents();
40
+ this.subscriptions.push(() => {
41
+ this.emitter.removeAllListeners();
42
+ this.publicEmitter.removeAllListeners();
43
+ });
44
+ }
45
+ validateHandlers(...handlers) {
46
+ for (const handler of handlers) {
47
+ (0, import_outvariant.invariant)(
48
+ !Array.isArray(handler),
49
+ import_devUtils.devUtils.formatMessage(
50
+ 'Failed to construct "%s" given an Array of request handlers. Make sure you spread the request handlers when calling the respective setup function.'
51
+ ),
52
+ this.constructor.name
53
+ );
54
+ }
55
+ }
56
+ use(...runtimeHandlers) {
57
+ this.currentHandlers.unshift(...runtimeHandlers);
58
+ }
59
+ restoreHandlers() {
60
+ this.currentHandlers.forEach((handler) => {
61
+ handler.isUsed = false;
62
+ });
63
+ }
64
+ resetHandlers(...nextHandlers) {
65
+ this.currentHandlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
66
+ }
67
+ listHandlers() {
68
+ return (0, import_toReadonlyArray.toReadonlyArray)(this.currentHandlers);
69
+ }
70
+ createLifeCycleEvents() {
71
+ return {
72
+ on: (...args) => {
73
+ return this.publicEmitter.on(...args);
74
+ },
75
+ removeListener: (...args) => {
76
+ return this.publicEmitter.removeListener(...args);
77
+ },
78
+ removeAllListeners: (...args) => {
79
+ return this.publicEmitter.removeAllListeners(...args);
80
+ }
81
+ };
82
+ }
83
+ }
@@ -0,0 +1,63 @@
1
+ import { invariant } from "outvariant";
2
+ import { Emitter } from "strict-event-emitter";
3
+ import { devUtils } from './utils/internal/devUtils.mjs';
4
+ import { pipeEvents } from './utils/internal/pipeEvents.mjs';
5
+ import { toReadonlyArray } from './utils/internal/toReadonlyArray.mjs';
6
+ import { Disposable } from './utils/internal/Disposable.mjs';
7
+ class SetupApi extends Disposable {
8
+ constructor(...initialHandlers) {
9
+ super();
10
+ this.validateHandlers(...initialHandlers);
11
+ this.initialHandlers = toReadonlyArray(initialHandlers);
12
+ this.currentHandlers = [...initialHandlers];
13
+ this.emitter = new Emitter();
14
+ this.publicEmitter = new Emitter();
15
+ pipeEvents(this.emitter, this.publicEmitter);
16
+ this.events = this.createLifeCycleEvents();
17
+ this.subscriptions.push(() => {
18
+ this.emitter.removeAllListeners();
19
+ this.publicEmitter.removeAllListeners();
20
+ });
21
+ }
22
+ validateHandlers(...handlers) {
23
+ for (const handler of handlers) {
24
+ invariant(
25
+ !Array.isArray(handler),
26
+ devUtils.formatMessage(
27
+ 'Failed to construct "%s" given an Array of request handlers. Make sure you spread the request handlers when calling the respective setup function.'
28
+ ),
29
+ this.constructor.name
30
+ );
31
+ }
32
+ }
33
+ use(...runtimeHandlers) {
34
+ this.currentHandlers.unshift(...runtimeHandlers);
35
+ }
36
+ restoreHandlers() {
37
+ this.currentHandlers.forEach((handler) => {
38
+ handler.isUsed = false;
39
+ });
40
+ }
41
+ resetHandlers(...nextHandlers) {
42
+ this.currentHandlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
43
+ }
44
+ listHandlers() {
45
+ return toReadonlyArray(this.currentHandlers);
46
+ }
47
+ createLifeCycleEvents() {
48
+ return {
49
+ on: (...args) => {
50
+ return this.publicEmitter.on(...args);
51
+ },
52
+ removeListener: (...args) => {
53
+ return this.publicEmitter.removeListener(...args);
54
+ },
55
+ removeAllListeners: (...args) => {
56
+ return this.publicEmitter.removeAllListeners(...args);
57
+ }
58
+ };
59
+ }
60
+ }
61
+ export {
62
+ SetupApi
63
+ };
@@ -0,0 +1,16 @@
1
+ type BypassRequestInput = string | URL | Request;
2
+ /**
3
+ * Creates a `Request` instance that will always be ignored by MSW.
4
+ *
5
+ * @example
6
+ * import { bypass } from 'msw'
7
+ *
8
+ * fetch(bypass('/resource'))
9
+ * fetch(bypass(new URL('/resource', 'https://example.com)))
10
+ * fetch(bypass(new Request('https://example.com/resource')))
11
+ *
12
+ * @see {@link https://mswjs.io/docs/api/bypass `bypass()` API reference}
13
+ */
14
+ declare function bypass(input: BypassRequestInput, init?: RequestInit): Request;
15
+
16
+ export { BypassRequestInput, bypass };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var bypass_exports = {};
20
+ __export(bypass_exports, {
21
+ bypass: () => bypass
22
+ });
23
+ module.exports = __toCommonJS(bypass_exports);
24
+ var import_outvariant = require("outvariant");
25
+ function bypass(input, init) {
26
+ const request = input instanceof Request ? input : new Request(input, init);
27
+ (0, import_outvariant.invariant)(
28
+ !request.bodyUsed,
29
+ 'Failed to create a bypassed request to "%s %s": given request instance already has its body read. Make sure to clone the intercepted request if you wish to read its body before bypassing it.',
30
+ request.method,
31
+ request.url
32
+ );
33
+ const requestClone = request.clone();
34
+ requestClone.headers.set("x-msw-intention", "bypass");
35
+ return requestClone;
36
+ }
@@ -0,0 +1,16 @@
1
+ import { invariant } from "outvariant";
2
+ function bypass(input, init) {
3
+ const request = input instanceof Request ? input : new Request(input, init);
4
+ invariant(
5
+ !request.bodyUsed,
6
+ 'Failed to create a bypassed request to "%s %s": given request instance already has its body read. Make sure to clone the intercepted request if you wish to read its body before bypassing it.',
7
+ request.method,
8
+ request.url
9
+ );
10
+ const requestClone = request.clone();
11
+ requestClone.headers.set("x-msw-intention", "bypass");
12
+ return requestClone;
13
+ }
14
+ export {
15
+ bypass
16
+ };