msw 2.11.5 → 2.12.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 (45) hide show
  1. package/lib/browser/index.js +365 -308
  2. package/lib/browser/index.js.map +1 -1
  3. package/lib/browser/index.mjs +365 -308
  4. package/lib/browser/index.mjs.map +1 -1
  5. package/lib/core/index.d.mts +1 -0
  6. package/lib/core/index.d.ts +1 -0
  7. package/lib/core/index.js +2 -0
  8. package/lib/core/index.js.map +1 -1
  9. package/lib/core/index.mjs +4 -0
  10. package/lib/core/index.mjs.map +1 -1
  11. package/lib/core/sse.d.mts +116 -0
  12. package/lib/core/sse.d.ts +116 -0
  13. package/lib/core/sse.js +599 -0
  14. package/lib/core/sse.js.map +1 -0
  15. package/lib/core/sse.mjs +581 -0
  16. package/lib/core/sse.mjs.map +1 -0
  17. package/lib/core/utils/internal/isObject.d.mts +1 -1
  18. package/lib/core/utils/internal/isObject.d.ts +1 -1
  19. package/lib/core/utils/internal/isObject.js.map +1 -1
  20. package/lib/core/utils/internal/isObject.mjs.map +1 -1
  21. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +7 -1
  22. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +7 -1
  23. package/lib/core/ws/utils/attachWebSocketLogger.js +1 -0
  24. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -1
  25. package/lib/core/ws/utils/attachWebSocketLogger.mjs +1 -0
  26. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -1
  27. package/lib/core/ws/utils/getMessageLength.js +2 -1
  28. package/lib/core/ws/utils/getMessageLength.js.map +1 -1
  29. package/lib/core/ws/utils/getMessageLength.mjs +2 -1
  30. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -1
  31. package/lib/core/ws/utils/getPublicData.js +2 -1
  32. package/lib/core/ws/utils/getPublicData.js.map +1 -1
  33. package/lib/core/ws/utils/getPublicData.mjs +2 -1
  34. package/lib/core/ws/utils/getPublicData.mjs.map +1 -1
  35. package/lib/iife/index.js +1367 -746
  36. package/lib/iife/index.js.map +1 -1
  37. package/lib/mockServiceWorker.js +1 -1
  38. package/package.json +6 -4
  39. package/src/browser/tsconfig.browser.json +1 -1
  40. package/src/core/index.ts +9 -0
  41. package/src/core/sse.ts +897 -0
  42. package/src/core/utils/internal/isObject.ts +1 -1
  43. package/src/core/ws/utils/attachWebSocketLogger.ts +1 -1
  44. package/src/core/ws/utils/getMessageLength.ts +2 -1
  45. package/src/core/ws/utils/getPublicData.ts +3 -2
@@ -5,6 +5,7 @@ export { HttpCustomPredicate, HttpHandler, HttpMethods, HttpRequestParsedResult,
5
5
  export { GraphQLRequestHandler, GraphQLResponseResolver, graphql } from './graphql.mjs';
6
6
  export { WebSocketEventListener, WebSocketLink, ws } from './ws.mjs';
7
7
  export { WebSocketHandler, WebSocketHandlerConnection, WebSocketHandlerEventMap } from './handlers/WebSocketHandler.mjs';
8
+ export { ServerSentEventMessage, ServerSentEventRequestHandler, ServerSentEventResolver, ServerSentEventResolverExtras, sse } from './sse.mjs';
8
9
  export { Match, Path, PathParams, matchRequestUrl } from './utils/matching/matchRequestUrl.mjs';
9
10
  export { HandleRequestOptions, handleRequest } from './utils/handleRequest.mjs';
10
11
  export { UnhandledRequestCallback, UnhandledRequestStrategy, onUnhandledRequest } from './utils/request/onUnhandledRequest.mjs';
@@ -5,6 +5,7 @@ export { HttpCustomPredicate, HttpHandler, HttpMethods, HttpRequestParsedResult,
5
5
  export { GraphQLRequestHandler, GraphQLResponseResolver, graphql } from './graphql.js';
6
6
  export { WebSocketEventListener, WebSocketLink, ws } from './ws.js';
7
7
  export { WebSocketHandler, WebSocketHandlerConnection, WebSocketHandlerEventMap } from './handlers/WebSocketHandler.js';
8
+ export { ServerSentEventMessage, ServerSentEventRequestHandler, ServerSentEventResolver, ServerSentEventResolverExtras, sse } from './sse.js';
8
9
  export { Match, Path, PathParams, matchRequestUrl } from './utils/matching/matchRequestUrl.js';
9
10
  export { HandleRequestOptions, handleRequest } from './utils/handleRequest.js';
10
11
  export { UnhandledRequestCallback, UnhandledRequestStrategy, onUnhandledRequest } from './utils/request/onUnhandledRequest.js';
package/lib/core/index.js CHANGED
@@ -34,6 +34,7 @@ __export(index_exports, {
34
34
  matchRequestUrl: () => import_matchRequestUrl.matchRequestUrl,
35
35
  onUnhandledRequest: () => import_onUnhandledRequest.onUnhandledRequest,
36
36
  passthrough: () => import_passthrough.passthrough,
37
+ sse: () => import_sse.sse,
37
38
  ws: () => import_ws.ws
38
39
  });
39
40
  module.exports = __toCommonJS(index_exports);
@@ -46,6 +47,7 @@ var import_graphql = require("./graphql");
46
47
  var import_GraphQLHandler = require("./handlers/GraphQLHandler");
47
48
  var import_ws = require("./ws");
48
49
  var import_WebSocketHandler = require("./handlers/WebSocketHandler");
50
+ var import_sse = require("./sse");
49
51
  var import_matchRequestUrl = require("./utils/matching/matchRequestUrl");
50
52
  __reExport(index_exports, require("./utils/handleRequest"), module.exports);
51
53
  var import_onUnhandledRequest = require("./utils/request/onUnhandledRequest");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["import { checkGlobals } from './utils/internal/checkGlobals'\n\nexport { SetupApi } from './SetupApi'\n\n/* HTTP handlers */\nexport { RequestHandler } from './handlers/RequestHandler'\nexport { http } from './http'\nexport { HttpHandler, HttpMethods } from './handlers/HttpHandler'\nexport { graphql } from './graphql'\nexport { GraphQLHandler } from './handlers/GraphQLHandler'\n\n/* WebSocket handler */\nexport { ws, type WebSocketLink } from './ws'\nexport {\n WebSocketHandler,\n type WebSocketHandlerEventMap,\n type WebSocketHandlerConnection,\n} from './handlers/WebSocketHandler'\n\n/* Utils */\nexport { matchRequestUrl } from './utils/matching/matchRequestUrl'\nexport * from './utils/handleRequest'\nexport {\n onUnhandledRequest,\n type UnhandledRequestStrategy,\n type UnhandledRequestCallback,\n} from './utils/request/onUnhandledRequest'\nexport { getResponse } from './getResponse'\nexport { cleanUrl } from './utils/url/cleanUrl'\n\n/**\n * Type definitions.\n */\n\nexport type { SharedOptions, LifeCycleEventsMap } from './sharedOptions'\n\nexport type {\n ResponseResolver,\n ResponseResolverReturnType,\n AsyncResponseResolverReturnType,\n RequestHandlerOptions,\n DefaultBodyType,\n DefaultRequestMultipartBody,\n JsonBodyType,\n} from './handlers/RequestHandler'\n\nexport type {\n RequestQuery,\n HttpRequestParsedResult,\n HttpCustomPredicate,\n} from './handlers/HttpHandler'\nexport type { HttpRequestHandler, HttpResponseResolver } from './http'\n\nexport type {\n GraphQLQuery,\n GraphQLVariables,\n GraphQLRequestBody,\n GraphQLResponseBody,\n GraphQLJsonRequestBody,\n GraphQLOperationType,\n GraphQLCustomPredicate,\n} from './handlers/GraphQLHandler'\nexport type { GraphQLRequestHandler, GraphQLResponseResolver } from './graphql'\n\nexport type { WebSocketData, WebSocketEventListener } from './ws'\n\nexport type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'\nexport type { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'\n\nexport * from './HttpResponse'\nexport * from './delay'\nexport { bypass } from './bypass'\nexport { passthrough } from './passthrough'\nexport { isCommonAssetRequest } from './isCommonAssetRequest'\n\n// Validate environmental globals before executing any code.\n// This ensures that the library gives user-friendly errors\n// when ran in the environments that require additional polyfills\n// from the end user.\ncheckGlobals()\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAE7B,sBAAyB;AAGzB,4BAA+B;AAC/B,kBAAqB;AACrB,yBAAyC;AACzC,qBAAwB;AACxB,4BAA+B;AAG/B,gBAAuC;AACvC,8BAIO;AAGP,6BAAgC;AAChC,0BAAc,kCArBd;AAsBA,gCAIO;AACP,yBAA4B;AAC5B,sBAAyB;AAyCzB,0BAAc,2BArEd;AAsEA,0BAAc,oBAtEd;AAuEA,oBAAuB;AACvB,yBAA4B;AAC5B,kCAAqC;AAAA,IAMrC,kCAAa;","names":[]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["import { checkGlobals } from './utils/internal/checkGlobals'\n\nexport { SetupApi } from './SetupApi'\n\n/* HTTP handlers */\nexport { RequestHandler } from './handlers/RequestHandler'\nexport { http } from './http'\nexport { HttpHandler, HttpMethods } from './handlers/HttpHandler'\nexport { graphql } from './graphql'\nexport { GraphQLHandler } from './handlers/GraphQLHandler'\n\n/* WebSocket handler */\nexport { ws, type WebSocketLink } from './ws'\nexport {\n WebSocketHandler,\n type WebSocketHandlerEventMap,\n type WebSocketHandlerConnection,\n} from './handlers/WebSocketHandler'\n\n/* Server-Sent Events */\nexport {\n sse,\n type ServerSentEventRequestHandler,\n type ServerSentEventResolver,\n type ServerSentEventResolverExtras,\n type ServerSentEventMessage,\n} from './sse'\n\n/* Utils */\nexport { matchRequestUrl } from './utils/matching/matchRequestUrl'\nexport * from './utils/handleRequest'\nexport {\n onUnhandledRequest,\n type UnhandledRequestStrategy,\n type UnhandledRequestCallback,\n} from './utils/request/onUnhandledRequest'\nexport { getResponse } from './getResponse'\nexport { cleanUrl } from './utils/url/cleanUrl'\n\n/**\n * Type definitions.\n */\n\nexport type { SharedOptions, LifeCycleEventsMap } from './sharedOptions'\n\nexport type {\n ResponseResolver,\n ResponseResolverReturnType,\n AsyncResponseResolverReturnType,\n RequestHandlerOptions,\n DefaultBodyType,\n DefaultRequestMultipartBody,\n JsonBodyType,\n} from './handlers/RequestHandler'\n\nexport type {\n RequestQuery,\n HttpRequestParsedResult,\n HttpCustomPredicate,\n} from './handlers/HttpHandler'\nexport type { HttpRequestHandler, HttpResponseResolver } from './http'\n\nexport type {\n GraphQLQuery,\n GraphQLVariables,\n GraphQLRequestBody,\n GraphQLResponseBody,\n GraphQLJsonRequestBody,\n GraphQLOperationType,\n GraphQLCustomPredicate,\n} from './handlers/GraphQLHandler'\nexport type { GraphQLRequestHandler, GraphQLResponseResolver } from './graphql'\n\nexport type { WebSocketData, WebSocketEventListener } from './ws'\n\nexport type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'\nexport type { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'\n\nexport * from './HttpResponse'\nexport * from './delay'\nexport { bypass } from './bypass'\nexport { passthrough } from './passthrough'\nexport { isCommonAssetRequest } from './isCommonAssetRequest'\n\n// Validate environmental globals before executing any code.\n// This ensures that the library gives user-friendly errors\n// when ran in the environments that require additional polyfills\n// from the end user.\ncheckGlobals()\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAE7B,sBAAyB;AAGzB,4BAA+B;AAC/B,kBAAqB;AACrB,yBAAyC;AACzC,qBAAwB;AACxB,4BAA+B;AAG/B,gBAAuC;AACvC,8BAIO;AAGP,iBAMO;AAGP,6BAAgC;AAChC,0BAAc,kCA9Bd;AA+BA,gCAIO;AACP,yBAA4B;AAC5B,sBAAyB;AAyCzB,0BAAc,2BA9Ed;AA+EA,0BAAc,oBA/Ed;AAgFA,oBAAuB;AACvB,yBAA4B;AAC5B,kCAAqC;AAAA,IAMrC,kCAAa;","names":[]}
@@ -9,6 +9,9 @@ import { ws } from './ws.mjs';
9
9
  import {
10
10
  WebSocketHandler
11
11
  } from './handlers/WebSocketHandler.mjs';
12
+ import {
13
+ sse
14
+ } from './sse.mjs';
12
15
  import { matchRequestUrl } from './utils/matching/matchRequestUrl.mjs';
13
16
  export * from './utils/handleRequest.mjs';
14
17
  import {
@@ -38,6 +41,7 @@ export {
38
41
  matchRequestUrl,
39
42
  onUnhandledRequest,
40
43
  passthrough,
44
+ sse,
41
45
  ws
42
46
  };
43
47
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["import { checkGlobals } from './utils/internal/checkGlobals'\n\nexport { SetupApi } from './SetupApi'\n\n/* HTTP handlers */\nexport { RequestHandler } from './handlers/RequestHandler'\nexport { http } from './http'\nexport { HttpHandler, HttpMethods } from './handlers/HttpHandler'\nexport { graphql } from './graphql'\nexport { GraphQLHandler } from './handlers/GraphQLHandler'\n\n/* WebSocket handler */\nexport { ws, type WebSocketLink } from './ws'\nexport {\n WebSocketHandler,\n type WebSocketHandlerEventMap,\n type WebSocketHandlerConnection,\n} from './handlers/WebSocketHandler'\n\n/* Utils */\nexport { matchRequestUrl } from './utils/matching/matchRequestUrl'\nexport * from './utils/handleRequest'\nexport {\n onUnhandledRequest,\n type UnhandledRequestStrategy,\n type UnhandledRequestCallback,\n} from './utils/request/onUnhandledRequest'\nexport { getResponse } from './getResponse'\nexport { cleanUrl } from './utils/url/cleanUrl'\n\n/**\n * Type definitions.\n */\n\nexport type { SharedOptions, LifeCycleEventsMap } from './sharedOptions'\n\nexport type {\n ResponseResolver,\n ResponseResolverReturnType,\n AsyncResponseResolverReturnType,\n RequestHandlerOptions,\n DefaultBodyType,\n DefaultRequestMultipartBody,\n JsonBodyType,\n} from './handlers/RequestHandler'\n\nexport type {\n RequestQuery,\n HttpRequestParsedResult,\n HttpCustomPredicate,\n} from './handlers/HttpHandler'\nexport type { HttpRequestHandler, HttpResponseResolver } from './http'\n\nexport type {\n GraphQLQuery,\n GraphQLVariables,\n GraphQLRequestBody,\n GraphQLResponseBody,\n GraphQLJsonRequestBody,\n GraphQLOperationType,\n GraphQLCustomPredicate,\n} from './handlers/GraphQLHandler'\nexport type { GraphQLRequestHandler, GraphQLResponseResolver } from './graphql'\n\nexport type { WebSocketData, WebSocketEventListener } from './ws'\n\nexport type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'\nexport type { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'\n\nexport * from './HttpResponse'\nexport * from './delay'\nexport { bypass } from './bypass'\nexport { passthrough } from './passthrough'\nexport { isCommonAssetRequest } from './isCommonAssetRequest'\n\n// Validate environmental globals before executing any code.\n// This ensures that the library gives user-friendly errors\n// when ran in the environments that require additional polyfills\n// from the end user.\ncheckGlobals()\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,gBAAgB;AAGzB,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,aAAa,mBAAmB;AACzC,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAG/B,SAAS,UAA8B;AACvC;AAAA,EACE;AAAA,OAGK;AAGP,SAAS,uBAAuB;AAChC,cAAc;AACd;AAAA,EACE;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AAyCzB,cAAc;AACd,cAAc;AACd,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AAMrC,aAAa;","names":[]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["import { checkGlobals } from './utils/internal/checkGlobals'\n\nexport { SetupApi } from './SetupApi'\n\n/* HTTP handlers */\nexport { RequestHandler } from './handlers/RequestHandler'\nexport { http } from './http'\nexport { HttpHandler, HttpMethods } from './handlers/HttpHandler'\nexport { graphql } from './graphql'\nexport { GraphQLHandler } from './handlers/GraphQLHandler'\n\n/* WebSocket handler */\nexport { ws, type WebSocketLink } from './ws'\nexport {\n WebSocketHandler,\n type WebSocketHandlerEventMap,\n type WebSocketHandlerConnection,\n} from './handlers/WebSocketHandler'\n\n/* Server-Sent Events */\nexport {\n sse,\n type ServerSentEventRequestHandler,\n type ServerSentEventResolver,\n type ServerSentEventResolverExtras,\n type ServerSentEventMessage,\n} from './sse'\n\n/* Utils */\nexport { matchRequestUrl } from './utils/matching/matchRequestUrl'\nexport * from './utils/handleRequest'\nexport {\n onUnhandledRequest,\n type UnhandledRequestStrategy,\n type UnhandledRequestCallback,\n} from './utils/request/onUnhandledRequest'\nexport { getResponse } from './getResponse'\nexport { cleanUrl } from './utils/url/cleanUrl'\n\n/**\n * Type definitions.\n */\n\nexport type { SharedOptions, LifeCycleEventsMap } from './sharedOptions'\n\nexport type {\n ResponseResolver,\n ResponseResolverReturnType,\n AsyncResponseResolverReturnType,\n RequestHandlerOptions,\n DefaultBodyType,\n DefaultRequestMultipartBody,\n JsonBodyType,\n} from './handlers/RequestHandler'\n\nexport type {\n RequestQuery,\n HttpRequestParsedResult,\n HttpCustomPredicate,\n} from './handlers/HttpHandler'\nexport type { HttpRequestHandler, HttpResponseResolver } from './http'\n\nexport type {\n GraphQLQuery,\n GraphQLVariables,\n GraphQLRequestBody,\n GraphQLResponseBody,\n GraphQLJsonRequestBody,\n GraphQLOperationType,\n GraphQLCustomPredicate,\n} from './handlers/GraphQLHandler'\nexport type { GraphQLRequestHandler, GraphQLResponseResolver } from './graphql'\n\nexport type { WebSocketData, WebSocketEventListener } from './ws'\n\nexport type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'\nexport type { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'\n\nexport * from './HttpResponse'\nexport * from './delay'\nexport { bypass } from './bypass'\nexport { passthrough } from './passthrough'\nexport { isCommonAssetRequest } from './isCommonAssetRequest'\n\n// Validate environmental globals before executing any code.\n// This ensures that the library gives user-friendly errors\n// when ran in the environments that require additional polyfills\n// from the end user.\ncheckGlobals()\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,gBAAgB;AAGzB,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,aAAa,mBAAmB;AACzC,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAG/B,SAAS,UAA8B;AACvC;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAKK;AAGP,SAAS,uBAAuB;AAChC,cAAc;AACd;AAAA,EACE;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AAyCzB,cAAc;AACd,cAAc;AACd,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AAMrC,aAAa;","names":[]}
@@ -0,0 +1,116 @@
1
+ import { Emitter } from 'strict-event-emitter';
2
+ import { a as ResponseResolver } from './HttpResponse-DGUjNQHG.mjs';
3
+ import { HttpRequestResolverExtras, HttpHandler } from './handlers/HttpHandler.mjs';
4
+ import { PathParams, Path } from './utils/matching/matchRequestUrl.mjs';
5
+ import '@mswjs/interceptors';
6
+ import './utils/internal/isIterable.mjs';
7
+ import './typeUtils.mjs';
8
+ import 'graphql';
9
+
10
+ type EventMapConstraint = {
11
+ message?: unknown;
12
+ [key: string]: unknown;
13
+ [key: symbol | number]: never;
14
+ };
15
+ type ServerSentEventResolverExtras<EventMap extends EventMapConstraint, Params extends PathParams> = HttpRequestResolverExtras<Params> & {
16
+ client: ServerSentEventClient<EventMap>;
17
+ server: ServerSentEventServer;
18
+ };
19
+ type ServerSentEventResolver<EventMap extends EventMapConstraint, Params extends PathParams> = ResponseResolver<ServerSentEventResolverExtras<EventMap, Params>, any, any>;
20
+ type ServerSentEventRequestHandler = <EventMap extends EventMapConstraint = {
21
+ message: unknown;
22
+ }, Params extends PathParams<keyof Params> = PathParams, RequestPath extends Path = Path>(path: RequestPath, resolver: ServerSentEventResolver<EventMap, Params>) => HttpHandler;
23
+ type ServerSentEventMessage<EventMap extends EventMapConstraint = {
24
+ message: unknown;
25
+ }> = ToEventDiscriminatedUnion<EventMap & {
26
+ message: unknown;
27
+ }> | {
28
+ id?: never;
29
+ event?: never;
30
+ data?: never;
31
+ retry: number;
32
+ };
33
+ /**
34
+ * Intercept Server-Sent Events (SSE).
35
+ *
36
+ * @example
37
+ * sse('http://localhost:4321', ({ client }) => {
38
+ * client.send({ data: 'hello world' })
39
+ * })
40
+ *
41
+ * @see {@link https://mswjs.io/docs/sse/ Mocking Server-Sent Events}
42
+ * @see {@link https://mswjs.io/docs/api/sse `sse()` API reference}
43
+ */
44
+ declare const sse: ServerSentEventRequestHandler;
45
+ type Values<T> = T[keyof T];
46
+ type Identity<T> = {
47
+ [K in keyof T]: T[K];
48
+ } & unknown;
49
+ type ToEventDiscriminatedUnion<T> = Values<{
50
+ [K in keyof T]: Identity<(K extends 'message' ? {
51
+ id?: string;
52
+ event?: K;
53
+ data?: T[K];
54
+ retry?: never;
55
+ } : {
56
+ id?: string;
57
+ event: K;
58
+ data?: T[K];
59
+ retry?: never;
60
+ }) & (undefined extends T[K] ? unknown : {
61
+ data: unknown;
62
+ })>;
63
+ }>;
64
+ type ServerSentEventClientEventMap = {
65
+ message: [
66
+ payload: {
67
+ id?: string;
68
+ event: string;
69
+ data?: unknown;
70
+ frames: Array<string>;
71
+ }
72
+ ];
73
+ error: [];
74
+ close: [];
75
+ };
76
+ declare class ServerSentEventClient<EventMap extends EventMapConstraint = {
77
+ message: unknown;
78
+ }> {
79
+ #private;
80
+ constructor(args: {
81
+ controller: ReadableStreamDefaultController;
82
+ emitter: Emitter<ServerSentEventClientEventMap>;
83
+ });
84
+ /**
85
+ * Sends the given payload to the intercepted `EventSource`.
86
+ */
87
+ send(payload: ServerSentEventMessage<EventMap>): void;
88
+ /**
89
+ * Dispatches the given event on the intercepted `EventSource`.
90
+ */
91
+ dispatchEvent(event: Event): void;
92
+ /**
93
+ * Errors the underlying `EventSource`, closing the connection with an error.
94
+ * This is equivalent to aborting the connection and will produce a `TypeError: Failed to fetch`
95
+ * error.
96
+ */
97
+ error(): void;
98
+ /**
99
+ * Closes the underlying `EventSource`, closing the connection.
100
+ */
101
+ close(): void;
102
+ }
103
+ declare class ServerSentEventServer {
104
+ #private;
105
+ constructor(args: {
106
+ request: Request;
107
+ client: ServerSentEventClient<any>;
108
+ });
109
+ /**
110
+ * Establishes the actual connection for this SSE request
111
+ * and returns the `EventSource` instance.
112
+ */
113
+ connect(): EventSource;
114
+ }
115
+
116
+ export { type ServerSentEventMessage, type ServerSentEventRequestHandler, type ServerSentEventResolver, type ServerSentEventResolverExtras, sse };
@@ -0,0 +1,116 @@
1
+ import { Emitter } from 'strict-event-emitter';
2
+ import { a as ResponseResolver } from './HttpResponse-BpT5A_2L.js';
3
+ import { HttpRequestResolverExtras, HttpHandler } from './handlers/HttpHandler.js';
4
+ import { PathParams, Path } from './utils/matching/matchRequestUrl.js';
5
+ import '@mswjs/interceptors';
6
+ import './utils/internal/isIterable.js';
7
+ import './typeUtils.js';
8
+ import 'graphql';
9
+
10
+ type EventMapConstraint = {
11
+ message?: unknown;
12
+ [key: string]: unknown;
13
+ [key: symbol | number]: never;
14
+ };
15
+ type ServerSentEventResolverExtras<EventMap extends EventMapConstraint, Params extends PathParams> = HttpRequestResolverExtras<Params> & {
16
+ client: ServerSentEventClient<EventMap>;
17
+ server: ServerSentEventServer;
18
+ };
19
+ type ServerSentEventResolver<EventMap extends EventMapConstraint, Params extends PathParams> = ResponseResolver<ServerSentEventResolverExtras<EventMap, Params>, any, any>;
20
+ type ServerSentEventRequestHandler = <EventMap extends EventMapConstraint = {
21
+ message: unknown;
22
+ }, Params extends PathParams<keyof Params> = PathParams, RequestPath extends Path = Path>(path: RequestPath, resolver: ServerSentEventResolver<EventMap, Params>) => HttpHandler;
23
+ type ServerSentEventMessage<EventMap extends EventMapConstraint = {
24
+ message: unknown;
25
+ }> = ToEventDiscriminatedUnion<EventMap & {
26
+ message: unknown;
27
+ }> | {
28
+ id?: never;
29
+ event?: never;
30
+ data?: never;
31
+ retry: number;
32
+ };
33
+ /**
34
+ * Intercept Server-Sent Events (SSE).
35
+ *
36
+ * @example
37
+ * sse('http://localhost:4321', ({ client }) => {
38
+ * client.send({ data: 'hello world' })
39
+ * })
40
+ *
41
+ * @see {@link https://mswjs.io/docs/sse/ Mocking Server-Sent Events}
42
+ * @see {@link https://mswjs.io/docs/api/sse `sse()` API reference}
43
+ */
44
+ declare const sse: ServerSentEventRequestHandler;
45
+ type Values<T> = T[keyof T];
46
+ type Identity<T> = {
47
+ [K in keyof T]: T[K];
48
+ } & unknown;
49
+ type ToEventDiscriminatedUnion<T> = Values<{
50
+ [K in keyof T]: Identity<(K extends 'message' ? {
51
+ id?: string;
52
+ event?: K;
53
+ data?: T[K];
54
+ retry?: never;
55
+ } : {
56
+ id?: string;
57
+ event: K;
58
+ data?: T[K];
59
+ retry?: never;
60
+ }) & (undefined extends T[K] ? unknown : {
61
+ data: unknown;
62
+ })>;
63
+ }>;
64
+ type ServerSentEventClientEventMap = {
65
+ message: [
66
+ payload: {
67
+ id?: string;
68
+ event: string;
69
+ data?: unknown;
70
+ frames: Array<string>;
71
+ }
72
+ ];
73
+ error: [];
74
+ close: [];
75
+ };
76
+ declare class ServerSentEventClient<EventMap extends EventMapConstraint = {
77
+ message: unknown;
78
+ }> {
79
+ #private;
80
+ constructor(args: {
81
+ controller: ReadableStreamDefaultController;
82
+ emitter: Emitter<ServerSentEventClientEventMap>;
83
+ });
84
+ /**
85
+ * Sends the given payload to the intercepted `EventSource`.
86
+ */
87
+ send(payload: ServerSentEventMessage<EventMap>): void;
88
+ /**
89
+ * Dispatches the given event on the intercepted `EventSource`.
90
+ */
91
+ dispatchEvent(event: Event): void;
92
+ /**
93
+ * Errors the underlying `EventSource`, closing the connection with an error.
94
+ * This is equivalent to aborting the connection and will produce a `TypeError: Failed to fetch`
95
+ * error.
96
+ */
97
+ error(): void;
98
+ /**
99
+ * Closes the underlying `EventSource`, closing the connection.
100
+ */
101
+ close(): void;
102
+ }
103
+ declare class ServerSentEventServer {
104
+ #private;
105
+ constructor(args: {
106
+ request: Request;
107
+ client: ServerSentEventClient<any>;
108
+ });
109
+ /**
110
+ * Establishes the actual connection for this SSE request
111
+ * and returns the `EventSource` instance.
112
+ */
113
+ connect(): EventSource;
114
+ }
115
+
116
+ export { type ServerSentEventMessage, type ServerSentEventRequestHandler, type ServerSentEventResolver, type ServerSentEventResolverExtras, sse };