msw 2.5.2 → 2.6.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 (190) hide show
  1. package/lib/browser/index.d.mts +7 -6
  2. package/lib/browser/index.d.ts +7 -6
  3. package/lib/browser/index.js +29 -1
  4. package/lib/browser/index.js.map +1 -1
  5. package/lib/browser/index.mjs +29 -1
  6. package/lib/browser/index.mjs.map +1 -1
  7. package/lib/core/{GraphQLHandler-ClMB0BOy.d.mts → GraphQLHandler-Doool6Q_.d.mts} +1 -1
  8. package/lib/core/{GraphQLHandler-D6mLMXGZ.d.ts → GraphQLHandler-udzgBRPf.d.ts} +1 -1
  9. package/lib/core/{HttpResponse-vn-Pb4Bi.d.mts → HttpResponse-BLGmJolh.d.mts} +1 -1
  10. package/lib/core/{HttpResponse-DaYkf3ml.d.ts → HttpResponse-Cgbkdkje.d.ts} +1 -1
  11. package/lib/core/HttpResponse.d.mts +1 -1
  12. package/lib/core/HttpResponse.d.ts +1 -1
  13. package/lib/core/SetupApi.d.mts +15 -12
  14. package/lib/core/SetupApi.d.ts +15 -12
  15. package/lib/core/SetupApi.js +3 -1
  16. package/lib/core/SetupApi.js.map +1 -1
  17. package/lib/core/SetupApi.mjs +3 -1
  18. package/lib/core/SetupApi.mjs.map +1 -1
  19. package/lib/core/getResponse.d.mts +1 -1
  20. package/lib/core/getResponse.d.ts +1 -1
  21. package/lib/core/graphql.d.mts +2 -2
  22. package/lib/core/graphql.d.ts +2 -2
  23. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  24. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  25. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  26. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  27. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  28. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  29. package/lib/core/handlers/WebSocketHandler.d.mts +33 -0
  30. package/lib/core/handlers/WebSocketHandler.d.ts +33 -0
  31. package/lib/core/handlers/WebSocketHandler.js +120 -0
  32. package/lib/core/handlers/WebSocketHandler.js.map +1 -0
  33. package/lib/core/handlers/WebSocketHandler.mjs +102 -0
  34. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -0
  35. package/lib/core/http.d.mts +1 -1
  36. package/lib/core/http.d.ts +1 -1
  37. package/lib/core/index.d.mts +5 -2
  38. package/lib/core/index.d.ts +5 -2
  39. package/lib/core/index.js +5 -1
  40. package/lib/core/index.js.map +1 -1
  41. package/lib/core/index.mjs +7 -1
  42. package/lib/core/index.mjs.map +1 -1
  43. package/lib/core/passthrough.d.mts +1 -1
  44. package/lib/core/passthrough.d.ts +1 -1
  45. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  46. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  47. package/lib/core/utils/executeHandlers.d.mts +1 -1
  48. package/lib/core/utils/executeHandlers.d.ts +1 -1
  49. package/lib/core/utils/executeHandlers.js +4 -0
  50. package/lib/core/utils/executeHandlers.js.map +1 -1
  51. package/lib/core/utils/executeHandlers.mjs +6 -0
  52. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  53. package/lib/core/utils/handleRequest.d.mts +2 -2
  54. package/lib/core/utils/handleRequest.d.ts +2 -2
  55. package/lib/core/utils/handleRequest.js.map +1 -1
  56. package/lib/core/utils/handleRequest.mjs.map +1 -1
  57. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  58. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  59. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  60. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  61. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  62. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  63. package/lib/core/utils/logging/getTimestamp.d.mts +4 -1
  64. package/lib/core/utils/logging/getTimestamp.d.ts +4 -1
  65. package/lib/core/utils/logging/getTimestamp.js +6 -2
  66. package/lib/core/utils/logging/getTimestamp.js.map +1 -1
  67. package/lib/core/utils/logging/getTimestamp.mjs +6 -2
  68. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
  69. package/lib/core/utils/matching/matchRequestUrl.d.mts +2 -1
  70. package/lib/core/utils/matching/matchRequestUrl.d.ts +2 -1
  71. package/lib/core/utils/matching/matchRequestUrl.js +4 -0
  72. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  73. package/lib/core/utils/matching/matchRequestUrl.mjs +4 -0
  74. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  75. package/lib/core/ws/WebSocketClientManager.d.mts +63 -0
  76. package/lib/core/ws/WebSocketClientManager.d.ts +63 -0
  77. package/lib/core/ws/WebSocketClientManager.js +149 -0
  78. package/lib/core/ws/WebSocketClientManager.js.map +1 -0
  79. package/lib/core/ws/WebSocketClientManager.mjs +129 -0
  80. package/lib/core/ws/WebSocketClientManager.mjs.map +1 -0
  81. package/lib/core/ws/WebSocketClientStore.d.mts +13 -0
  82. package/lib/core/ws/WebSocketClientStore.d.ts +13 -0
  83. package/lib/core/ws/WebSocketClientStore.js +26 -0
  84. package/lib/core/ws/WebSocketClientStore.js.map +1 -0
  85. package/lib/core/ws/WebSocketClientStore.mjs +6 -0
  86. package/lib/core/ws/WebSocketClientStore.mjs.map +1 -0
  87. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +15 -0
  88. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +15 -0
  89. package/lib/core/ws/WebSocketIndexedDBClientStore.js +130 -0
  90. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -0
  91. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +110 -0
  92. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -0
  93. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +13 -0
  94. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +13 -0
  95. package/lib/core/ws/WebSocketMemoryClientStore.js +41 -0
  96. package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -0
  97. package/lib/core/ws/WebSocketMemoryClientStore.mjs +21 -0
  98. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -0
  99. package/lib/core/ws/handleWebSocketEvent.d.mts +19 -0
  100. package/lib/core/ws/handleWebSocketEvent.d.ts +19 -0
  101. package/lib/core/ws/handleWebSocketEvent.js +73 -0
  102. package/lib/core/ws/handleWebSocketEvent.js.map +1 -0
  103. package/lib/core/ws/handleWebSocketEvent.mjs +55 -0
  104. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -0
  105. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +12 -0
  106. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +12 -0
  107. package/lib/core/ws/utils/attachWebSocketLogger.js +198 -0
  108. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -0
  109. package/lib/core/ws/utils/attachWebSocketLogger.mjs +178 -0
  110. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -0
  111. package/lib/core/ws/utils/getMessageLength.d.mts +11 -0
  112. package/lib/core/ws/utils/getMessageLength.d.ts +11 -0
  113. package/lib/core/ws/utils/getMessageLength.js +33 -0
  114. package/lib/core/ws/utils/getMessageLength.js.map +1 -0
  115. package/lib/core/ws/utils/getMessageLength.mjs +13 -0
  116. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -0
  117. package/lib/core/ws/utils/getPublicData.d.mts +5 -0
  118. package/lib/core/ws/utils/getPublicData.d.ts +5 -0
  119. package/lib/core/ws/utils/getPublicData.js +36 -0
  120. package/lib/core/ws/utils/getPublicData.js.map +1 -0
  121. package/lib/core/ws/utils/getPublicData.mjs +16 -0
  122. package/lib/core/ws/utils/getPublicData.mjs.map +1 -0
  123. package/lib/core/ws/utils/truncateMessage.d.mts +3 -0
  124. package/lib/core/ws/utils/truncateMessage.d.ts +3 -0
  125. package/lib/core/ws/utils/truncateMessage.js +31 -0
  126. package/lib/core/ws/utils/truncateMessage.js.map +1 -0
  127. package/lib/core/ws/utils/truncateMessage.mjs +11 -0
  128. package/lib/core/ws/utils/truncateMessage.mjs.map +1 -0
  129. package/lib/core/ws/webSocketInterceptor.d.mts +5 -0
  130. package/lib/core/ws/webSocketInterceptor.d.ts +5 -0
  131. package/lib/core/ws/webSocketInterceptor.js +26 -0
  132. package/lib/core/ws/webSocketInterceptor.js.map +1 -0
  133. package/lib/core/ws/webSocketInterceptor.mjs +6 -0
  134. package/lib/core/ws/webSocketInterceptor.mjs.map +1 -0
  135. package/lib/core/ws.d.mts +75 -0
  136. package/lib/core/ws.d.ts +75 -0
  137. package/lib/core/ws.js +71 -0
  138. package/lib/core/ws.js.map +1 -0
  139. package/lib/core/ws.mjs +54 -0
  140. package/lib/core/ws.mjs.map +1 -0
  141. package/lib/iife/index.js +1413 -85
  142. package/lib/iife/index.js.map +1 -1
  143. package/lib/mockServiceWorker.js +1 -1
  144. package/lib/native/index.d.mts +6 -5
  145. package/lib/native/index.d.ts +6 -5
  146. package/lib/native/index.js +22 -4
  147. package/lib/native/index.js.map +1 -1
  148. package/lib/native/index.mjs +22 -4
  149. package/lib/native/index.mjs.map +1 -1
  150. package/lib/node/index.d.mts +8 -7
  151. package/lib/node/index.d.ts +8 -7
  152. package/lib/node/index.js +22 -4
  153. package/lib/node/index.js.map +1 -1
  154. package/lib/node/index.mjs +22 -4
  155. package/lib/node/index.mjs.map +1 -1
  156. package/package.json +10 -1
  157. package/src/browser/setupWorker/glossary.ts +10 -10
  158. package/src/browser/setupWorker/setupWorker.ts +32 -3
  159. package/src/browser/setupWorker/start/createRequestListener.ts +7 -1
  160. package/src/browser/setupWorker/start/createStartHandler.ts +5 -0
  161. package/src/browser/setupWorker/stop/createStop.ts +6 -0
  162. package/src/core/SetupApi.ts +28 -20
  163. package/src/core/handlers/WebSocketHandler.ts +142 -0
  164. package/src/core/index.ts +11 -1
  165. package/src/core/utils/executeHandlers.ts +6 -2
  166. package/src/core/utils/handleRequest.ts +1 -1
  167. package/src/core/utils/logging/getTimestamp.test.ts +20 -6
  168. package/src/core/utils/logging/getTimestamp.ts +11 -6
  169. package/src/core/utils/matching/matchRequestUrl.test.ts +44 -0
  170. package/src/core/utils/matching/matchRequestUrl.ts +4 -0
  171. package/src/core/ws/WebSocketClientManager.test.ts +164 -0
  172. package/src/core/ws/WebSocketClientManager.ts +211 -0
  173. package/src/core/ws/WebSocketClientStore.ts +14 -0
  174. package/src/core/ws/WebSocketIndexedDBClientStore.ts +145 -0
  175. package/src/core/ws/WebSocketMemoryClientStore.ts +27 -0
  176. package/src/core/ws/handleWebSocketEvent.ts +82 -0
  177. package/src/core/ws/utils/attachWebSocketLogger.ts +259 -0
  178. package/src/core/ws/utils/getMessageLength.test.ts +16 -0
  179. package/src/core/ws/utils/getMessageLength.ts +19 -0
  180. package/src/core/ws/utils/getPublicData.test.ts +38 -0
  181. package/src/core/ws/utils/getPublicData.ts +17 -0
  182. package/src/core/ws/utils/truncateMessage.test.ts +12 -0
  183. package/src/core/ws/utils/truncateMessage.ts +9 -0
  184. package/src/core/ws/webSocketInterceptor.ts +3 -0
  185. package/src/core/ws.test.ts +23 -0
  186. package/src/core/ws.ts +166 -0
  187. package/src/node/SetupServerApi.ts +8 -7
  188. package/src/node/SetupServerCommonApi.ts +29 -5
  189. package/src/node/glossary.ts +5 -7
  190. package/src/node/setupServer.ts +2 -1
@@ -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 './HttpResponse-vn-Pb4Bi.mjs';
2
+ import { g as RequestHandlerDefaultInfo, D as DefaultBodyType, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions } from './HttpResponse-BLGmJolh.mjs';
3
3
  import { Match, Path } from './utils/matching/matchRequestUrl.mjs';
4
4
 
5
5
  interface ParsedGraphQLQuery {
@@ -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 './HttpResponse-DaYkf3ml.js';
2
+ import { g as RequestHandlerDefaultInfo, D as DefaultBodyType, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions } from './HttpResponse-Cgbkdkje.js';
3
3
  import { Match, Path } from './utils/matching/matchRequestUrl.js';
4
4
 
5
5
  interface ParsedGraphQLQuery {
@@ -14,7 +14,7 @@ interface ResponseResolutionContext {
14
14
  * Returns the execution result object containing any matching request
15
15
  * handler and any mocked response it returned.
16
16
  */
17
- declare const executeHandlers: <Handlers extends Array<RequestHandler>>({ request, requestId, handlers, resolutionContext, }: {
17
+ declare const executeHandlers: <Handlers extends Array<unknown>>({ request, requestId, handlers, resolutionContext, }: {
18
18
  request: Request;
19
19
  requestId: string;
20
20
  handlers: Handlers;
@@ -14,7 +14,7 @@ interface ResponseResolutionContext {
14
14
  * Returns the execution result object containing any matching request
15
15
  * handler and any mocked response it returned.
16
16
  */
17
- declare const executeHandlers: <Handlers extends Array<RequestHandler>>({ request, requestId, handlers, resolutionContext, }: {
17
+ declare const executeHandlers: <Handlers extends Array<unknown>>({ request, requestId, handlers, resolutionContext, }: {
18
18
  request: Request;
19
19
  requestId: string;
20
20
  handlers: Handlers;
@@ -1,3 +1,3 @@
1
- export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './HttpResponse-vn-Pb4Bi.mjs';
1
+ export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './HttpResponse-BLGmJolh.mjs';
2
2
  import './typeUtils.mjs';
3
3
  import './utils/internal/isIterable.mjs';
@@ -1,3 +1,3 @@
1
- export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './HttpResponse-DaYkf3ml.js';
1
+ export { f as HttpResponse, H as HttpResponseInit, S as StrictRequest, e as StrictResponse } from './HttpResponse-Cgbkdkje.js';
2
2
  import './typeUtils.js';
3
3
  import './utils/internal/isIterable.js';
@@ -1,23 +1,26 @@
1
1
  import { EventMap, Emitter } from 'strict-event-emitter';
2
- import { R as RequestHandler, g as RequestHandlerDefaultInfo } from './HttpResponse-vn-Pb4Bi.mjs';
2
+ import { R as RequestHandler } from './HttpResponse-BLGmJolh.mjs';
3
3
  import { LifeCycleEventEmitter } from './sharedOptions.mjs';
4
4
  import { Disposable } from './utils/internal/Disposable.mjs';
5
+ import { WebSocketHandler } from './handlers/WebSocketHandler.mjs';
5
6
  import './utils/internal/isIterable.mjs';
6
7
  import './typeUtils.mjs';
7
8
  import './utils/request/onUnhandledRequest.mjs';
9
+ import '@mswjs/interceptors/WebSocket';
10
+ import './utils/matching/matchRequestUrl.mjs';
8
11
 
9
12
  declare abstract class HandlersController {
10
- abstract prepend(runtimeHandlers: Array<RequestHandler>): void;
11
- abstract reset(nextHandles: Array<RequestHandler>): void;
12
- abstract currentHandlers(): Array<RequestHandler>;
13
+ abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
14
+ abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
15
+ abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
13
16
  }
14
17
  declare class InMemoryHandlersController implements HandlersController {
15
18
  private initialHandlers;
16
19
  private handlers;
17
- constructor(initialHandlers: Array<RequestHandler>);
18
- prepend(runtimeHandles: Array<RequestHandler>): void;
19
- reset(nextHandlers: Array<RequestHandler>): void;
20
- currentHandlers(): Array<RequestHandler>;
20
+ constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
21
+ prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
22
+ reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
23
+ currentHandlers(): Array<RequestHandler | WebSocketHandler>;
21
24
  }
22
25
  /**
23
26
  * Generic class for the mock API setup.
@@ -27,12 +30,12 @@ declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
27
30
  protected readonly emitter: Emitter<EventsMap>;
28
31
  protected readonly publicEmitter: Emitter<EventsMap>;
29
32
  readonly events: LifeCycleEventEmitter<EventsMap>;
30
- constructor(...initialHandlers: Array<RequestHandler>);
33
+ constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
31
34
  private validateHandlers;
32
- use(...runtimeHandlers: Array<RequestHandler>): void;
35
+ use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
33
36
  restoreHandlers(): void;
34
- resetHandlers(...nextHandlers: Array<RequestHandler>): void;
35
- listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any, any>>;
37
+ resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
38
+ listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
36
39
  private createLifeCycleEvents;
37
40
  }
38
41
 
@@ -1,23 +1,26 @@
1
1
  import { EventMap, Emitter } from 'strict-event-emitter';
2
- import { R as RequestHandler, g as RequestHandlerDefaultInfo } from './HttpResponse-DaYkf3ml.js';
2
+ import { R as RequestHandler } from './HttpResponse-Cgbkdkje.js';
3
3
  import { LifeCycleEventEmitter } from './sharedOptions.js';
4
4
  import { Disposable } from './utils/internal/Disposable.js';
5
+ import { WebSocketHandler } from './handlers/WebSocketHandler.js';
5
6
  import './utils/internal/isIterable.js';
6
7
  import './typeUtils.js';
7
8
  import './utils/request/onUnhandledRequest.js';
9
+ import '@mswjs/interceptors/WebSocket';
10
+ import './utils/matching/matchRequestUrl.js';
8
11
 
9
12
  declare abstract class HandlersController {
10
- abstract prepend(runtimeHandlers: Array<RequestHandler>): void;
11
- abstract reset(nextHandles: Array<RequestHandler>): void;
12
- abstract currentHandlers(): Array<RequestHandler>;
13
+ abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
14
+ abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
15
+ abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
13
16
  }
14
17
  declare class InMemoryHandlersController implements HandlersController {
15
18
  private initialHandlers;
16
19
  private handlers;
17
- constructor(initialHandlers: Array<RequestHandler>);
18
- prepend(runtimeHandles: Array<RequestHandler>): void;
19
- reset(nextHandlers: Array<RequestHandler>): void;
20
- currentHandlers(): Array<RequestHandler>;
20
+ constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
21
+ prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
22
+ reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
23
+ currentHandlers(): Array<RequestHandler | WebSocketHandler>;
21
24
  }
22
25
  /**
23
26
  * Generic class for the mock API setup.
@@ -27,12 +30,12 @@ declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
27
30
  protected readonly emitter: Emitter<EventsMap>;
28
31
  protected readonly publicEmitter: Emitter<EventsMap>;
29
32
  readonly events: LifeCycleEventEmitter<EventsMap>;
30
- constructor(...initialHandlers: Array<RequestHandler>);
33
+ constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
31
34
  private validateHandlers;
32
- use(...runtimeHandlers: Array<RequestHandler>): void;
35
+ use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
33
36
  restoreHandlers(): void;
34
- resetHandlers(...nextHandlers: Array<RequestHandler>): void;
35
- listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any, any>>;
37
+ resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
38
+ listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
36
39
  private createLifeCycleEvents;
37
40
  }
38
41
 
@@ -84,7 +84,9 @@ class SetupApi extends import_Disposable.Disposable {
84
84
  }
85
85
  restoreHandlers() {
86
86
  this.handlersController.currentHandlers().forEach((handler) => {
87
- handler.isUsed = false;
87
+ if ("isUsed" in handler) {
88
+ handler.isUsed = false;
89
+ }
88
90
  });
89
91
  }
90
92
  resetHandlers(...nextHandlers) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport {\n RequestHandler,\n RequestHandlerDefaultInfo,\n} from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\n\nexport abstract class HandlersController {\n abstract prepend(runtimeHandlers: Array<RequestHandler>): void\n abstract reset(nextHandles: Array<RequestHandler>): void\n abstract currentHandlers(): Array<RequestHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler>\n\n constructor(private initialHandlers: Array<RequestHandler>) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(runtimeHandles: Array<RequestHandler>): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<RequestHandler>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(...runtimeHandlers: Array<RequestHandler>): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n handler.isUsed = false\n })\n }\n\n public resetHandlers(...nextHandlers: Array<RequestHandler>): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<\n RequestHandler<RequestHandlerDefaultInfo, any, any>\n > {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,kCAAkC;AAMlC,sBAAyB;AACzB,wBAA2B;AAC3B,6BAAgC;AAChC,wBAA2B;AAEpB,MAAe,mBAAmB;AAIzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YAAoB,iBAAwC;AAAxC;AAClB,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EAJQ;AAAA,EAMD,QAAQ,gBAA6C;AAC1D,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA2C;AACtD,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAAyC;AAC9C,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,6BAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAAwC;AACrD,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,oCAAmB;AACtC,SAAK,gBAAgB,IAAI,oCAAmB;AAC5C,sCAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAAkD;AAEzE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OAAO,iBAA8C;AAC1D;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,cAAQ,SAAS;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EAEO,iBAAiB,cAA2C;AACjE,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAEL;AACA,eAAO,wCAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,kCAAkC;AAGlC,sBAAyB;AACzB,wBAA2B;AAC3B,6BAAgC;AAChC,wBAA2B;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,6BAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,oCAAmB;AACtC,SAAK,gBAAgB,IAAI,oCAAmB;AAC5C,sCAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,eAAO,wCAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -59,7 +59,9 @@ class SetupApi extends Disposable {
59
59
  }
60
60
  restoreHandlers() {
61
61
  this.handlersController.currentHandlers().forEach((handler) => {
62
- handler.isUsed = false;
62
+ if ("isUsed" in handler) {
63
+ handler.isUsed = false;
64
+ }
63
65
  });
64
66
  }
65
67
  resetHandlers(...nextHandlers) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport {\n RequestHandler,\n RequestHandlerDefaultInfo,\n} from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\n\nexport abstract class HandlersController {\n abstract prepend(runtimeHandlers: Array<RequestHandler>): void\n abstract reset(nextHandles: Array<RequestHandler>): void\n abstract currentHandlers(): Array<RequestHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler>\n\n constructor(private initialHandlers: Array<RequestHandler>) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(runtimeHandles: Array<RequestHandler>): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<RequestHandler>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(...runtimeHandlers: Array<RequestHandler>): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n handler.isUsed = false\n })\n }\n\n public resetHandlers(...nextHandlers: Array<RequestHandler>): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<\n RequestHandler<RequestHandlerDefaultInfo, any, any>\n > {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAmB,eAAe;AAMlC,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAEpB,MAAe,mBAAmB;AAIzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YAAoB,iBAAwC;AAAxC;AAClB,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EAJQ;AAAA,EAMD,QAAQ,gBAA6C;AAC1D,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA2C;AACtD,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAAyC;AAC9C,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,WAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAAwC;AACrD,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,QAAmB;AACtC,SAAK,gBAAgB,IAAI,QAAmB;AAC5C,eAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAAkD;AAEzE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OAAO,iBAA8C;AAC1D;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,cAAQ,SAAS;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EAEO,iBAAiB,cAA2C;AACjE,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAEL;AACA,WAAO,gBAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAmB,eAAe;AAGlC,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,WAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,QAAmB;AACtC,SAAK,gBAAgB,IAAI,QAAmB;AAC5C,eAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,WAAO,gBAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler } from './HttpResponse-vn-Pb4Bi.mjs';
1
+ import { R as RequestHandler } from './HttpResponse-BLGmJolh.mjs';
2
2
  import './utils/internal/isIterable.mjs';
3
3
  import './typeUtils.mjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler } from './HttpResponse-DaYkf3ml.js';
1
+ import { R as RequestHandler } from './HttpResponse-Cgbkdkje.js';
2
2
  import './utils/internal/isIterable.js';
3
3
  import './typeUtils.js';
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { DocumentNode } from 'graphql';
2
- import { c as RequestHandlerOptions, a as ResponseResolver } from './HttpResponse-vn-Pb4Bi.mjs';
3
- import { a as GraphQLQuery, b as GraphQLVariables, e as GraphQLHandlerNameSelector, G as GraphQLHandler, f as GraphQLResolverExtras, g as GraphQLResponseBody } from './GraphQLHandler-ClMB0BOy.mjs';
2
+ import { c as RequestHandlerOptions, a as ResponseResolver } from './HttpResponse-BLGmJolh.mjs';
3
+ import { a as GraphQLQuery, b as GraphQLVariables, e as GraphQLHandlerNameSelector, G as GraphQLHandler, f as GraphQLResolverExtras, g as GraphQLResponseBody } from './GraphQLHandler-Doool6Q_.mjs';
4
4
  import { Path } from './utils/matching/matchRequestUrl.mjs';
5
5
  import './utils/internal/isIterable.mjs';
6
6
  import './typeUtils.mjs';
@@ -1,6 +1,6 @@
1
1
  import { DocumentNode } from 'graphql';
2
- import { c as RequestHandlerOptions, a as ResponseResolver } from './HttpResponse-DaYkf3ml.js';
3
- import { a as GraphQLQuery, b as GraphQLVariables, e as GraphQLHandlerNameSelector, G as GraphQLHandler, f as GraphQLResolverExtras, g as GraphQLResponseBody } from './GraphQLHandler-D6mLMXGZ.js';
2
+ import { c as RequestHandlerOptions, a as ResponseResolver } from './HttpResponse-Cgbkdkje.js';
3
+ import { a as GraphQLQuery, b as GraphQLVariables, e as GraphQLHandlerNameSelector, G as GraphQLHandler, f as GraphQLResolverExtras, g as GraphQLResponseBody } from './GraphQLHandler-udzgBRPf.js';
4
4
  import { Path } from './utils/matching/matchRequestUrl.js';
5
5
  import './utils/internal/isIterable.js';
6
6
  import './typeUtils.js';
@@ -1,6 +1,6 @@
1
1
  import 'graphql';
2
- import '../HttpResponse-vn-Pb4Bi.mjs';
2
+ import '../HttpResponse-BLGmJolh.mjs';
3
3
  import '../utils/matching/matchRequestUrl.mjs';
4
- export { E as ExpectedOperationTypeNode, G as GraphQLHandler, l as GraphQLHandlerInfo, e as GraphQLHandlerNameSelector, d as GraphQLJsonRequestBody, a as GraphQLQuery, c as GraphQLRequestBody, m as GraphQLRequestParsedResult, f as GraphQLResolverExtras, g as GraphQLResponseBody, b as GraphQLVariables, n as isDocumentNode } from '../GraphQLHandler-ClMB0BOy.mjs';
4
+ export { E as ExpectedOperationTypeNode, G as GraphQLHandler, l as GraphQLHandlerInfo, e as GraphQLHandlerNameSelector, d as GraphQLJsonRequestBody, a as GraphQLQuery, c as GraphQLRequestBody, m as GraphQLRequestParsedResult, f as GraphQLResolverExtras, g as GraphQLResponseBody, b as GraphQLVariables, n as isDocumentNode } from '../GraphQLHandler-Doool6Q_.mjs';
5
5
  import '../utils/internal/isIterable.mjs';
6
6
  import '../typeUtils.mjs';
@@ -1,6 +1,6 @@
1
1
  import 'graphql';
2
- import '../HttpResponse-DaYkf3ml.js';
2
+ import '../HttpResponse-Cgbkdkje.js';
3
3
  import '../utils/matching/matchRequestUrl.js';
4
- export { E as ExpectedOperationTypeNode, G as GraphQLHandler, l as GraphQLHandlerInfo, e as GraphQLHandlerNameSelector, d as GraphQLJsonRequestBody, a as GraphQLQuery, c as GraphQLRequestBody, m as GraphQLRequestParsedResult, f as GraphQLResolverExtras, g as GraphQLResponseBody, b as GraphQLVariables, n as isDocumentNode } from '../GraphQLHandler-D6mLMXGZ.js';
4
+ export { E as ExpectedOperationTypeNode, G as GraphQLHandler, l as GraphQLHandlerInfo, e as GraphQLHandlerNameSelector, d as GraphQLJsonRequestBody, a as GraphQLQuery, c as GraphQLRequestBody, m as GraphQLRequestParsedResult, f as GraphQLResolverExtras, g as GraphQLResponseBody, b as GraphQLVariables, n as isDocumentNode } from '../GraphQLHandler-udzgBRPf.js';
5
5
  import '../utils/internal/isIterable.js';
6
6
  import '../typeUtils.js';
@@ -1,4 +1,4 @@
1
- import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, h as ResponseResolutionContext } from '../HttpResponse-vn-Pb4Bi.mjs';
1
+ import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, h as ResponseResolutionContext } from '../HttpResponse-BLGmJolh.mjs';
2
2
  import { Path, Match, PathParams } from '../utils/matching/matchRequestUrl.mjs';
3
3
  import '../utils/internal/isIterable.mjs';
4
4
  import '../typeUtils.mjs';
@@ -1,4 +1,4 @@
1
- import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, h as ResponseResolutionContext } from '../HttpResponse-DaYkf3ml.js';
1
+ import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResolver, c as RequestHandlerOptions, h as ResponseResolutionContext } from '../HttpResponse-Cgbkdkje.js';
2
2
  import { Path, Match, PathParams } from '../utils/matching/matchRequestUrl.js';
3
3
  import '../utils/internal/isIterable.js';
4
4
  import '../typeUtils.js';
@@ -1,3 +1,3 @@
1
1
  import '../utils/internal/isIterable.mjs';
2
- export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, J as JsonBodyType, 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 '../HttpResponse-vn-Pb4Bi.mjs';
2
+ export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, J as JsonBodyType, 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 '../HttpResponse-BLGmJolh.mjs';
3
3
  import '../typeUtils.mjs';
@@ -1,3 +1,3 @@
1
1
  import '../utils/internal/isIterable.js';
2
- export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, J as JsonBodyType, 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 '../HttpResponse-DaYkf3ml.js';
2
+ export { A as AsyncResponseResolverReturnType, D as DefaultBodyType, d as DefaultRequestMultipartBody, J as JsonBodyType, 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 '../HttpResponse-Cgbkdkje.js';
3
3
  import '../typeUtils.js';
@@ -0,0 +1,33 @@
1
+ import { Emitter } from 'strict-event-emitter';
2
+ import { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket';
3
+ import { PathParams, Path, Match } from '../utils/matching/matchRequestUrl.mjs';
4
+
5
+ type WebSocketHandlerParsedResult = {
6
+ match: Match;
7
+ };
8
+ type WebSocketHandlerEventMap = {
9
+ connection: [args: WebSocketHandlerConnection];
10
+ };
11
+ interface WebSocketHandlerConnection extends WebSocketConnectionData {
12
+ params: PathParams;
13
+ }
14
+ declare const kEmitter: unique symbol;
15
+ declare const kDispatchEvent: unique symbol;
16
+ declare const kSender: unique symbol;
17
+ declare class WebSocketHandler {
18
+ private readonly url;
19
+ id: string;
20
+ callFrame?: string;
21
+ protected [kEmitter]: Emitter<WebSocketHandlerEventMap>;
22
+ constructor(url: Path);
23
+ parse(args: {
24
+ event: MessageEvent<WebSocketConnectionData>;
25
+ }): WebSocketHandlerParsedResult;
26
+ predicate(args: {
27
+ event: MessageEvent<WebSocketConnectionData>;
28
+ parsedResult: WebSocketHandlerParsedResult;
29
+ }): boolean;
30
+ [kDispatchEvent](event: MessageEvent<WebSocketConnectionData>): Promise<void>;
31
+ }
32
+
33
+ export { WebSocketHandler, type WebSocketHandlerConnection, type WebSocketHandlerEventMap, kDispatchEvent, kEmitter, kSender };
@@ -0,0 +1,33 @@
1
+ import { Emitter } from 'strict-event-emitter';
2
+ import { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket';
3
+ import { PathParams, Path, Match } from '../utils/matching/matchRequestUrl.js';
4
+
5
+ type WebSocketHandlerParsedResult = {
6
+ match: Match;
7
+ };
8
+ type WebSocketHandlerEventMap = {
9
+ connection: [args: WebSocketHandlerConnection];
10
+ };
11
+ interface WebSocketHandlerConnection extends WebSocketConnectionData {
12
+ params: PathParams;
13
+ }
14
+ declare const kEmitter: unique symbol;
15
+ declare const kDispatchEvent: unique symbol;
16
+ declare const kSender: unique symbol;
17
+ declare class WebSocketHandler {
18
+ private readonly url;
19
+ id: string;
20
+ callFrame?: string;
21
+ protected [kEmitter]: Emitter<WebSocketHandlerEventMap>;
22
+ constructor(url: Path);
23
+ parse(args: {
24
+ event: MessageEvent<WebSocketConnectionData>;
25
+ }): WebSocketHandlerParsedResult;
26
+ predicate(args: {
27
+ event: MessageEvent<WebSocketConnectionData>;
28
+ parsedResult: WebSocketHandlerParsedResult;
29
+ }): boolean;
30
+ [kDispatchEvent](event: MessageEvent<WebSocketConnectionData>): Promise<void>;
31
+ }
32
+
33
+ export { WebSocketHandler, type WebSocketHandlerConnection, type WebSocketHandlerEventMap, kDispatchEvent, kEmitter, kSender };
@@ -0,0 +1,120 @@
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 WebSocketHandler_exports = {};
20
+ __export(WebSocketHandler_exports, {
21
+ WebSocketHandler: () => WebSocketHandler,
22
+ kDispatchEvent: () => kDispatchEvent,
23
+ kEmitter: () => kEmitter,
24
+ kSender: () => kSender
25
+ });
26
+ module.exports = __toCommonJS(WebSocketHandler_exports);
27
+ var import_strict_event_emitter = require("strict-event-emitter");
28
+ var import_interceptors = require("@mswjs/interceptors");
29
+ var import_matchRequestUrl = require("../utils/matching/matchRequestUrl.js");
30
+ var import_getCallFrame = require("../utils/internal/getCallFrame.js");
31
+ const kEmitter = Symbol("kEmitter");
32
+ const kDispatchEvent = Symbol("kDispatchEvent");
33
+ const kSender = Symbol("kSender");
34
+ const kStopPropagationPatched = Symbol("kStopPropagationPatched");
35
+ const KOnStopPropagation = Symbol("KOnStopPropagation");
36
+ class WebSocketHandler {
37
+ constructor(url) {
38
+ this.url = url;
39
+ this.id = (0, import_interceptors.createRequestId)();
40
+ this[kEmitter] = new import_strict_event_emitter.Emitter();
41
+ this.callFrame = (0, import_getCallFrame.getCallFrame)(new Error());
42
+ }
43
+ id;
44
+ callFrame;
45
+ [kEmitter];
46
+ parse(args) {
47
+ const connection = args.event.data;
48
+ const match = (0, import_matchRequestUrl.matchRequestUrl)(connection.client.url, this.url);
49
+ return {
50
+ match
51
+ };
52
+ }
53
+ predicate(args) {
54
+ return args.parsedResult.match.matches;
55
+ }
56
+ async [kDispatchEvent](event) {
57
+ const parsedResult = this.parse({ event });
58
+ const connection = event.data;
59
+ const resolvedConnection = {
60
+ ...connection,
61
+ params: parsedResult.match.params || {}
62
+ };
63
+ connection.client.addEventListener(
64
+ "message",
65
+ createStopPropagationListener(this)
66
+ );
67
+ connection.client.addEventListener(
68
+ "close",
69
+ createStopPropagationListener(this)
70
+ );
71
+ connection.server.addEventListener(
72
+ "open",
73
+ createStopPropagationListener(this)
74
+ );
75
+ connection.server.addEventListener(
76
+ "message",
77
+ createStopPropagationListener(this)
78
+ );
79
+ connection.server.addEventListener(
80
+ "error",
81
+ createStopPropagationListener(this)
82
+ );
83
+ connection.server.addEventListener(
84
+ "close",
85
+ createStopPropagationListener(this)
86
+ );
87
+ this[kEmitter].emit("connection", resolvedConnection);
88
+ }
89
+ }
90
+ function createStopPropagationListener(handler) {
91
+ return function stopPropagationListener(event) {
92
+ const propagationStoppedAt = Reflect.get(event, "kPropagationStoppedAt");
93
+ if (propagationStoppedAt && handler.id !== propagationStoppedAt) {
94
+ event.stopImmediatePropagation();
95
+ return;
96
+ }
97
+ Object.defineProperty(event, KOnStopPropagation, {
98
+ value() {
99
+ Object.defineProperty(event, "kPropagationStoppedAt", {
100
+ value: handler.id
101
+ });
102
+ },
103
+ configurable: true
104
+ });
105
+ if (!Reflect.get(event, kStopPropagationPatched)) {
106
+ event.stopPropagation = new Proxy(event.stopPropagation, {
107
+ apply: (target, thisArg, args) => {
108
+ Reflect.get(event, KOnStopPropagation)?.call(handler);
109
+ return Reflect.apply(target, thisArg, args);
110
+ }
111
+ });
112
+ Object.defineProperty(event, kStopPropagationPatched, {
113
+ value: true,
114
+ // If something else attempts to redefine this, throw.
115
+ configurable: false
116
+ });
117
+ }
118
+ };
119
+ }
120
+ //# sourceMappingURL=WebSocketHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/handlers/WebSocketHandler.ts"],"sourcesContent":["import { Emitter } from 'strict-event-emitter'\nimport { createRequestId } from '@mswjs/interceptors'\nimport type { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket'\nimport {\n type Match,\n type Path,\n type PathParams,\n matchRequestUrl,\n} from '../utils/matching/matchRequestUrl'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\n\ntype WebSocketHandlerParsedResult = {\n match: Match\n}\n\nexport type WebSocketHandlerEventMap = {\n connection: [args: WebSocketHandlerConnection]\n}\n\nexport interface WebSocketHandlerConnection extends WebSocketConnectionData {\n params: PathParams\n}\n\nexport const kEmitter = Symbol('kEmitter')\nexport const kDispatchEvent = Symbol('kDispatchEvent')\nexport const kSender = Symbol('kSender')\nconst kStopPropagationPatched = Symbol('kStopPropagationPatched')\nconst KOnStopPropagation = Symbol('KOnStopPropagation')\n\nexport class WebSocketHandler {\n public id: string\n public callFrame?: string\n\n protected [kEmitter]: Emitter<WebSocketHandlerEventMap>\n\n constructor(private readonly url: Path) {\n this.id = createRequestId()\n\n this[kEmitter] = new Emitter()\n this.callFrame = getCallFrame(new Error())\n }\n\n public parse(args: {\n event: MessageEvent<WebSocketConnectionData>\n }): WebSocketHandlerParsedResult {\n const connection = args.event.data\n const match = matchRequestUrl(connection.client.url, this.url)\n\n return {\n match,\n }\n }\n\n public predicate(args: {\n event: MessageEvent<WebSocketConnectionData>\n parsedResult: WebSocketHandlerParsedResult\n }): boolean {\n return args.parsedResult.match.matches\n }\n\n async [kDispatchEvent](\n event: MessageEvent<WebSocketConnectionData>,\n ): Promise<void> {\n const parsedResult = this.parse({ event })\n const connection = event.data\n\n const resolvedConnection: WebSocketHandlerConnection = {\n ...connection,\n params: parsedResult.match.params || {},\n }\n\n // Support `event.stopPropagation()` for various client/server events.\n connection.client.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.client.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n connection.server.addEventListener(\n 'open',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'error',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n // Emit the connection event on the handler.\n // This is what the developer adds listeners for.\n this[kEmitter].emit('connection', resolvedConnection)\n }\n}\n\nfunction createStopPropagationListener(handler: WebSocketHandler) {\n return function stopPropagationListener(event: Event) {\n const propagationStoppedAt = Reflect.get(event, 'kPropagationStoppedAt') as\n | string\n | undefined\n\n if (propagationStoppedAt && handler.id !== propagationStoppedAt) {\n event.stopImmediatePropagation()\n return\n }\n\n Object.defineProperty(event, KOnStopPropagation, {\n value(this: WebSocketHandler) {\n Object.defineProperty(event, 'kPropagationStoppedAt', {\n value: handler.id,\n })\n },\n configurable: true,\n })\n\n // Since the same event instance is shared between all client/server objects,\n // make sure to patch its `stopPropagation` method only once.\n if (!Reflect.get(event, kStopPropagationPatched)) {\n event.stopPropagation = new Proxy(event.stopPropagation, {\n apply: (target, thisArg, args) => {\n Reflect.get(event, KOnStopPropagation)?.call(handler)\n return Reflect.apply(target, thisArg, args)\n },\n })\n\n Object.defineProperty(event, kStopPropagationPatched, {\n value: true,\n // If something else attempts to redefine this, throw.\n configurable: false,\n })\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAwB;AACxB,0BAAgC;AAEhC,6BAKO;AACP,0BAA6B;AActB,MAAM,WAAW,OAAO,UAAU;AAClC,MAAM,iBAAiB,OAAO,gBAAgB;AAC9C,MAAM,UAAU,OAAO,SAAS;AACvC,MAAM,0BAA0B,OAAO,yBAAyB;AAChE,MAAM,qBAAqB,OAAO,oBAAoB;AAE/C,MAAM,iBAAiB;AAAA,EAM5B,YAA6B,KAAW;AAAX;AAC3B,SAAK,SAAK,qCAAgB;AAE1B,SAAK,QAAQ,IAAI,IAAI,oCAAQ;AAC7B,SAAK,gBAAY,kCAAa,IAAI,MAAM,CAAC;AAAA,EAC3C;AAAA,EAVO;AAAA,EACA;AAAA,EAEP,CAAW,QAAQ;AAAA,EASZ,MAAM,MAEoB;AAC/B,UAAM,aAAa,KAAK,MAAM;AAC9B,UAAM,YAAQ,wCAAgB,WAAW,OAAO,KAAK,KAAK,GAAG;AAE7D,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EAEO,UAAU,MAGL;AACV,WAAO,KAAK,aAAa,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,cAAc,EACnB,OACe;AACf,UAAM,eAAe,KAAK,MAAM,EAAE,MAAM,CAAC;AACzC,UAAM,aAAa,MAAM;AAEzB,UAAM,qBAAiD;AAAA,MACrD,GAAG;AAAA,MACH,QAAQ,aAAa,MAAM,UAAU,CAAC;AAAA,IACxC;AAGA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAEA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAIA,SAAK,QAAQ,EAAE,KAAK,cAAc,kBAAkB;AAAA,EACtD;AACF;AAEA,SAAS,8BAA8B,SAA2B;AAChE,SAAO,SAAS,wBAAwB,OAAc;AACpD,UAAM,uBAAuB,QAAQ,IAAI,OAAO,uBAAuB;AAIvE,QAAI,wBAAwB,QAAQ,OAAO,sBAAsB;AAC/D,YAAM,yBAAyB;AAC/B;AAAA,IACF;AAEA,WAAO,eAAe,OAAO,oBAAoB;AAAA,MAC/C,QAA8B;AAC5B,eAAO,eAAe,OAAO,yBAAyB;AAAA,UACpD,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAID,QAAI,CAAC,QAAQ,IAAI,OAAO,uBAAuB,GAAG;AAChD,YAAM,kBAAkB,IAAI,MAAM,MAAM,iBAAiB;AAAA,QACvD,OAAO,CAAC,QAAQ,SAAS,SAAS;AAChC,kBAAQ,IAAI,OAAO,kBAAkB,GAAG,KAAK,OAAO;AACpD,iBAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAAA,QAC5C;AAAA,MACF,CAAC;AAED,aAAO,eAAe,OAAO,yBAAyB;AAAA,QACpD,OAAO;AAAA;AAAA,QAEP,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}