msw 2.3.0-ws.rc-6 → 2.3.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.
Files changed (208) hide show
  1. package/README.md +3 -9
  2. package/cli/init.js +0 -0
  3. package/config/scripts/postinstall.js +0 -0
  4. package/lib/browser/index.d.mts +6 -7
  5. package/lib/browser/index.d.ts +6 -7
  6. package/lib/browser/index.js +156 -83
  7. package/lib/browser/index.js.map +1 -1
  8. package/lib/browser/index.mjs +156 -83
  9. package/lib/browser/index.mjs.map +1 -1
  10. package/lib/core/{GraphQLHandler-DGyzNtRQ.d.ts → GraphQLHandler-COiPfZ8k.d.ts} +1 -1
  11. package/lib/core/{GraphQLHandler-CzcXr7At.d.mts → GraphQLHandler-Dq_WRbKe.d.mts} +1 -1
  12. package/lib/core/{HttpResponse-BOzDwzB6.d.ts → HttpResponse-B07UKAkU.d.ts} +2 -2
  13. package/lib/core/{HttpResponse-CSyJ1cbO.d.mts → HttpResponse-C7niBMwb.d.mts} +2 -2
  14. package/lib/core/HttpResponse.d.mts +1 -1
  15. package/lib/core/HttpResponse.d.ts +1 -1
  16. package/lib/core/SetupApi.d.mts +12 -15
  17. package/lib/core/SetupApi.d.ts +12 -15
  18. package/lib/core/SetupApi.js +1 -3
  19. package/lib/core/SetupApi.js.map +1 -1
  20. package/lib/core/SetupApi.mjs +1 -3
  21. package/lib/core/SetupApi.mjs.map +1 -1
  22. package/lib/core/getResponse.d.mts +1 -1
  23. package/lib/core/getResponse.d.ts +1 -1
  24. package/lib/core/graphql.d.mts +2 -2
  25. package/lib/core/graphql.d.ts +2 -2
  26. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  27. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  28. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  29. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  30. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  31. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  32. package/lib/core/http.d.mts +1 -1
  33. package/lib/core/http.d.ts +1 -1
  34. package/lib/core/index.d.mts +2 -5
  35. package/lib/core/index.d.ts +2 -5
  36. package/lib/core/index.js +1 -5
  37. package/lib/core/index.js.map +1 -1
  38. package/lib/core/index.mjs +1 -7
  39. package/lib/core/index.mjs.map +1 -1
  40. package/lib/core/passthrough.d.mts +1 -1
  41. package/lib/core/passthrough.d.ts +1 -1
  42. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  43. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  44. package/lib/core/utils/executeHandlers.d.mts +1 -1
  45. package/lib/core/utils/executeHandlers.d.ts +1 -1
  46. package/lib/core/utils/executeHandlers.js +0 -4
  47. package/lib/core/utils/executeHandlers.js.map +1 -1
  48. package/lib/core/utils/executeHandlers.mjs +0 -6
  49. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  50. package/lib/core/utils/handleRequest.d.mts +2 -2
  51. package/lib/core/utils/handleRequest.d.ts +2 -2
  52. package/lib/core/utils/handleRequest.js.map +1 -1
  53. package/lib/core/utils/handleRequest.mjs.map +1 -1
  54. package/lib/core/utils/internal/Disposable.d.mts +2 -2
  55. package/lib/core/utils/internal/Disposable.d.ts +2 -2
  56. package/lib/core/utils/internal/Disposable.js +5 -2
  57. package/lib/core/utils/internal/Disposable.js.map +1 -1
  58. package/lib/core/utils/internal/Disposable.mjs +5 -2
  59. package/lib/core/utils/internal/Disposable.mjs.map +1 -1
  60. package/lib/core/utils/internal/devUtils.d.mts +10 -1
  61. package/lib/core/utils/internal/devUtils.d.ts +10 -1
  62. package/lib/core/utils/internal/devUtils.js +7 -0
  63. package/lib/core/utils/internal/devUtils.js.map +1 -1
  64. package/lib/core/utils/internal/devUtils.mjs +7 -0
  65. package/lib/core/utils/internal/devUtils.mjs.map +1 -1
  66. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  67. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  68. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  69. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  70. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  71. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  72. package/lib/core/utils/logging/getTimestamp.d.mts +1 -4
  73. package/lib/core/utils/logging/getTimestamp.d.ts +1 -4
  74. package/lib/core/utils/logging/getTimestamp.js +2 -6
  75. package/lib/core/utils/logging/getTimestamp.js.map +1 -1
  76. package/lib/core/utils/logging/getTimestamp.mjs +2 -6
  77. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
  78. package/lib/core/utils/matching/matchRequestUrl.d.mts +1 -2
  79. package/lib/core/utils/matching/matchRequestUrl.d.ts +1 -2
  80. package/lib/core/utils/matching/matchRequestUrl.js +0 -4
  81. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  82. package/lib/core/utils/matching/matchRequestUrl.mjs +0 -4
  83. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  84. package/lib/core/utils/matching/normalizePath.d.mts +1 -0
  85. package/lib/core/utils/matching/normalizePath.d.ts +1 -0
  86. package/lib/core/utils/matching/normalizePath.js.map +1 -1
  87. package/lib/core/utils/matching/normalizePath.mjs.map +1 -1
  88. package/lib/core/utils/request/onUnhandledRequest.js +3 -3
  89. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  90. package/lib/core/utils/request/onUnhandledRequest.mjs +4 -4
  91. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  92. package/lib/core/utils/url/cleanUrl.d.mts +2 -1
  93. package/lib/core/utils/url/cleanUrl.d.ts +2 -1
  94. package/lib/core/utils/url/cleanUrl.js +3 -0
  95. package/lib/core/utils/url/cleanUrl.js.map +1 -1
  96. package/lib/core/utils/url/cleanUrl.mjs +3 -0
  97. package/lib/core/utils/url/cleanUrl.mjs.map +1 -1
  98. package/lib/iife/index.js +180 -1103
  99. package/lib/iife/index.js.map +1 -1
  100. package/lib/mockServiceWorker.js +1 -1
  101. package/lib/native/index.d.mts +5 -6
  102. package/lib/native/index.d.ts +5 -6
  103. package/lib/native/index.js +5 -13
  104. package/lib/native/index.js.map +1 -1
  105. package/lib/native/index.mjs +6 -14
  106. package/lib/native/index.mjs.map +1 -1
  107. package/lib/node/index.d.mts +7 -8
  108. package/lib/node/index.d.ts +7 -8
  109. package/lib/node/index.js +5 -13
  110. package/lib/node/index.js.map +1 -1
  111. package/lib/node/index.mjs +6 -14
  112. package/lib/node/index.mjs.map +1 -1
  113. package/package.json +36 -29
  114. package/src/browser/setupWorker/glossary.ts +10 -10
  115. package/src/browser/setupWorker/setupWorker.ts +3 -34
  116. package/src/browser/setupWorker/stop/createStop.ts +0 -4
  117. package/src/core/SetupApi.ts +20 -28
  118. package/src/core/index.ts +1 -8
  119. package/src/core/utils/executeHandlers.ts +2 -6
  120. package/src/core/utils/handleRequest.ts +2 -1
  121. package/src/core/utils/internal/Disposable.ts +6 -3
  122. package/src/core/utils/internal/devUtils.test.ts +21 -0
  123. package/src/core/utils/internal/devUtils.ts +13 -0
  124. package/src/core/utils/logging/getTimestamp.test.ts +6 -20
  125. package/src/core/utils/logging/getTimestamp.ts +6 -11
  126. package/src/core/utils/matching/matchRequestUrl.test.ts +8 -41
  127. package/src/core/utils/matching/matchRequestUrl.ts +0 -4
  128. package/src/core/utils/matching/normalizePath.test.ts +7 -1
  129. package/src/core/utils/matching/normalizePath.ts +1 -0
  130. package/src/core/utils/request/onUnhandledRequest.test.ts +30 -4
  131. package/src/core/utils/request/onUnhandledRequest.ts +4 -4
  132. package/src/core/utils/url/cleanUrl.test.ts +8 -3
  133. package/src/core/utils/url/cleanUrl.ts +9 -1
  134. package/src/core/utils/url/getAbsoluteUrl.node.test.ts +3 -3
  135. package/src/core/utils/url/getAbsoluteUrl.test.ts +5 -5
  136. package/src/core/utils/url/isAbsoluteUrl.test.ts +7 -7
  137. package/src/node/SetupServerApi.ts +7 -8
  138. package/src/node/SetupServerCommonApi.ts +8 -15
  139. package/src/node/glossary.ts +7 -5
  140. package/src/node/setupServer.ts +1 -2
  141. package/lib/core/handlers/WebSocketHandler.d.mts +0 -32
  142. package/lib/core/handlers/WebSocketHandler.d.ts +0 -32
  143. package/lib/core/handlers/WebSocketHandler.js +0 -62
  144. package/lib/core/handlers/WebSocketHandler.js.map +0 -1
  145. package/lib/core/handlers/WebSocketHandler.mjs +0 -44
  146. package/lib/core/handlers/WebSocketHandler.mjs.map +0 -1
  147. package/lib/core/ws/WebSocketClientManager.d.mts +0 -58
  148. package/lib/core/ws/WebSocketClientManager.d.ts +0 -58
  149. package/lib/core/ws/WebSocketClientManager.js +0 -162
  150. package/lib/core/ws/WebSocketClientManager.js.map +0 -1
  151. package/lib/core/ws/WebSocketClientManager.mjs +0 -142
  152. package/lib/core/ws/WebSocketClientManager.mjs.map +0 -1
  153. package/lib/core/ws/handleWebSocketEvent.d.mts +0 -16
  154. package/lib/core/ws/handleWebSocketEvent.d.ts +0 -16
  155. package/lib/core/ws/handleWebSocketEvent.js +0 -56
  156. package/lib/core/ws/handleWebSocketEvent.js.map +0 -1
  157. package/lib/core/ws/handleWebSocketEvent.mjs +0 -36
  158. package/lib/core/ws/handleWebSocketEvent.mjs.map +0 -1
  159. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +0 -34
  160. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +0 -34
  161. package/lib/core/ws/utils/attachWebSocketLogger.js +0 -217
  162. package/lib/core/ws/utils/attachWebSocketLogger.js.map +0 -1
  163. package/lib/core/ws/utils/attachWebSocketLogger.mjs +0 -197
  164. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +0 -1
  165. package/lib/core/ws/utils/getMessageLength.d.mts +0 -11
  166. package/lib/core/ws/utils/getMessageLength.d.ts +0 -11
  167. package/lib/core/ws/utils/getMessageLength.js +0 -33
  168. package/lib/core/ws/utils/getMessageLength.js.map +0 -1
  169. package/lib/core/ws/utils/getMessageLength.mjs +0 -13
  170. package/lib/core/ws/utils/getMessageLength.mjs.map +0 -1
  171. package/lib/core/ws/utils/getPublicData.d.mts +0 -5
  172. package/lib/core/ws/utils/getPublicData.d.ts +0 -5
  173. package/lib/core/ws/utils/getPublicData.js +0 -36
  174. package/lib/core/ws/utils/getPublicData.js.map +0 -1
  175. package/lib/core/ws/utils/getPublicData.mjs +0 -16
  176. package/lib/core/ws/utils/getPublicData.mjs.map +0 -1
  177. package/lib/core/ws/utils/truncateMessage.d.mts +0 -3
  178. package/lib/core/ws/utils/truncateMessage.d.ts +0 -3
  179. package/lib/core/ws/utils/truncateMessage.js +0 -31
  180. package/lib/core/ws/utils/truncateMessage.js.map +0 -1
  181. package/lib/core/ws/utils/truncateMessage.mjs +0 -11
  182. package/lib/core/ws/utils/truncateMessage.mjs.map +0 -1
  183. package/lib/core/ws/webSocketInterceptor.d.mts +0 -5
  184. package/lib/core/ws/webSocketInterceptor.d.ts +0 -5
  185. package/lib/core/ws/webSocketInterceptor.js +0 -26
  186. package/lib/core/ws/webSocketInterceptor.js.map +0 -1
  187. package/lib/core/ws/webSocketInterceptor.mjs +0 -6
  188. package/lib/core/ws/webSocketInterceptor.mjs.map +0 -1
  189. package/lib/core/ws.d.mts +0 -49
  190. package/lib/core/ws.d.ts +0 -49
  191. package/lib/core/ws.js +0 -65
  192. package/lib/core/ws.js.map +0 -1
  193. package/lib/core/ws.mjs +0 -48
  194. package/lib/core/ws.mjs.map +0 -1
  195. package/src/core/handlers/WebSocketHandler.ts +0 -71
  196. package/src/core/ws/WebSocketClientManager.test.ts +0 -157
  197. package/src/core/ws/WebSocketClientManager.ts +0 -234
  198. package/src/core/ws/handleWebSocketEvent.ts +0 -56
  199. package/src/core/ws/utils/attachWebSocketLogger.ts +0 -269
  200. package/src/core/ws/utils/getMessageLength.test.ts +0 -16
  201. package/src/core/ws/utils/getMessageLength.ts +0 -19
  202. package/src/core/ws/utils/getPublicData.test.ts +0 -38
  203. package/src/core/ws/utils/getPublicData.ts +0 -17
  204. package/src/core/ws/utils/truncateMessage.test.ts +0 -12
  205. package/src/core/ws/utils/truncateMessage.ts +0 -9
  206. package/src/core/ws/webSocketInterceptor.ts +0 -3
  207. package/src/core/ws.test.ts +0 -23
  208. package/src/core/ws.ts +0 -124
package/README.md CHANGED
@@ -17,15 +17,9 @@
17
17
  <p align="center">Mock Service Worker (MSW) is a seamless REST/GraphQL API mocking library for browser and Node.js.</p>
18
18
 
19
19
  <p align="center">
20
- <a href="https://www.npmjs.com/package/msw" target="_blank">
21
- <img src="https://img.shields.io/npm/v/msw.svg?style=for-the-badge&label=Latest&color=black" alt="Package version" />
22
- </a>
23
- <a href="https://www.npmjs.com/package/msw" target="_blank">
24
- <img src="https://img.shields.io/npm/dm/msw?style=for-the-badge&color=black" alt="Downloads per month" />
25
- </a>
26
- <a href="https://kettanaito.com/discord" target="_blank">
27
- <img src="https://img.shields.io/badge/chat-online-green?style=for-the-badge&color=black" alt="Discord server" />
28
- </a>
20
+ <a href="https://www.npmjs.com/package/msw" target="_blank"><img src="https://img.shields.io/npm/v/msw.svg?style=for-the-badge&label=Latest&color=black" alt="Package version" /></a>
21
+ <a href="https://www.npmjs.com/package/msw" target="_blank"><img src="https://img.shields.io/npm/dm/msw?style=for-the-badge&color=black" alt="Downloads per month" /></a>
22
+ <a href="https://kettanaito.com/discord" target="_blank"><img src="https://img.shields.io/badge/chat-online-green?style=for-the-badge&color=black" alt="Discord server" /></a>
29
23
  </p>
30
24
 
31
25
  <br />
package/cli/init.js CHANGED
File without changes
File without changes
@@ -1,6 +1,5 @@
1
1
  import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions";
2
- import { RequestHandler } from "../core/handlers/RequestHandler";
3
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler";
2
+ import { RequestHandler, RequestHandlerDefaultInfo } from "../core/handlers/RequestHandler";
4
3
  import { SetupApi } from "../core/SetupApi";
5
4
 
6
5
  type FindWorker = (scriptUrl: string, mockServiceWorkerUrl: string) => boolean;
@@ -55,7 +54,7 @@ interface SetupWorker {
55
54
  *
56
55
  * @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()` API reference}
57
56
  */
58
- use: (...handlers: Array<RequestHandler | WebSocketHandler>) => void;
57
+ use: (...handlers: RequestHandler[]) => void;
59
58
  /**
60
59
  * Marks all request handlers that respond using `res.once()` as unused.
61
60
  *
@@ -68,13 +67,13 @@ interface SetupWorker {
68
67
  *
69
68
  * @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()` API reference}
70
69
  */
71
- resetHandlers: (...nextHandlers: Array<RequestHandler | WebSocketHandler>) => void;
70
+ resetHandlers: (...nextHandlers: RequestHandler[]) => void;
72
71
  /**
73
72
  * Returns a readonly list of currently active request handlers.
74
73
  *
75
74
  * @see {@link https://mswjs.io/docs/api/setup-worker/list-handlers `worker.listHandlers()` API reference}
76
75
  */
77
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
76
+ listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
78
77
  /**
79
78
  * Life-cycle events.
80
79
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
@@ -89,7 +88,7 @@ declare class SetupWorkerApi extends SetupApi<LifeCycleEventsMap> implements Set
89
88
  private startHandler;
90
89
  private stopHandler;
91
90
  private listeners;
92
- constructor(...handlers: Array<RequestHandler | WebSocketHandler>);
91
+ constructor(...handlers: Array<RequestHandler>);
93
92
  private createWorkerContext;
94
93
  start(options?: StartOptions): StartReturnType;
95
94
  stop(): void;
@@ -100,6 +99,6 @@ declare class SetupWorkerApi extends SetupApi<LifeCycleEventsMap> implements Set
100
99
  *
101
100
  * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker()` API reference}
102
101
  */
103
- declare function setupWorker(...handlers: Array<RequestHandler | WebSocketHandler>): SetupWorker;
102
+ declare function setupWorker(...handlers: Array<RequestHandler>): SetupWorker;
104
103
 
105
104
  export { type SetupWorker, SetupWorkerApi, type StartOptions, setupWorker };
@@ -1,6 +1,5 @@
1
1
  import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions";
2
- import { RequestHandler } from "../core/handlers/RequestHandler";
3
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler";
2
+ import { RequestHandler, RequestHandlerDefaultInfo } from "../core/handlers/RequestHandler";
4
3
  import { SetupApi } from "../core/SetupApi";
5
4
 
6
5
  type FindWorker = (scriptUrl: string, mockServiceWorkerUrl: string) => boolean;
@@ -55,7 +54,7 @@ interface SetupWorker {
55
54
  *
56
55
  * @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()` API reference}
57
56
  */
58
- use: (...handlers: Array<RequestHandler | WebSocketHandler>) => void;
57
+ use: (...handlers: RequestHandler[]) => void;
59
58
  /**
60
59
  * Marks all request handlers that respond using `res.once()` as unused.
61
60
  *
@@ -68,13 +67,13 @@ interface SetupWorker {
68
67
  *
69
68
  * @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()` API reference}
70
69
  */
71
- resetHandlers: (...nextHandlers: Array<RequestHandler | WebSocketHandler>) => void;
70
+ resetHandlers: (...nextHandlers: RequestHandler[]) => void;
72
71
  /**
73
72
  * Returns a readonly list of currently active request handlers.
74
73
  *
75
74
  * @see {@link https://mswjs.io/docs/api/setup-worker/list-handlers `worker.listHandlers()` API reference}
76
75
  */
77
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
76
+ listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
78
77
  /**
79
78
  * Life-cycle events.
80
79
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
@@ -89,7 +88,7 @@ declare class SetupWorkerApi extends SetupApi<LifeCycleEventsMap> implements Set
89
88
  private startHandler;
90
89
  private stopHandler;
91
90
  private listeners;
92
- constructor(...handlers: Array<RequestHandler | WebSocketHandler>);
91
+ constructor(...handlers: Array<RequestHandler>);
93
92
  private createWorkerContext;
94
93
  start(options?: StartOptions): StartReturnType;
95
94
  stop(): void;
@@ -100,6 +99,6 @@ declare class SetupWorkerApi extends SetupApi<LifeCycleEventsMap> implements Set
100
99
  *
101
100
  * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker()` API reference}
102
101
  */
103
- declare function setupWorker(...handlers: Array<RequestHandler | WebSocketHandler>): SetupWorker;
102
+ declare function setupWorker(...handlers: Array<RequestHandler>): SetupWorker;
104
103
 
105
104
  export { type SetupWorker, SetupWorkerApi, type StartOptions, setupWorker };
@@ -397,7 +397,7 @@ You can also automate this process and make the worker script update automatical
397
397
  }
398
398
  }
399
399
 
400
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-UJZOJSMP.mjs
400
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
401
401
  var encoder = new TextEncoder();
402
402
  function encodeBuffer(text) {
403
403
  return encoder.encode(text);
@@ -412,6 +412,17 @@ function toArrayBuffer(array) {
412
412
  array.byteOffset + array.byteLength
413
413
  );
414
414
  }
415
+
416
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OMISYKWR.mjs
417
+ var IS_PATCHED_MODULE = Symbol("isPatchedModule");
418
+ function isPropertyAccessible(obj, key) {
419
+ try {
420
+ obj[key];
421
+ return true;
422
+ } catch (e) {
423
+ return false;
424
+ }
425
+ }
415
426
  var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
416
427
  101,
417
428
  103,
@@ -422,9 +433,27 @@ var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
422
433
  function isResponseWithoutBody(status) {
423
434
  return RESPONSE_STATUS_CODES_WITHOUT_BODY.has(status);
424
435
  }
425
-
426
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-HAGW22AN.mjs
427
- var IS_PATCHED_MODULE = Symbol("isPatchedModule");
436
+ function createServerErrorResponse(body) {
437
+ return new Response(
438
+ JSON.stringify(
439
+ body instanceof Error ? {
440
+ name: body.name,
441
+ message: body.message,
442
+ stack: body.stack
443
+ } : body
444
+ ),
445
+ {
446
+ status: 500,
447
+ statusText: "Unhandled Exception",
448
+ headers: {
449
+ "Content-Type": "application/json"
450
+ }
451
+ }
452
+ );
453
+ }
454
+ function isResponseError(response) {
455
+ return isPropertyAccessible(response, "type") && response.type === "error";
456
+ }
428
457
 
429
458
  // node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
430
459
  var __defProp2 = Object.defineProperty;
@@ -863,7 +892,7 @@ var _Emitter = class {
863
892
  var Emitter = _Emitter;
864
893
  Emitter.defaultMaxListeners = 10;
865
894
 
866
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
895
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
867
896
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
868
897
  function getGlobalSymbol(symbol) {
869
898
  return (
@@ -1011,7 +1040,7 @@ function createRequestId() {
1011
1040
  return Math.random().toString(16).slice(2);
1012
1041
  }
1013
1042
 
1014
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1043
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1015
1044
  var BatchInterceptor = class extends Interceptor {
1016
1045
  constructor(options) {
1017
1046
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1185,7 +1214,6 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
1185
1214
 
1186
1215
  // src/browser/setupWorker/stop/createStop.ts
1187
1216
  var import_devUtils9 = require("../core/utils/internal/devUtils.js");
1188
- var import_WebSocketClientManager = require("../core/ws/WebSocketClientManager.js");
1189
1217
 
1190
1218
  // src/browser/setupWorker/stop/utils/printStopMessage.ts
1191
1219
  var import_devUtils8 = require("../core/utils/internal/devUtils.js");
@@ -1211,7 +1239,6 @@ var createStop = (context) => {
1211
1239
  context.workerChannel.send("MOCK_DEACTIVATE");
1212
1240
  context.isMockingEnabled = false;
1213
1241
  window.clearInterval(context.keepAliveInterval);
1214
- localStorage.removeItem(import_WebSocketClientManager.MSW_WEBSOCKET_CLIENTS_KEY);
1215
1242
  printStopMessage({ quiet: context.startOptions?.quiet });
1216
1243
  };
1217
1244
  };
@@ -1297,7 +1324,7 @@ var DeferredPromise = class extends Promise {
1297
1324
  }
1298
1325
  };
1299
1326
 
1300
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
1327
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
1301
1328
  var RequestController = class {
1302
1329
  constructor(request) {
1303
1330
  this.request = request;
@@ -1335,15 +1362,7 @@ async function emitAsync(emitter, eventName, ...data) {
1335
1362
  }
1336
1363
  }
1337
1364
 
1338
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-3FNUI33J.mjs
1339
- function isPropertyAccessible(obj, key) {
1340
- try {
1341
- obj[key];
1342
- return true;
1343
- } catch (e) {
1344
- return false;
1345
- }
1346
- }
1365
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-MAEPOYB6.mjs
1347
1366
  function canParseUrl(url) {
1348
1367
  try {
1349
1368
  new URL(url);
@@ -1396,64 +1415,113 @@ var _FetchInterceptor = class extends Interceptor {
1396
1415
  { once: true }
1397
1416
  );
1398
1417
  }
1399
- const resolverResult = await until(async () => {
1400
- const listenersFinished = emitAsync(this.emitter, "request", {
1401
- request: interactiveRequest,
1402
- requestId
1418
+ const responsePromise = new DeferredPromise();
1419
+ const respondWith = (response) => {
1420
+ this.logger.info("responding with a mock response:", response);
1421
+ if (this.emitter.listenerCount("response") > 0) {
1422
+ this.logger.info('emitting the "response" event...');
1423
+ const responseClone = response.clone();
1424
+ this.emitter.emit("response", {
1425
+ response: responseClone,
1426
+ isMockedResponse: true,
1427
+ request: interactiveRequest,
1428
+ requestId
1429
+ });
1430
+ }
1431
+ Object.defineProperty(response, "url", {
1432
+ writable: false,
1433
+ enumerable: true,
1434
+ configurable: false,
1435
+ value: request.url
1403
1436
  });
1404
- await Promise.race([
1405
- requestAborted,
1406
- // Put the listeners invocation Promise in the same race condition
1407
- // with the request abort Promise because otherwise awaiting the listeners
1408
- // would always yield some response (or undefined).
1409
- listenersFinished,
1410
- requestController.responsePromise
1411
- ]);
1412
- this.logger.info("all request listeners have been resolved!");
1413
- const mockedResponse2 = await requestController.responsePromise;
1414
- this.logger.info("event.respondWith called with:", mockedResponse2);
1415
- return mockedResponse2;
1416
- });
1437
+ responsePromise.resolve(response);
1438
+ };
1439
+ const errorWith = (reason) => {
1440
+ responsePromise.reject(reason);
1441
+ };
1442
+ const resolverResult = await until(
1443
+ async () => {
1444
+ const listenersFinished = emitAsync(this.emitter, "request", {
1445
+ request: interactiveRequest,
1446
+ requestId
1447
+ });
1448
+ await Promise.race([
1449
+ requestAborted,
1450
+ // Put the listeners invocation Promise in the same race condition
1451
+ // with the request abort Promise because otherwise awaiting the listeners
1452
+ // would always yield some response (or undefined).
1453
+ listenersFinished,
1454
+ requestController.responsePromise
1455
+ ]);
1456
+ this.logger.info("all request listeners have been resolved!");
1457
+ const mockedResponse2 = await requestController.responsePromise;
1458
+ this.logger.info("event.respondWith called with:", mockedResponse2);
1459
+ return mockedResponse2;
1460
+ }
1461
+ );
1417
1462
  if (requestAborted.state === "rejected") {
1418
- return Promise.reject(requestAborted.rejectionReason);
1463
+ this.logger.info(
1464
+ "request has been aborted:",
1465
+ requestAborted.rejectionReason
1466
+ );
1467
+ responsePromise.reject(requestAborted.rejectionReason);
1468
+ return responsePromise;
1419
1469
  }
1420
1470
  if (resolverResult.error) {
1421
- return Promise.reject(createNetworkError(resolverResult.error));
1471
+ this.logger.info(
1472
+ "request listerner threw an error:",
1473
+ resolverResult.error
1474
+ );
1475
+ if (resolverResult.error instanceof Response) {
1476
+ if (isResponseError(resolverResult.error)) {
1477
+ errorWith(createNetworkError(resolverResult.error));
1478
+ } else {
1479
+ respondWith(resolverResult.error);
1480
+ }
1481
+ }
1482
+ if (this.emitter.listenerCount("unhandledException") > 0) {
1483
+ await emitAsync(this.emitter, "unhandledException", {
1484
+ error: resolverResult.error,
1485
+ request,
1486
+ requestId,
1487
+ controller: {
1488
+ respondWith,
1489
+ errorWith
1490
+ }
1491
+ });
1492
+ if (responsePromise.state !== "pending") {
1493
+ return responsePromise;
1494
+ }
1495
+ }
1496
+ respondWith(createServerErrorResponse(resolverResult.error));
1497
+ return responsePromise;
1422
1498
  }
1423
1499
  const mockedResponse = resolverResult.data;
1424
1500
  if (mockedResponse && !((_a = request.signal) == null ? void 0 : _a.aborted)) {
1425
1501
  this.logger.info("received mocked response:", mockedResponse);
1426
- if (isPropertyAccessible(mockedResponse, "type") && mockedResponse.type === "error") {
1502
+ if (isResponseError(mockedResponse)) {
1427
1503
  this.logger.info(
1428
1504
  "received a network error response, rejecting the request promise..."
1429
1505
  );
1430
- return Promise.reject(createNetworkError(mockedResponse));
1506
+ errorWith(createNetworkError(mockedResponse));
1507
+ } else {
1508
+ respondWith(mockedResponse);
1431
1509
  }
1432
- const responseClone = mockedResponse.clone();
1433
- this.emitter.emit("response", {
1434
- response: responseClone,
1435
- isMockedResponse: true,
1436
- request: interactiveRequest,
1437
- requestId
1438
- });
1439
- Object.defineProperty(mockedResponse, "url", {
1440
- writable: false,
1441
- enumerable: true,
1442
- configurable: false,
1443
- value: request.url
1444
- });
1445
- return mockedResponse;
1510
+ return responsePromise;
1446
1511
  }
1447
1512
  this.logger.info("no mocked response received!");
1448
1513
  return pureFetch(request).then((response) => {
1449
- const responseClone = response.clone();
1450
- this.logger.info("original fetch performed", responseClone);
1451
- this.emitter.emit("response", {
1452
- response: responseClone,
1453
- isMockedResponse: false,
1454
- request: interactiveRequest,
1455
- requestId
1456
- });
1514
+ this.logger.info("original fetch performed", response);
1515
+ if (this.emitter.listenerCount("response") > 0) {
1516
+ this.logger.info('emitting the "response" event...');
1517
+ const responseClone = response.clone();
1518
+ this.emitter.emit("response", {
1519
+ response: responseClone,
1520
+ isMockedResponse: false,
1521
+ request: interactiveRequest,
1522
+ requestId
1523
+ });
1524
+ }
1457
1525
  return response;
1458
1526
  });
1459
1527
  };
@@ -1482,7 +1550,7 @@ function createNetworkError(cause) {
1482
1550
  });
1483
1551
  }
1484
1552
 
1485
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-VYFS2IF2.mjs
1553
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-732REFPX.mjs
1486
1554
  function concatArrayBuffer(left, right) {
1487
1555
  const result = new Uint8Array(left.byteLength + right.byteLength);
1488
1556
  result.set(left, 0);
@@ -2133,7 +2201,31 @@ function createXMLHttpRequestProxy({
2133
2201
  "request listener threw an exception, aborting request...",
2134
2202
  resolverResult.error
2135
2203
  );
2136
- xhrRequestController.errorWith(resolverResult.error);
2204
+ if (resolverResult.error instanceof Response) {
2205
+ if (isResponseError(resolverResult.error)) {
2206
+ xhrRequestController.errorWith(new TypeError("Network error"));
2207
+ } else {
2208
+ this.respondWith(resolverResult.error);
2209
+ }
2210
+ return;
2211
+ }
2212
+ if (emitter.listenerCount("unhandledException") > 0) {
2213
+ await emitAsync(emitter, "unhandledException", {
2214
+ error: resolverResult.error,
2215
+ request,
2216
+ requestId,
2217
+ controller: {
2218
+ respondWith: xhrRequestController.respondWith.bind(xhrRequestController),
2219
+ errorWith: xhrRequestController.errorWith.bind(xhrRequestController)
2220
+ }
2221
+ });
2222
+ if (originalRequest.readyState > XMLHttpRequest.OPENED) {
2223
+ return;
2224
+ }
2225
+ }
2226
+ xhrRequestController.respondWith(
2227
+ createServerErrorResponse(resolverResult.error)
2228
+ );
2137
2229
  return;
2138
2230
  }
2139
2231
  const mockedResponse = resolverResult.data;
@@ -2143,7 +2235,7 @@ function createXMLHttpRequestProxy({
2143
2235
  mockedResponse.status,
2144
2236
  mockedResponse.statusText
2145
2237
  );
2146
- if (mockedResponse.type === "error") {
2238
+ if (isResponseError(mockedResponse)) {
2147
2239
  this.logger.info(
2148
2240
  "received a network error response, rejecting the request promise..."
2149
2241
  );
@@ -2314,9 +2406,6 @@ function supportsReadableStreamTransfer() {
2314
2406
  }
2315
2407
 
2316
2408
  // src/browser/setupWorker/setupWorker.ts
2317
- var import_webSocketInterceptor = require("../core/ws/webSocketInterceptor.js");
2318
- var import_handleWebSocketEvent = require("../core/ws/handleWebSocketEvent.js");
2319
- var import_attachWebSocketLogger = require("../core/ws/utils/attachWebSocketLogger.js");
2320
2409
  var SetupWorkerApi = class extends import_SetupApi.SetupApi {
2321
2410
  context;
2322
2411
  startHandler = null;
@@ -2432,22 +2521,6 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
2432
2521
  DEFAULT_START_OPTIONS,
2433
2522
  options
2434
2523
  );
2435
- (0, import_handleWebSocketEvent.handleWebSocketEvent)({
2436
- getHandlers: () => {
2437
- return this.handlersController.currentHandlers();
2438
- },
2439
- onMockedConnection: (connection) => {
2440
- if (!this.context.startOptions.quiet) {
2441
- (0, import_attachWebSocketLogger.attachWebSocketLogger)(connection);
2442
- }
2443
- },
2444
- onPassthroughConnection() {
2445
- }
2446
- });
2447
- import_webSocketInterceptor.webSocketInterceptor.apply();
2448
- this.subscriptions.push(() => {
2449
- import_webSocketInterceptor.webSocketInterceptor.dispose();
2450
- });
2451
2524
  return await this.startHandler(this.context.startOptions, options);
2452
2525
  }
2453
2526
  stop() {