msw 2.0.1 → 2.0.3

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 (37) hide show
  1. package/README.md +2 -2
  2. package/lib/browser/index.js +5 -5
  3. package/lib/browser/index.mjs +5 -5
  4. package/lib/core/{GraphQLHandler-b42ca96f.d.ts → GraphQLHandler-8be65628.d.ts} +1 -1
  5. package/lib/core/HttpResponse.d.ts +1 -1
  6. package/lib/core/{RequestHandler-1a5dbdc7.d.ts → RequestHandler-90c6ace3.d.ts} +1 -1
  7. package/lib/core/SetupApi.d.ts +1 -1
  8. package/lib/core/graphql.d.ts +2 -2
  9. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  10. package/lib/core/handlers/GraphQLHandler.js +3 -4
  11. package/lib/core/handlers/GraphQLHandler.mjs +3 -4
  12. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  13. package/lib/core/handlers/HttpHandler.js +3 -5
  14. package/lib/core/handlers/HttpHandler.mjs +3 -5
  15. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  16. package/lib/core/handlers/RequestHandler.js +5 -2
  17. package/lib/core/handlers/RequestHandler.mjs +5 -2
  18. package/lib/core/http.d.ts +1 -1
  19. package/lib/core/index.d.ts +2 -2
  20. package/lib/core/sharedOptions.d.ts +1 -1
  21. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  22. package/lib/core/utils/getResponse.d.ts +1 -1
  23. package/lib/core/utils/handleRequest.d.ts +1 -1
  24. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  25. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  26. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  27. package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
  28. package/lib/iife/index.js +16 -16
  29. package/lib/mockServiceWorker.js +1 -1
  30. package/lib/native/index.js +4 -4
  31. package/lib/native/index.mjs +4 -4
  32. package/lib/node/index.js +4 -4
  33. package/lib/node/index.mjs +4 -4
  34. package/package.json +6 -9
  35. package/lib/core/http.spec.d.ts +0 -2
  36. package/lib/core/http.spec.js +0 -15
  37. package/lib/core/http.spec.mjs +0 -14
package/README.md CHANGED
@@ -23,7 +23,7 @@
23
23
  <a href="https://www.npmjs.com/package/msw" target="_blank">
24
24
  <img src="https://img.shields.io/npm/dm/msw?style=for-the-badge&color=black" alt="Downloads per month" />
25
25
  </a>
26
- <a href="https://kcd.im/discord" target="_blank">
26
+ <a href="https://kettanaito.com/discord" target="_blank">
27
27
  <img src="https://img.shields.io/badge/chat-online-green?style=for-the-badge&color=black" alt="Discord server" />
28
28
  </a>
29
29
  </p>
@@ -125,7 +125,7 @@ There's no such thing as Service Workers in Node.js. Instead, MSW implements a [
125
125
 
126
126
  ### Usage example
127
127
 
128
- Take a look at the example of an integration test in Jest that uses [React Testing Library](https://github.com/testing-library/react-testing-library) and Mock Service Worker:
128
+ Take a look at the example of an integration test in Vitest that uses [React Testing Library](https://github.com/testing-library/react-testing-library) and Mock Service Worker:
129
129
 
130
130
  ```js
131
131
  // test/Dashboard.test.js
@@ -264,18 +264,18 @@ var createRequestListener = (context, options) => {
264
264
  const responseCloneForLogs = response.clone();
265
265
  const responseInit = (0, import_toResponseInit.toResponseInit)(response);
266
266
  if (context.supports.readableStreamTransfer) {
267
- const responseStream = response.body;
267
+ const responseStreamOrNull = response.body;
268
268
  messageChannel.postMessage(
269
269
  "MOCK_RESPONSE",
270
270
  __spreadProps(__spreadValues({}, responseInit), {
271
- body: responseStream
271
+ body: responseStreamOrNull
272
272
  }),
273
- responseStream ? [responseStream] : void 0
273
+ responseStreamOrNull ? [responseStreamOrNull] : void 0
274
274
  );
275
275
  } else {
276
- const responseBuffer = yield responseClone.arrayBuffer();
276
+ const responseBufferOrNull = response.body === null ? null : yield responseClone.arrayBuffer();
277
277
  messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, responseInit), {
278
- body: responseBuffer
278
+ body: responseBufferOrNull
279
279
  }));
280
280
  }
281
281
  if (!options.quiet) {
@@ -240,18 +240,18 @@ var createRequestListener = (context, options) => {
240
240
  const responseCloneForLogs = response.clone();
241
241
  const responseInit = toResponseInit(response);
242
242
  if (context.supports.readableStreamTransfer) {
243
- const responseStream = response.body;
243
+ const responseStreamOrNull = response.body;
244
244
  messageChannel.postMessage(
245
245
  "MOCK_RESPONSE",
246
246
  __spreadProps(__spreadValues({}, responseInit), {
247
- body: responseStream
247
+ body: responseStreamOrNull
248
248
  }),
249
- responseStream ? [responseStream] : void 0
249
+ responseStreamOrNull ? [responseStreamOrNull] : void 0
250
250
  );
251
251
  } else {
252
- const responseBuffer = yield responseClone.arrayBuffer();
252
+ const responseBufferOrNull = response.body === null ? null : yield responseClone.arrayBuffer();
253
253
  messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, responseInit), {
254
- body: responseBuffer
254
+ body: responseBufferOrNull
255
255
  }));
256
256
  }
257
257
  if (!options.quiet) {
@@ -1,5 +1,5 @@
1
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';
2
+ import { g as RequestHandlerDefaultInfo, D as DefaultBodyType, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-90c6ace3.js';
3
3
  import { Path } from './utils/matching/matchRequestUrl.js';
4
4
 
5
5
  interface ParsedGraphQLQuery {
@@ -1,2 +1,2 @@
1
- export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './RequestHandler-1a5dbdc7.js';
1
+ export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './RequestHandler-90c6ace3.js';
2
2
  import './typeUtils.js';
@@ -89,7 +89,7 @@ interface RequestHandlerDefaultInfo {
89
89
  interface RequestHandlerInternalInfo {
90
90
  callFrame?: string;
91
91
  }
92
- type ResponseResolverReturnType<BodyType extends DefaultBodyType = undefined> = (BodyType extends undefined ? Response : StrictResponse<BodyType>) | undefined | void;
92
+ type ResponseResolverReturnType<BodyType extends DefaultBodyType = undefined> = ([BodyType] extends [undefined] ? Response : StrictResponse<BodyType>) | undefined | void;
93
93
  type MaybeAsyncResponseResolverReturnType<BodyType extends DefaultBodyType> = MaybePromise<ResponseResolverReturnType<BodyType>>;
94
94
  type AsyncResponseResolverReturnType<BodyType extends DefaultBodyType> = MaybeAsyncResponseResolverReturnType<BodyType> | Generator<MaybeAsyncResponseResolverReturnType<BodyType>, MaybeAsyncResponseResolverReturnType<BodyType>, MaybeAsyncResponseResolverReturnType<BodyType>>;
95
95
  type ResponseResolverInfo<ResolverExtraInfo extends Record<string, unknown>, RequestBodyType extends DefaultBodyType = DefaultBodyType> = {
@@ -1,5 +1,5 @@
1
1
  import { EventMap, Emitter } from 'strict-event-emitter';
2
- import { R as RequestHandler, g as RequestHandlerDefaultInfo } from './RequestHandler-1a5dbdc7.js';
2
+ import { R as RequestHandler, g as RequestHandlerDefaultInfo } from './RequestHandler-90c6ace3.js';
3
3
  import { LifeCycleEventEmitter } from './sharedOptions.js';
4
4
  import { Disposable } from './utils/internal/Disposable.js';
5
5
  import './typeUtils.js';
@@ -1,6 +1,6 @@
1
1
  import { DocumentNode } from 'graphql';
2
- import { a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-1a5dbdc7.js';
3
- import { a as GraphQLVariables, d as GraphQLHandlerNameSelector, e as GraphQLResolverExtras, f as GraphQLResponseBody, G as GraphQLHandler } from './GraphQLHandler-b42ca96f.js';
2
+ import { a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-90c6ace3.js';
3
+ import { a as GraphQLVariables, d as GraphQLHandlerNameSelector, e as GraphQLResolverExtras, f as GraphQLResponseBody, G as GraphQLHandler } from './GraphQLHandler-8be65628.js';
4
4
  import { Path } from './utils/matching/matchRequestUrl.js';
5
5
  import './typeUtils.js';
6
6
 
@@ -1,5 +1,5 @@
1
1
  import 'graphql';
2
- import '../RequestHandler-1a5dbdc7.js';
2
+ import '../RequestHandler-90c6ace3.js';
3
3
  import '../utils/matching/matchRequestUrl.js';
4
- export { E as ExpectedOperationTypeNode, G as GraphQLHandler, k as GraphQLHandlerInfo, d as GraphQLHandlerNameSelector, c as GraphQLJsonRequestBody, b as GraphQLRequestBody, e as GraphQLResolverExtras, f as GraphQLResponseBody, a as GraphQLVariables, l as isDocumentNode } from '../GraphQLHandler-b42ca96f.js';
4
+ export { E as ExpectedOperationTypeNode, G as GraphQLHandler, k as GraphQLHandlerInfo, d as GraphQLHandlerNameSelector, c as GraphQLJsonRequestBody, b as GraphQLRequestBody, e as GraphQLResolverExtras, f as GraphQLResponseBody, a as GraphQLVariables, l as isDocumentNode } from '../GraphQLHandler-8be65628.js';
5
5
  import '../typeUtils.js';
@@ -129,11 +129,10 @@ Consider naming this operation or using "graphql.operation()" request handler to
129
129
  const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(loggedResponse.status);
130
130
  const requestInfo = ((_a = args.parsedResult) == null ? void 0 : _a.operationName) ? `${(_b = args.parsedResult) == null ? void 0 : _b.operationType} ${(_c = args.parsedResult) == null ? void 0 : _c.operationName}` : `anonymous ${(_d = args.parsedResult) == null ? void 0 : _d.operationType}`;
131
131
  console.groupCollapsed(
132
- import_devUtils.devUtils.formatMessage("%s %s (%c%s%c)"),
133
- (0, import_getTimestamp.getTimestamp)(),
134
- `${requestInfo}`,
132
+ import_devUtils.devUtils.formatMessage(
133
+ `${(0, import_getTimestamp.getTimestamp)()} ${requestInfo} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
134
+ ),
135
135
  `color:${statusColor}`,
136
- `${loggedResponse.status} ${loggedResponse.statusText}`,
137
136
  "color:inherit"
138
137
  );
139
138
  console.log("Request:", loggedRequest);
@@ -110,11 +110,10 @@ Consider naming this operation or using "graphql.operation()" request handler to
110
110
  const statusColor = getStatusCodeColor(loggedResponse.status);
111
111
  const requestInfo = ((_a = args.parsedResult) == null ? void 0 : _a.operationName) ? `${(_b = args.parsedResult) == null ? void 0 : _b.operationType} ${(_c = args.parsedResult) == null ? void 0 : _c.operationName}` : `anonymous ${(_d = args.parsedResult) == null ? void 0 : _d.operationType}`;
112
112
  console.groupCollapsed(
113
- devUtils.formatMessage("%s %s (%c%s%c)"),
114
- getTimestamp(),
115
- `${requestInfo}`,
113
+ devUtils.formatMessage(
114
+ `${getTimestamp()} ${requestInfo} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
115
+ ),
116
116
  `color:${statusColor}`,
117
- `${loggedResponse.status} ${loggedResponse.statusText}`,
118
117
  "color:inherit"
119
118
  );
120
119
  console.log("Request:", loggedRequest);
@@ -1,4 +1,4 @@
1
- import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, i as ResponseResolutionContext } from '../RequestHandler-1a5dbdc7.js';
1
+ import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, i as ResponseResolutionContext } from '../RequestHandler-90c6ace3.js';
2
2
  import { Path, Match, PathParams } from '../utils/matching/matchRequestUrl.js';
3
3
  import '../typeUtils.js';
4
4
 
@@ -132,12 +132,10 @@ class HttpHandler extends import_RequestHandler.RequestHandler {
132
132
  const loggedResponse = yield (0, import_serializeResponse.serializeResponse)(args.response);
133
133
  const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(loggedResponse.status);
134
134
  console.groupCollapsed(
135
- import_devUtils.devUtils.formatMessage("%s %s %s (%c%s%c)"),
136
- (0, import_getTimestamp.getTimestamp)(),
137
- args.request.method,
138
- publicUrl,
135
+ import_devUtils.devUtils.formatMessage(
136
+ `${(0, import_getTimestamp.getTimestamp)()} ${args.request.method} ${publicUrl} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
137
+ ),
139
138
  `color:${statusColor}`,
140
- `${loggedResponse.status} ${loggedResponse.statusText}`,
141
139
  "color:inherit"
142
140
  );
143
141
  console.log("Request", loggedRequest);
@@ -112,12 +112,10 @@ class HttpHandler extends RequestHandler {
112
112
  const loggedResponse = yield serializeResponse(args.response);
113
113
  const statusColor = getStatusCodeColor(loggedResponse.status);
114
114
  console.groupCollapsed(
115
- devUtils.formatMessage("%s %s %s (%c%s%c)"),
116
- getTimestamp(),
117
- args.request.method,
118
- publicUrl,
115
+ devUtils.formatMessage(
116
+ `${getTimestamp()} ${args.request.method} ${publicUrl} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
117
+ ),
119
118
  `color:${statusColor}`,
120
- `${loggedResponse.status} ${loggedResponse.statusText}`,
121
119
  "color:inherit"
122
120
  );
123
121
  console.log("Request", loggedRequest);
@@ -1,2 +1,2 @@
1
- export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, M as MaybeAsyncResponseResolverReturnType, R as RequestHandler, m as RequestHandlerArgs, g as RequestHandlerDefaultInfo, n as RequestHandlerExecutionResult, k as RequestHandlerInternalInfo, c as RequestHandlerOptions, a as ResponseResolver, l as ResponseResolverInfo, b as ResponseResolverReturnType } from '../RequestHandler-1a5dbdc7.js';
1
+ export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, M as MaybeAsyncResponseResolverReturnType, R as RequestHandler, m as RequestHandlerArgs, g as RequestHandlerDefaultInfo, n as RequestHandlerExecutionResult, k as RequestHandlerInternalInfo, c as RequestHandlerOptions, a as ResponseResolver, l as ResponseResolverInfo, b as ResponseResolverReturnType } from '../RequestHandler-90c6ace3.js';
2
2
  import '../typeUtils.js';
@@ -105,12 +105,11 @@ class RequestHandler {
105
105
  */
106
106
  run(args) {
107
107
  return __async(this, null, function* () {
108
- var _a;
108
+ var _a, _b;
109
109
  if (this.isUsed && ((_a = this.options) == null ? void 0 : _a.once)) {
110
110
  return null;
111
111
  }
112
112
  const mainRequestRef = args.request.clone();
113
- this.isUsed = true;
114
113
  const parsedResult = yield this.parse({
115
114
  request: args.request,
116
115
  resolutionContext: args.resolutionContext
@@ -123,6 +122,10 @@ class RequestHandler {
123
122
  if (!shouldInterceptRequest) {
124
123
  return null;
125
124
  }
125
+ if (this.isUsed && ((_b = this.options) == null ? void 0 : _b.once)) {
126
+ return null;
127
+ }
128
+ this.isUsed = true;
126
129
  const executeResolver = this.wrapResolver(this.resolver);
127
130
  const resolverExtras = this.extendResolverArgs({
128
131
  request: args.request,
@@ -84,12 +84,11 @@ class RequestHandler {
84
84
  */
85
85
  run(args) {
86
86
  return __async(this, null, function* () {
87
- var _a;
87
+ var _a, _b;
88
88
  if (this.isUsed && ((_a = this.options) == null ? void 0 : _a.once)) {
89
89
  return null;
90
90
  }
91
91
  const mainRequestRef = args.request.clone();
92
- this.isUsed = true;
93
92
  const parsedResult = yield this.parse({
94
93
  request: args.request,
95
94
  resolutionContext: args.resolutionContext
@@ -102,6 +101,10 @@ class RequestHandler {
102
101
  if (!shouldInterceptRequest) {
103
102
  return null;
104
103
  }
104
+ if (this.isUsed && ((_b = this.options) == null ? void 0 : _b.once)) {
105
+ return null;
106
+ }
107
+ this.isUsed = true;
105
108
  const executeResolver = this.wrapResolver(this.resolver);
106
109
  const resolverExtras = this.extendResolverArgs({
107
110
  request: args.request,
@@ -1,4 +1,4 @@
1
- import { D as DefaultBodyType, a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-1a5dbdc7.js';
1
+ import { D as DefaultBodyType, a as ResponseResolver, c as RequestHandlerOptions } from './RequestHandler-90c6ace3.js';
2
2
  import { HttpRequestResolverExtras, HttpHandler } from './handlers/HttpHandler.js';
3
3
  import { PathParams, Path } from './utils/matching/matchRequestUrl.js';
4
4
  import './typeUtils.js';
@@ -1,9 +1,9 @@
1
1
  export { SetupApi } from './SetupApi.js';
2
- export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, f as HttpResponse, H as HttpResponseInit, R as RequestHandler, c as RequestHandlerOptions, a as ResponseResolver, b as ResponseResolverReturnType, S as StrictRequest, e as StrictResponse } from './RequestHandler-1a5dbdc7.js';
2
+ export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, f as HttpResponse, H as HttpResponseInit, R as RequestHandler, c as RequestHandlerOptions, a as ResponseResolver, b as ResponseResolverReturnType, S as StrictRequest, e as StrictResponse } from './RequestHandler-90c6ace3.js';
3
3
  export { http } from './http.js';
4
4
  export { HttpHandler, HttpMethods, HttpRequestParsedResult, RequestQuery } from './handlers/HttpHandler.js';
5
5
  export { graphql } from './graphql.js';
6
- export { G as GraphQLHandler, c as GraphQLJsonRequestBody, b as GraphQLRequestBody, a as GraphQLVariables, P as ParsedGraphQLRequest } from './GraphQLHandler-b42ca96f.js';
6
+ export { G as GraphQLHandler, c as GraphQLJsonRequestBody, b as GraphQLRequestBody, a as GraphQLVariables, P as ParsedGraphQLRequest } from './GraphQLHandler-8be65628.js';
7
7
  export { Match, Path, PathParams, matchRequestUrl } from './utils/matching/matchRequestUrl.js';
8
8
  export { HandleRequestOptions, handleRequest } from './utils/handleRequest.js';
9
9
  export { cleanUrl } from './utils/url/cleanUrl.js';
@@ -1,6 +1,6 @@
1
1
  import { Emitter } from 'strict-event-emitter';
2
2
  import { UnhandledRequestStrategy } from './utils/request/onUnhandledRequest.js';
3
- import './RequestHandler-1a5dbdc7.js';
3
+ import './RequestHandler-90c6ace3.js';
4
4
  import './typeUtils.js';
5
5
 
6
6
  interface SharedOptions {
@@ -1,4 +1,4 @@
1
- import { H as HttpResponseInit } from '../../RequestHandler-1a5dbdc7.js';
1
+ import { H as HttpResponseInit } from '../../RequestHandler-90c6ace3.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  interface HttpResponseDecoratedInit extends HttpResponseInit {
@@ -1,2 +1,2 @@
1
- export { h as ResponseLookupResult, i as ResponseResolutionContext, j as getResponse } from '../RequestHandler-1a5dbdc7.js';
1
+ export { h as ResponseLookupResult, i as ResponseResolutionContext, j as getResponse } from '../RequestHandler-90c6ace3.js';
2
2
  import '../typeUtils.js';
@@ -1,5 +1,5 @@
1
1
  import { Emitter } from 'strict-event-emitter';
2
- import { h as ResponseLookupResult, R as RequestHandler } from '../RequestHandler-1a5dbdc7.js';
2
+ import { h as ResponseLookupResult, R as RequestHandler } from '../RequestHandler-90c6ace3.js';
3
3
  import { SharedOptions, LifeCycleEventsMap } from '../sharedOptions.js';
4
4
  import { RequiredDeep } from '../typeUtils.js';
5
5
  import './request/onUnhandledRequest.js';
@@ -1,5 +1,5 @@
1
1
  import 'graphql';
2
- export { i as GraphQLMultipartRequestBody, h as GraphQLParsedOperationsMap, g as ParsedGraphQLQuery, P as ParsedGraphQLRequest, p as parseDocumentNode, j as parseGraphQLRequest } from '../../GraphQLHandler-b42ca96f.js';
3
- import '../../RequestHandler-1a5dbdc7.js';
2
+ export { i as GraphQLMultipartRequestBody, h as GraphQLParsedOperationsMap, g as ParsedGraphQLQuery, P as ParsedGraphQLRequest, p as parseDocumentNode, j as parseGraphQLRequest } from '../../GraphQLHandler-8be65628.js';
3
+ import '../../RequestHandler-90c6ace3.js';
4
4
  import '../../typeUtils.js';
5
5
  import '../matching/matchRequestUrl.js';
@@ -1,4 +1,4 @@
1
- import { d as DefaultRequestMultipartBody } from '../../RequestHandler-1a5dbdc7.js';
1
+ import { d as DefaultRequestMultipartBody } from '../../RequestHandler-90c6ace3.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-1a5dbdc7.js';
1
+ import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-90c6ace3.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  declare function use(currentHandlers: Array<RequestHandler>, ...handlers: Array<RequestHandler>): void;
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler } from '../../RequestHandler-1a5dbdc7.js';
1
+ import { R as RequestHandler } from '../../RequestHandler-90c6ace3.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  interface UnhandledRequestPrint {
package/lib/iife/index.js CHANGED
@@ -547,12 +547,11 @@ var MockServiceWorker = (() => {
547
547
  */
548
548
  run(args) {
549
549
  return __async(this, null, function* () {
550
- var _a3;
550
+ var _a3, _b2;
551
551
  if (this.isUsed && ((_a3 = this.options) == null ? void 0 : _a3.once)) {
552
552
  return null;
553
553
  }
554
554
  const mainRequestRef = args.request.clone();
555
- this.isUsed = true;
556
555
  const parsedResult = yield this.parse({
557
556
  request: args.request,
558
557
  resolutionContext: args.resolutionContext
@@ -565,6 +564,10 @@ var MockServiceWorker = (() => {
565
564
  if (!shouldInterceptRequest) {
566
565
  return null;
567
566
  }
567
+ if (this.isUsed && ((_b2 = this.options) == null ? void 0 : _b2.once)) {
568
+ return null;
569
+ }
570
+ this.isUsed = true;
568
571
  const executeResolver = this.wrapResolver(this.resolver);
569
572
  const resolverExtras = this.extendResolverArgs({
570
573
  request: args.request,
@@ -2380,12 +2383,10 @@ Invalid value has been removed from localStorage to prevent subsequent failed pa
2380
2383
  const loggedResponse = yield serializeResponse(args.response);
2381
2384
  const statusColor = getStatusCodeColor(loggedResponse.status);
2382
2385
  console.groupCollapsed(
2383
- devUtils.formatMessage("%s %s %s (%c%s%c)"),
2384
- getTimestamp(),
2385
- args.request.method,
2386
- publicUrl,
2386
+ devUtils.formatMessage(
2387
+ `${getTimestamp()} ${args.request.method} ${publicUrl} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
2388
+ ),
2387
2389
  `color:${statusColor}`,
2388
- `${loggedResponse.status} ${loggedResponse.statusText}`,
2389
2390
  "color:inherit"
2390
2391
  );
2391
2392
  console.log("Request", loggedRequest);
@@ -5566,11 +5567,10 @@ Consider naming this operation or using "graphql.operation()" request handler to
5566
5567
  const statusColor = getStatusCodeColor(loggedResponse.status);
5567
5568
  const requestInfo = ((_a3 = args.parsedResult) == null ? void 0 : _a3.operationName) ? `${(_b2 = args.parsedResult) == null ? void 0 : _b2.operationType} ${(_c = args.parsedResult) == null ? void 0 : _c.operationName}` : `anonymous ${(_d = args.parsedResult) == null ? void 0 : _d.operationType}`;
5568
5569
  console.groupCollapsed(
5569
- devUtils.formatMessage("%s %s (%c%s%c)"),
5570
- getTimestamp(),
5571
- `${requestInfo}`,
5570
+ devUtils.formatMessage(
5571
+ `${getTimestamp()} ${requestInfo} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`
5572
+ ),
5572
5573
  `color:${statusColor}`,
5573
- `${loggedResponse.status} ${loggedResponse.statusText}`,
5574
5574
  "color:inherit"
5575
5575
  );
5576
5576
  console.log("Request:", loggedRequest);
@@ -6369,18 +6369,18 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
6369
6369
  const responseCloneForLogs = response.clone();
6370
6370
  const responseInit = toResponseInit(response);
6371
6371
  if (context.supports.readableStreamTransfer) {
6372
- const responseStream = response.body;
6372
+ const responseStreamOrNull = response.body;
6373
6373
  messageChannel.postMessage(
6374
6374
  "MOCK_RESPONSE",
6375
6375
  __spreadProps(__spreadValues({}, responseInit), {
6376
- body: responseStream
6376
+ body: responseStreamOrNull
6377
6377
  }),
6378
- responseStream ? [responseStream] : void 0
6378
+ responseStreamOrNull ? [responseStreamOrNull] : void 0
6379
6379
  );
6380
6380
  } else {
6381
- const responseBuffer = yield responseClone.arrayBuffer();
6381
+ const responseBufferOrNull = response.body === null ? null : yield responseClone.arrayBuffer();
6382
6382
  messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, responseInit), {
6383
- body: responseBuffer
6383
+ body: responseBufferOrNull
6384
6384
  }));
6385
6385
  }
6386
6386
  if (!options.quiet) {
@@ -2,7 +2,7 @@
2
2
  /* tslint:disable */
3
3
 
4
4
  /**
5
- * Mock Service Worker (2.0.1).
5
+ * Mock Service Worker (2.0.3).
6
6
  * @see https://github.com/mswjs/msw
7
7
  * - Please do NOT modify this file.
8
8
  * - Please do NOT serve this file on production.
@@ -54,9 +54,9 @@ var import_mergeRight = require("../core/utils/internal/mergeRight.js");
54
54
  var import_handleRequest = require("../core/utils/handleRequest.js");
55
55
  var import_devUtils = require("../core/utils/internal/devUtils.js");
56
56
 
57
- // src/node/utils/isNodeException.ts
58
- function isNodeException(error) {
59
- return error instanceof Error && "code" in error;
57
+ // src/node/utils/isNodeExceptionLike.ts
58
+ function isNodeExceptionLike(error) {
59
+ return !!error && typeof error === "object" && "code" in error;
60
60
  }
61
61
 
62
62
  // src/node/SetupServerApi.ts
@@ -85,7 +85,7 @@ var SetupServerApi = class extends import_SetupApi.SetupApi {
85
85
  request.signal
86
86
  );
87
87
  } catch (error) {
88
- if (!(isNodeException(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
88
+ if (!(isNodeExceptionLike(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
89
89
  throw error;
90
90
  }
91
91
  }
@@ -34,9 +34,9 @@ import { mergeRight } from '../core/utils/internal/mergeRight.mjs';
34
34
  import { handleRequest } from '../core/utils/handleRequest.mjs';
35
35
  import { devUtils } from '../core/utils/internal/devUtils.mjs';
36
36
 
37
- // src/node/utils/isNodeException.ts
38
- function isNodeException(error) {
39
- return error instanceof Error && "code" in error;
37
+ // src/node/utils/isNodeExceptionLike.ts
38
+ function isNodeExceptionLike(error) {
39
+ return !!error && typeof error === "object" && "code" in error;
40
40
  }
41
41
 
42
42
  // src/node/SetupServerApi.ts
@@ -65,7 +65,7 @@ var SetupServerApi = class extends SetupApi {
65
65
  request.signal
66
66
  );
67
67
  } catch (error) {
68
- if (!(isNodeException(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
68
+ if (!(isNodeExceptionLike(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
69
69
  throw error;
70
70
  }
71
71
  }
package/lib/node/index.js CHANGED
@@ -54,9 +54,9 @@ var import_mergeRight = require("../core/utils/internal/mergeRight.js");
54
54
  var import_handleRequest = require("../core/utils/handleRequest.js");
55
55
  var import_devUtils = require("../core/utils/internal/devUtils.js");
56
56
 
57
- // src/node/utils/isNodeException.ts
58
- function isNodeException(error) {
59
- return error instanceof Error && "code" in error;
57
+ // src/node/utils/isNodeExceptionLike.ts
58
+ function isNodeExceptionLike(error) {
59
+ return !!error && typeof error === "object" && "code" in error;
60
60
  }
61
61
 
62
62
  // src/node/SetupServerApi.ts
@@ -85,7 +85,7 @@ var SetupServerApi = class extends import_SetupApi.SetupApi {
85
85
  request.signal
86
86
  );
87
87
  } catch (error) {
88
- if (!(isNodeException(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
88
+ if (!(isNodeExceptionLike(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
89
89
  throw error;
90
90
  }
91
91
  }
@@ -31,9 +31,9 @@ import { mergeRight } from '../core/utils/internal/mergeRight.mjs';
31
31
  import { handleRequest } from '../core/utils/handleRequest.mjs';
32
32
  import { devUtils } from '../core/utils/internal/devUtils.mjs';
33
33
 
34
- // src/node/utils/isNodeException.ts
35
- function isNodeException(error) {
36
- return error instanceof Error && "code" in error;
34
+ // src/node/utils/isNodeExceptionLike.ts
35
+ function isNodeExceptionLike(error) {
36
+ return !!error && typeof error === "object" && "code" in error;
37
37
  }
38
38
 
39
39
  // src/node/SetupServerApi.ts
@@ -62,7 +62,7 @@ var SetupServerApi = class extends SetupApi {
62
62
  request.signal
63
63
  );
64
64
  } catch (error) {
65
- if (!(isNodeException(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
65
+ if (!(isNodeExceptionLike(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
66
66
  throw error;
67
67
  }
68
68
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "msw",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Seamless REST/GraphQL API mocking library for browser and Node.js.",
5
5
  "main": "./lib/core/index.js",
6
6
  "module": "./lib/core/index.mjs",
@@ -123,11 +123,9 @@
123
123
  "@ossjs/release": "^0.8.0",
124
124
  "@playwright/test": "^1.30.0",
125
125
  "@swc/core": "^1.3.35",
126
- "@swc/jest": "^0.2.24",
127
126
  "@types/express": "^4.17.17",
128
127
  "@types/fs-extra": "^9.0.13",
129
128
  "@types/glob": "^8.1.0",
130
- "@types/jest": "^29.4.0",
131
129
  "@types/json-bigint": "^1.0.1",
132
130
  "@types/node": "18.x",
133
131
  "@types/node-fetch": "^2.5.11",
@@ -150,8 +148,7 @@
150
148
  "fs-extra": "^10.0.0",
151
149
  "fs-teardown": "^0.3.0",
152
150
  "glob": "^9.3.4",
153
- "jest": "^29.4.3",
154
- "jest-environment-jsdom": "^29.4.3",
151
+ "jsdom": "^22.1.0",
155
152
  "json-bigint": "^1.0.0",
156
153
  "lint-staged": "^13.0.3",
157
154
  "page-with": "^0.6.1",
@@ -164,6 +161,7 @@
164
161
  "typescript": "^5.0.2",
165
162
  "undici": "^5.20.0",
166
163
  "url-loader": "^4.1.1",
164
+ "vitest": "^0.34.6",
167
165
  "webpack": "^5.68.0",
168
166
  "webpack-dev-server": "^3.11.2",
169
167
  "webpack-http-server": "^0.5.0"
@@ -193,15 +191,14 @@
193
191
  "start": "tsup --watch",
194
192
  "clean": "rimraf ./lib",
195
193
  "lint": "eslint \"{cli,config,src,test}/**/*.ts\"",
196
- "prebuild": "rimraf ./lib",
197
194
  "build": "pnpm clean && cross-env NODE_ENV=production tsup && pnpm patch:dts",
198
195
  "patch:dts": "node \"./config/scripts/patch-ts.js\"",
199
196
  "check:exports": "node \"./config/scripts/validate-esm.js\"",
200
197
  "test": "pnpm test:unit && pnpm test:node && pnpm test:browser",
201
- "test:unit": "cross-env BABEL_ENV=test jest --maxWorkers=3",
202
- "test:node": "jest --config=./test/jest.config.js --forceExit",
198
+ "test:unit": "vitest",
199
+ "test:node": "vitest run --config=./test/node/vitest.config.ts",
203
200
  "test:browser": "playwright test -c ./test/browser/playwright.config.ts",
204
- "test:modules:node": "jest --config=./test/modules/node/jest.config.js",
201
+ "test:modules:node": "vitest run --config=./test/modules/node/vitest.config.ts",
205
202
  "test:modules:browser": "playwright test -c ./test/modules/browser/playwright.config.ts",
206
203
  "test:ts": "ts-node test/typings/run.ts",
207
204
  "release": "release publish",
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var import_http = require("./http.js");
3
- test("exports all REST API methods", () => {
4
- expect(import_http.http).toBeDefined();
5
- expect(Object.keys(import_http.http)).toEqual([
6
- "all",
7
- "head",
8
- "get",
9
- "post",
10
- "put",
11
- "delete",
12
- "patch",
13
- "options"
14
- ]);
15
- });
@@ -1,14 +0,0 @@
1
- import { http } from './http.mjs';
2
- test("exports all REST API methods", () => {
3
- expect(http).toBeDefined();
4
- expect(Object.keys(http)).toEqual([
5
- "all",
6
- "head",
7
- "get",
8
- "post",
9
- "put",
10
- "delete",
11
- "patch",
12
- "options"
13
- ]);
14
- });