msw 2.3.0-ws.rc-1 → 2.3.0-ws.rc-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -3
- package/cli/init.js +1 -1
- package/lib/browser/index.d.mts +4 -4
- package/lib/browser/index.js +65 -60
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +65 -60
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{GraphQLHandler-QGQY_9Rc.d.mts → GraphQLHandler-CzcXr7At.d.mts} +3 -3
- package/lib/core/{GraphQLHandler-Cbu12sb0.d.ts → GraphQLHandler-DGyzNtRQ.d.ts} +3 -3
- package/lib/core/{HttpResponse-BWB1yDNM.d.mts → HttpResponse-BOzDwzB6.d.ts} +3 -3
- package/lib/core/{HttpResponse-DeJBWGN5.d.ts → HttpResponse-CSyJ1cbO.d.mts} +3 -3
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/HttpResponse.js.map +1 -1
- package/lib/core/HttpResponse.mjs.map +1 -1
- package/lib/core/SetupApi.d.mts +1 -1
- package/lib/core/SetupApi.d.ts +1 -1
- package/lib/core/bypass.js +6 -1
- package/lib/core/bypass.js.map +1 -1
- package/lib/core/bypass.mjs +6 -1
- package/lib/core/bypass.mjs.map +1 -1
- package/lib/core/getResponse.d.mts +1 -1
- package/lib/core/getResponse.d.ts +1 -1
- package/lib/core/getResponse.js +2 -2
- package/lib/core/getResponse.js.map +1 -1
- package/lib/core/getResponse.mjs +2 -2
- package/lib/core/getResponse.mjs.map +1 -1
- package/lib/core/graphql.d.mts +8 -6
- package/lib/core/graphql.d.ts +8 -6
- package/lib/core/graphql.js.map +1 -1
- package/lib/core/graphql.mjs.map +1 -1
- package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
- package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
- package/lib/core/handlers/GraphQLHandler.js.map +1 -1
- package/lib/core/handlers/GraphQLHandler.mjs.map +1 -1
- package/lib/core/handlers/HttpHandler.d.mts +1 -1
- package/lib/core/handlers/HttpHandler.d.ts +1 -1
- package/lib/core/handlers/HttpHandler.js +1 -1
- package/lib/core/handlers/HttpHandler.js.map +1 -1
- package/lib/core/handlers/HttpHandler.mjs +1 -1
- package/lib/core/handlers/HttpHandler.mjs.map +1 -1
- package/lib/core/handlers/RequestHandler.d.mts +1 -1
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/handlers/WebSocketHandler.d.mts +11 -17
- package/lib/core/handlers/WebSocketHandler.d.ts +11 -17
- package/lib/core/handlers/WebSocketHandler.js +9 -12
- package/lib/core/handlers/WebSocketHandler.js.map +1 -1
- package/lib/core/handlers/WebSocketHandler.mjs +9 -12
- package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
- package/lib/core/http.d.mts +1 -1
- package/lib/core/http.d.ts +1 -1
- package/lib/core/index.d.mts +5 -5
- package/lib/core/index.d.ts +5 -5
- package/lib/core/index.js +3 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +5 -1
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/passthrough.d.mts +1 -1
- package/lib/core/passthrough.d.ts +1 -1
- package/lib/core/typeUtils.d.mts +6 -1
- package/lib/core/typeUtils.d.ts +6 -1
- package/lib/core/typeUtils.js.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
- package/lib/core/utils/HttpResponse/decorators.js +4 -1
- package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.mjs +4 -1
- package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
- package/lib/core/utils/executeHandlers.d.mts +1 -1
- package/lib/core/utils/executeHandlers.d.ts +1 -1
- package/lib/core/utils/handleRequest.d.mts +1 -1
- package/lib/core/utils/handleRequest.d.ts +1 -1
- package/lib/core/utils/handleRequest.js.map +1 -1
- package/lib/core/utils/handleRequest.mjs.map +1 -1
- package/lib/core/utils/internal/mergeRight.js +15 -12
- package/lib/core/utils/internal/mergeRight.js.map +1 -1
- package/lib/core/utils/internal/mergeRight.mjs +15 -12
- package/lib/core/utils/internal/mergeRight.mjs.map +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
- package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/core/utils/logging/getTimestamp.d.mts +4 -1
- package/lib/core/utils/logging/getTimestamp.d.ts +4 -1
- package/lib/core/utils/logging/getTimestamp.js +6 -2
- package/lib/core/utils/logging/getTimestamp.js.map +1 -1
- package/lib/core/utils/logging/getTimestamp.mjs +6 -2
- package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.mts +16 -0
- package/lib/core/ws/handleWebSocketEvent.d.ts +16 -0
- package/lib/core/{utils → ws}/handleWebSocketEvent.js +21 -18
- package/lib/core/ws/handleWebSocketEvent.js.map +1 -0
- package/lib/core/ws/handleWebSocketEvent.mjs +39 -0
- package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -0
- package/lib/core/ws/utils/attachWebSocketLogger.d.mts +34 -0
- package/lib/core/ws/utils/attachWebSocketLogger.d.ts +34 -0
- package/lib/core/ws/utils/attachWebSocketLogger.js +211 -0
- package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -0
- package/lib/core/ws/utils/attachWebSocketLogger.mjs +191 -0
- package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -0
- package/lib/core/ws/utils/getMessageLength.d.mts +11 -0
- package/lib/core/ws/utils/getMessageLength.d.ts +11 -0
- package/lib/core/ws/utils/getMessageLength.js +33 -0
- package/lib/core/ws/utils/getMessageLength.js.map +1 -0
- package/lib/core/ws/utils/getMessageLength.mjs +13 -0
- package/lib/core/ws/utils/getMessageLength.mjs.map +1 -0
- package/lib/core/ws/utils/getPublicData.d.mts +5 -0
- package/lib/core/ws/utils/getPublicData.d.ts +5 -0
- package/lib/core/ws/utils/getPublicData.js +36 -0
- package/lib/core/ws/utils/getPublicData.js.map +1 -0
- package/lib/core/ws/utils/getPublicData.mjs +16 -0
- package/lib/core/ws/utils/getPublicData.mjs.map +1 -0
- package/lib/core/ws/utils/truncateMessage.d.mts +3 -0
- package/lib/core/ws/utils/truncateMessage.d.ts +3 -0
- package/lib/core/{utils/internal/randomId.js → ws/utils/truncateMessage.js} +11 -7
- package/lib/core/ws/utils/truncateMessage.js.map +1 -0
- package/lib/core/ws/utils/truncateMessage.mjs +11 -0
- package/lib/core/ws/utils/truncateMessage.mjs.map +1 -0
- package/lib/core/{ws/ws.d.mts → ws.d.mts} +19 -14
- package/lib/core/{ws/ws.d.ts → ws.d.ts} +19 -14
- package/lib/core/{ws/ws.js → ws.js} +4 -23
- package/lib/core/ws.js.map +1 -0
- package/lib/core/{ws/ws.mjs → ws.mjs} +4 -23
- package/lib/core/ws.mjs.map +1 -0
- package/lib/iife/index.js +516 -256
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +8 -11
- package/lib/native/index.d.mts +4 -4
- package/lib/native/index.js +9 -3
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +9 -3
- package/lib/native/index.mjs.map +1 -1
- package/lib/node/index.d.mts +6 -6
- package/lib/node/index.d.ts +2 -2
- package/lib/node/index.js +9 -3
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +9 -3
- package/lib/node/index.mjs.map +1 -1
- package/package.json +9 -12
- package/src/browser/setupWorker/glossary.ts +4 -1
- package/src/browser/setupWorker/setupWorker.ts +20 -3
- package/src/browser/setupWorker/start/createRequestListener.ts +1 -1
- package/src/browser/setupWorker/start/createStartHandler.ts +9 -19
- package/src/browser/setupWorker/start/utils/createMessageChannel.ts +1 -1
- package/src/browser/utils/checkWorkerIntegrity.ts +34 -0
- package/src/core/HttpResponse.ts +3 -2
- package/src/core/bypass.test.ts +22 -0
- package/src/core/bypass.ts +9 -1
- package/src/core/getResponse.ts +2 -2
- package/src/core/graphql.ts +6 -3
- package/src/core/handlers/GraphQLHandler.test.ts +4 -5
- package/src/core/handlers/GraphQLHandler.ts +7 -4
- package/src/core/handlers/HttpHandler.test.ts +5 -5
- package/src/core/handlers/HttpHandler.ts +1 -1
- package/src/core/handlers/WebSocketHandler.ts +21 -39
- package/src/core/index.ts +7 -3
- package/src/core/typeUtils.ts +16 -10
- package/src/core/utils/HttpResponse/decorators.ts +8 -4
- package/src/core/utils/handleRequest.test.ts +14 -14
- package/src/core/utils/handleRequest.ts +1 -1
- package/src/core/utils/internal/mergeRight.ts +16 -13
- package/src/core/utils/logging/getTimestamp.test.ts +20 -6
- package/src/core/utils/logging/getTimestamp.ts +11 -6
- package/src/core/ws/handleWebSocketEvent.ts +59 -0
- package/src/core/ws/utils/attachWebSocketLogger.ts +262 -0
- package/src/core/ws/utils/getMessageLength.test.ts +16 -0
- package/src/core/ws/utils/getMessageLength.ts +19 -0
- package/src/core/ws/utils/getPublicData.test.ts +38 -0
- package/src/core/ws/utils/getPublicData.ts +17 -0
- package/src/core/ws/utils/truncateMessage.test.ts +12 -0
- package/src/core/ws/utils/truncateMessage.ts +9 -0
- package/src/core/{ws/ws.ts → ws.ts} +49 -35
- package/src/mockServiceWorker.js +7 -10
- package/src/node/SetupServerApi.ts +4 -4
- package/src/node/SetupServerCommonApi.ts +7 -3
- package/src/node/glossary.ts +3 -3
- package/lib/core/utils/handleWebSocketEvent.d.mts +0 -10
- package/lib/core/utils/handleWebSocketEvent.d.ts +0 -10
- package/lib/core/utils/handleWebSocketEvent.js.map +0 -1
- package/lib/core/utils/handleWebSocketEvent.mjs +0 -40
- package/lib/core/utils/handleWebSocketEvent.mjs.map +0 -1
- package/lib/core/utils/internal/randomId.d.mts +0 -3
- package/lib/core/utils/internal/randomId.d.ts +0 -3
- package/lib/core/utils/internal/randomId.js.map +0 -1
- package/lib/core/utils/internal/randomId.mjs +0 -7
- package/lib/core/utils/internal/randomId.mjs.map +0 -1
- package/lib/core/ws/ws.js.map +0 -1
- package/lib/core/ws/ws.mjs.map +0 -1
- package/src/browser/utils/requestIntegrityCheck.ts +0 -23
- package/src/core/utils/handleWebSocketEvent.ts +0 -49
- package/src/core/utils/internal/randomId.ts +0 -3
- /package/src/core/{ws/ws.test.ts → ws.test.ts} +0 -0
package/lib/iife/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var MockServiceWorker = (() => {
|
|
|
32
32
|
SET_TIMEOUT_MAX_ALLOWED_INT: () => SET_TIMEOUT_MAX_ALLOWED_INT,
|
|
33
33
|
SetupApi: () => SetupApi,
|
|
34
34
|
SetupWorkerApi: () => SetupWorkerApi,
|
|
35
|
+
WebSocketHandler: () => WebSocketHandler,
|
|
35
36
|
bypass: () => bypass,
|
|
36
37
|
cleanUrl: () => cleanUrl,
|
|
37
38
|
delay: () => delay,
|
|
@@ -626,9 +627,13 @@ var MockServiceWorker = (() => {
|
|
|
626
627
|
}
|
|
627
628
|
|
|
628
629
|
// src/core/utils/logging/getTimestamp.ts
|
|
629
|
-
function getTimestamp() {
|
|
630
|
+
function getTimestamp(options) {
|
|
630
631
|
const now = /* @__PURE__ */ new Date();
|
|
631
|
-
|
|
632
|
+
const timestamp = `${now.getHours().toString().padStart(2, "0")}:${now.getMinutes().toString().padStart(2, "0")}:${now.getSeconds().toString().padStart(2, "0")}`;
|
|
633
|
+
if (options?.milliseconds) {
|
|
634
|
+
return `${timestamp}.${now.getMilliseconds().toString().padStart(3, "0")}`;
|
|
635
|
+
}
|
|
636
|
+
return timestamp;
|
|
632
637
|
}
|
|
633
638
|
|
|
634
639
|
// src/core/utils/logging/serializeRequest.ts
|
|
@@ -1065,7 +1070,7 @@ var MockServiceWorker = (() => {
|
|
|
1065
1070
|
if (options === void 0) {
|
|
1066
1071
|
options = {};
|
|
1067
1072
|
}
|
|
1068
|
-
var _a2 = options.strict, strict = _a2 === void 0 ? false : _a2, _b2 = options.start, start = _b2 === void 0 ? true : _b2,
|
|
1073
|
+
var _a2 = options.strict, strict = _a2 === void 0 ? false : _a2, _b2 = options.start, start = _b2 === void 0 ? true : _b2, _c2 = options.end, end = _c2 === void 0 ? true : _c2, _d = options.encode, encode = _d === void 0 ? function(x) {
|
|
1069
1074
|
return x;
|
|
1070
1075
|
} : _d, _e = options.delimiter, delimiter = _e === void 0 ? "/#?" : _e, _f = options.endsWith, endsWith = _f === void 0 ? "" : _f;
|
|
1071
1076
|
var endsWithRe = "[".concat(escapeString(endsWith), "]|$");
|
|
@@ -1124,7 +1129,7 @@ var MockServiceWorker = (() => {
|
|
|
1124
1129
|
return stringToRegexp(path, keys, options);
|
|
1125
1130
|
}
|
|
1126
1131
|
|
|
1127
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
1132
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-UJZOJSMP.mjs
|
|
1128
1133
|
var encoder = new TextEncoder();
|
|
1129
1134
|
function encodeBuffer(text) {
|
|
1130
1135
|
return encoder.encode(text);
|
|
@@ -1150,7 +1155,7 @@ var MockServiceWorker = (() => {
|
|
|
1150
1155
|
return RESPONSE_STATUS_CODES_WITHOUT_BODY.has(status);
|
|
1151
1156
|
}
|
|
1152
1157
|
|
|
1153
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
1158
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-HAGW22AN.mjs
|
|
1154
1159
|
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
1155
1160
|
|
|
1156
1161
|
// node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.mjs
|
|
@@ -1440,7 +1445,8 @@ var MockServiceWorker = (() => {
|
|
|
1440
1445
|
return message3.toString();
|
|
1441
1446
|
}
|
|
1442
1447
|
|
|
1443
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
1448
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
|
|
1449
|
+
var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
|
|
1444
1450
|
function getGlobalSymbol(symbol) {
|
|
1445
1451
|
return (
|
|
1446
1452
|
// @ts-ignore https://github.com/Microsoft/TypeScript/issues/24587
|
|
@@ -1583,8 +1589,11 @@ var MockServiceWorker = (() => {
|
|
|
1583
1589
|
this.logger.info("cleared global instance!", this.symbol.description);
|
|
1584
1590
|
}
|
|
1585
1591
|
};
|
|
1592
|
+
function createRequestId() {
|
|
1593
|
+
return Math.random().toString(16).slice(2);
|
|
1594
|
+
}
|
|
1586
1595
|
|
|
1587
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
1596
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/index.mjs
|
|
1588
1597
|
var BatchInterceptor = class extends Interceptor {
|
|
1589
1598
|
constructor(options) {
|
|
1590
1599
|
BatchInterceptor.symbol = Symbol(options.name);
|
|
@@ -2291,7 +2300,7 @@ Invalid value has been removed from localStorage to prevent subsequent failed pa
|
|
|
2291
2300
|
queryParams.push(paramName);
|
|
2292
2301
|
});
|
|
2293
2302
|
devUtils.warn(
|
|
2294
|
-
`Found a redundant usage of query parameters in the request handler URL for "${method} ${path}". Please match against a path instead and access query parameters
|
|
2303
|
+
`Found a redundant usage of query parameters in the request handler URL for "${method} ${path}". Please match against a path instead and access query parameters using "new URL(request.url).searchParams" instead. Learn more: https://mswjs.io/docs/recipes/query-parameters`
|
|
2295
2304
|
);
|
|
2296
2305
|
}
|
|
2297
2306
|
async parse(args) {
|
|
@@ -4824,7 +4833,7 @@ spurious results.`);
|
|
|
4824
4833
|
}
|
|
4825
4834
|
}
|
|
4826
4835
|
|
|
4827
|
-
// node_modules/.pnpm/headers-polyfill@4.0.
|
|
4836
|
+
// node_modules/.pnpm/headers-polyfill@4.0.3/node_modules/headers-polyfill/lib/index.mjs
|
|
4828
4837
|
var __create4 = Object.create;
|
|
4829
4838
|
var __defProp6 = Object.defineProperty;
|
|
4830
4839
|
var __getOwnPropDesc5 = Object.getOwnPropertyDescriptor;
|
|
@@ -5100,10 +5109,12 @@ spurious results.`);
|
|
|
5100
5109
|
var HEADER_VALUE_DELIMITER = ", ";
|
|
5101
5110
|
var _a;
|
|
5102
5111
|
var _b;
|
|
5112
|
+
var _c;
|
|
5103
5113
|
var Headers2 = class _Headers {
|
|
5104
5114
|
constructor(init) {
|
|
5105
5115
|
this[_a] = {};
|
|
5106
5116
|
this[_b] = /* @__PURE__ */ new Map();
|
|
5117
|
+
this[_c] = "Headers";
|
|
5107
5118
|
if (["Headers", "HeadersPolyfill"].includes(init?.constructor.name) || init instanceof _Headers || typeof globalThis.Headers !== "undefined" && init instanceof globalThis.Headers) {
|
|
5108
5119
|
const initialHeaders = init;
|
|
5109
5120
|
initialHeaders.forEach((value, name) => {
|
|
@@ -5126,7 +5137,7 @@ spurious results.`);
|
|
|
5126
5137
|
});
|
|
5127
5138
|
}
|
|
5128
5139
|
}
|
|
5129
|
-
[(_a = NORMALIZED_HEADERS, _b = RAW_HEADER_NAMES, Symbol.iterator)]() {
|
|
5140
|
+
[(_a = NORMALIZED_HEADERS, _b = RAW_HEADER_NAMES, _c = Symbol.toStringTag, Symbol.iterator)]() {
|
|
5130
5141
|
return this.entries();
|
|
5131
5142
|
}
|
|
5132
5143
|
*keys() {
|
|
@@ -5618,12 +5629,14 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
5618
5629
|
// src/core/handlers/WebSocketHandler.ts
|
|
5619
5630
|
var kEmitter = Symbol("kEmitter");
|
|
5620
5631
|
var kDispatchEvent = Symbol("kDispatchEvent");
|
|
5621
|
-
var
|
|
5632
|
+
var kSender = Symbol("kSender");
|
|
5622
5633
|
var WebSocketHandler = class {
|
|
5623
5634
|
constructor(url) {
|
|
5624
5635
|
this.url = url;
|
|
5625
5636
|
this[kEmitter] = new Emitter();
|
|
5637
|
+
this.callFrame = getCallFrame(new Error());
|
|
5626
5638
|
}
|
|
5639
|
+
callFrame;
|
|
5627
5640
|
[kEmitter];
|
|
5628
5641
|
parse(args) {
|
|
5629
5642
|
const connection = args.event.data;
|
|
@@ -5637,19 +5650,13 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
5637
5650
|
}
|
|
5638
5651
|
async [kDispatchEvent](event) {
|
|
5639
5652
|
const parsedResult = this.parse({ event });
|
|
5640
|
-
const shouldIntercept = this.predicate({ event, parsedResult });
|
|
5641
|
-
if (!shouldIntercept) {
|
|
5642
|
-
return;
|
|
5643
|
-
}
|
|
5644
|
-
if (!Reflect.get(event, kDefaultPrevented)) {
|
|
5645
|
-
Reflect.set(event, kDefaultPrevented, true);
|
|
5646
|
-
}
|
|
5647
5653
|
const connection = event.data;
|
|
5648
|
-
|
|
5654
|
+
const resolvedConnection = {
|
|
5649
5655
|
client: connection.client,
|
|
5650
5656
|
server: connection.server,
|
|
5651
5657
|
params: parsedResult.match.params || {}
|
|
5652
|
-
}
|
|
5658
|
+
};
|
|
5659
|
+
this[kEmitter].emit("connection", resolvedConnection);
|
|
5653
5660
|
}
|
|
5654
5661
|
};
|
|
5655
5662
|
|
|
@@ -5752,13 +5759,13 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
5752
5759
|
}
|
|
5753
5760
|
};
|
|
5754
5761
|
|
|
5755
|
-
// src/core/ws
|
|
5762
|
+
// src/core/ws.ts
|
|
5756
5763
|
var wsBroadcastChannel = new BroadcastChannel("msw:ws-client-manager");
|
|
5757
5764
|
function createWebSocketLinkHandler(url) {
|
|
5758
5765
|
invariant(url, "Expected a WebSocket server URL but got undefined");
|
|
5759
5766
|
invariant(
|
|
5760
5767
|
isPath(url),
|
|
5761
|
-
"Expected a WebSocket server URL but got %s",
|
|
5768
|
+
"Expected a WebSocket server URL to be a valid path but got %s",
|
|
5762
5769
|
typeof url
|
|
5763
5770
|
);
|
|
5764
5771
|
const clientManager = new WebSocketClientManager(wsBroadcastChannel);
|
|
@@ -5772,28 +5779,9 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
5772
5779
|
handler[kEmitter].on(event, listener);
|
|
5773
5780
|
return handler;
|
|
5774
5781
|
},
|
|
5775
|
-
/**
|
|
5776
|
-
* Broadcasts the given data to all WebSocket clients.
|
|
5777
|
-
*
|
|
5778
|
-
* @example
|
|
5779
|
-
* const service = ws.link('wss://example.com')
|
|
5780
|
-
* service.on('connection', () => {
|
|
5781
|
-
* service.broadcast('hello, everyone!')
|
|
5782
|
-
* })
|
|
5783
|
-
*/
|
|
5784
5782
|
broadcast(data) {
|
|
5785
5783
|
this.broadcastExcept([], data);
|
|
5786
5784
|
},
|
|
5787
|
-
/**
|
|
5788
|
-
* Broadcasts the given data to all WebSocket clients
|
|
5789
|
-
* except the ones provided in the `clients` argument.
|
|
5790
|
-
*
|
|
5791
|
-
* @example
|
|
5792
|
-
* const service = ws.link('wss://example.com')
|
|
5793
|
-
* service.on('connection', ({ client }) => {
|
|
5794
|
-
* service.broadcastExcept(client, 'hi, the rest of you!')
|
|
5795
|
-
* })
|
|
5796
|
-
*/
|
|
5797
5785
|
broadcastExcept(clients, data) {
|
|
5798
5786
|
const ignoreClients = Array.prototype.concat(clients).map((client) => client.id);
|
|
5799
5787
|
clientManager.clients.forEach((otherClient) => {
|
|
@@ -5959,16 +5947,11 @@ Read more: https://mswjs.io/docs/getting-started/mocks`;
|
|
|
5959
5947
|
return transformedResponse;
|
|
5960
5948
|
}
|
|
5961
5949
|
|
|
5962
|
-
// src/core/utils/internal/randomId.ts
|
|
5963
|
-
function randomId() {
|
|
5964
|
-
return Math.random().toString(16).slice(2);
|
|
5965
|
-
}
|
|
5966
|
-
|
|
5967
5950
|
// src/core/getResponse.ts
|
|
5968
5951
|
var getResponse = async (handlers, request) => {
|
|
5969
5952
|
const result = await executeHandlers({
|
|
5970
5953
|
request,
|
|
5971
|
-
requestId:
|
|
5954
|
+
requestId: createRequestId(),
|
|
5972
5955
|
handlers
|
|
5973
5956
|
});
|
|
5974
5957
|
return result?.response;
|
|
@@ -5996,7 +5979,9 @@ Read more: https://mswjs.io/docs/getting-started/mocks`;
|
|
|
5996
5979
|
});
|
|
5997
5980
|
}
|
|
5998
5981
|
if (typeof document !== "undefined") {
|
|
5999
|
-
const responseCookies =
|
|
5982
|
+
const responseCookies = Headers2.prototype.getSetCookie.call(
|
|
5983
|
+
init.headers
|
|
5984
|
+
);
|
|
6000
5985
|
for (const cookieString of responseCookies) {
|
|
6001
5986
|
document.cookie = cookieString;
|
|
6002
5987
|
}
|
|
@@ -6141,7 +6126,12 @@ Read more: https://mswjs.io/docs/getting-started/mocks`;
|
|
|
6141
6126
|
|
|
6142
6127
|
// src/core/bypass.ts
|
|
6143
6128
|
function bypass(input, init) {
|
|
6144
|
-
const request =
|
|
6129
|
+
const request = new Request(
|
|
6130
|
+
// If given a Request instance, clone it not to exhaust
|
|
6131
|
+
// the original request's body.
|
|
6132
|
+
input instanceof Request ? input.clone() : input,
|
|
6133
|
+
init
|
|
6134
|
+
);
|
|
6145
6135
|
invariant(
|
|
6146
6136
|
!request.bodyUsed,
|
|
6147
6137
|
'Failed to create a bypassed request to "%s %s": given request instance already has its body read. Make sure to clone the intercepted request if you wish to read its body before bypassing it.',
|
|
@@ -6343,7 +6333,7 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
6343
6333
|
context.emitter,
|
|
6344
6334
|
{
|
|
6345
6335
|
onPassthroughResponse() {
|
|
6346
|
-
messageChannel.postMessage("
|
|
6336
|
+
messageChannel.postMessage("PASSTHROUGH");
|
|
6347
6337
|
},
|
|
6348
6338
|
async onMockedResponse(response, { handler, parsedResult }) {
|
|
6349
6339
|
const responseClone = response.clone();
|
|
@@ -6407,18 +6397,21 @@ This exception has been gracefully handled as a 500 response, however, it's stro
|
|
|
6407
6397
|
};
|
|
6408
6398
|
};
|
|
6409
6399
|
|
|
6410
|
-
// src/browser/utils/
|
|
6411
|
-
async function
|
|
6400
|
+
// src/browser/utils/checkWorkerIntegrity.ts
|
|
6401
|
+
async function checkWorkerIntegrity(context) {
|
|
6412
6402
|
context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
|
|
6413
|
-
const { payload
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6403
|
+
const { payload } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
|
|
6404
|
+
if (payload.checksum !== "26357c79639bfa20d64c0efca2a87423") {
|
|
6405
|
+
devUtils.warn(
|
|
6406
|
+
`The currently registered Service Worker has been generated by a different version of MSW (${payload.packageVersion}) and may not be fully compatible with the installed version.
|
|
6407
|
+
|
|
6408
|
+
It's recommended you update your worker script by running this command:
|
|
6409
|
+
|
|
6410
|
+
\u2022 npx msw init <PUBLIC_DIR>
|
|
6411
|
+
|
|
6412
|
+
You can also automate this process and make the worker script update automatically upon the library installations. Read more: https://mswjs.io/docs/cli/init.`
|
|
6419
6413
|
);
|
|
6420
6414
|
}
|
|
6421
|
-
return serviceWorker;
|
|
6422
6415
|
}
|
|
6423
6416
|
|
|
6424
6417
|
// src/browser/setupWorker/start/createResponseListener.ts
|
|
@@ -6514,19 +6507,12 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
6514
6507
|
}
|
|
6515
6508
|
window.clearInterval(context.keepAliveInterval);
|
|
6516
6509
|
});
|
|
6517
|
-
|
|
6518
|
-
(
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
The mocking is still enabled, but it's highly recommended that you update your Service Worker by running:
|
|
6524
|
-
|
|
6525
|
-
$ npx msw init <PUBLIC_DIR>
|
|
6526
|
-
|
|
6527
|
-
This is necessary to ensure that the Service Worker is in sync with the library to guarantee its stability.
|
|
6528
|
-
If this message still persists after updating, please report an issue: https://github.com/open-draft/msw/issues `);
|
|
6529
|
-
}
|
|
6510
|
+
await checkWorkerIntegrity(context).catch((error3) => {
|
|
6511
|
+
devUtils.error(
|
|
6512
|
+
"Error while checking the worker script integrity. Please report this on GitHub (https://github.com/mswjs/msw/issues), including the original error below."
|
|
6513
|
+
);
|
|
6514
|
+
console.error(error3);
|
|
6515
|
+
});
|
|
6530
6516
|
context.keepAliveInterval = window.setInterval(
|
|
6531
6517
|
() => context.workerChannel.send("KEEPALIVE_REQUEST"),
|
|
6532
6518
|
5e3
|
|
@@ -6590,19 +6576,22 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6590
6576
|
|
|
6591
6577
|
// src/core/utils/internal/mergeRight.ts
|
|
6592
6578
|
function mergeRight(left, right) {
|
|
6593
|
-
return Object.entries(right).reduce(
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6579
|
+
return Object.entries(right).reduce(
|
|
6580
|
+
(result, [key, rightValue]) => {
|
|
6581
|
+
const leftValue = result[key];
|
|
6582
|
+
if (Array.isArray(leftValue) && Array.isArray(rightValue)) {
|
|
6583
|
+
result[key] = leftValue.concat(rightValue);
|
|
6584
|
+
return result;
|
|
6585
|
+
}
|
|
6586
|
+
if (isObject(leftValue) && isObject(rightValue)) {
|
|
6587
|
+
result[key] = mergeRight(leftValue, rightValue);
|
|
6588
|
+
return result;
|
|
6589
|
+
}
|
|
6590
|
+
result[key] = rightValue;
|
|
6597
6591
|
return result;
|
|
6598
|
-
}
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
return result;
|
|
6602
|
-
}
|
|
6603
|
-
result[key] = rightValue;
|
|
6604
|
-
return result;
|
|
6605
|
-
}, Object.assign({}, left));
|
|
6592
|
+
},
|
|
6593
|
+
Object.assign({}, left)
|
|
6594
|
+
);
|
|
6606
6595
|
}
|
|
6607
6596
|
|
|
6608
6597
|
// src/browser/setupWorker/start/utils/prepareStartHandler.ts
|
|
@@ -6685,7 +6674,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6685
6674
|
}
|
|
6686
6675
|
};
|
|
6687
6676
|
|
|
6688
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
6677
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
|
|
6689
6678
|
var RequestController = class {
|
|
6690
6679
|
constructor(request) {
|
|
6691
6680
|
this.request = request;
|
|
@@ -6723,16 +6712,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6723
6712
|
}
|
|
6724
6713
|
}
|
|
6725
6714
|
|
|
6726
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
6727
|
-
function uuidv4() {
|
|
6728
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
6729
|
-
const r = Math.random() * 16 | 0;
|
|
6730
|
-
const v = c == "x" ? r : r & 3 | 8;
|
|
6731
|
-
return v.toString(16);
|
|
6732
|
-
});
|
|
6733
|
-
}
|
|
6734
|
-
|
|
6735
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.8/node_modules/@mswjs/interceptors/lib/browser/chunk-65OQZE6W.mjs
|
|
6715
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-3FNUI33J.mjs
|
|
6736
6716
|
function isPropertyAccessible2(obj, key) {
|
|
6737
6717
|
try {
|
|
6738
6718
|
obj[key];
|
|
@@ -6756,7 +6736,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6756
6736
|
checkEnvironment() {
|
|
6757
6737
|
return typeof globalThis !== "undefined" && typeof globalThis.fetch !== "undefined";
|
|
6758
6738
|
}
|
|
6759
|
-
setup() {
|
|
6739
|
+
async setup() {
|
|
6760
6740
|
const pureFetch = globalThis.fetch;
|
|
6761
6741
|
invariant(
|
|
6762
6742
|
!pureFetch[IS_PATCHED_MODULE],
|
|
@@ -6764,7 +6744,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6764
6744
|
);
|
|
6765
6745
|
globalThis.fetch = async (input, init) => {
|
|
6766
6746
|
var _a2;
|
|
6767
|
-
const requestId =
|
|
6747
|
+
const requestId = createRequestId();
|
|
6768
6748
|
const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.origin) : input;
|
|
6769
6749
|
const request = new Request(resolvedInput, init);
|
|
6770
6750
|
this.logger.info("[%s] %s", request.method, request.url);
|
|
@@ -6879,7 +6859,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
6879
6859
|
});
|
|
6880
6860
|
}
|
|
6881
6861
|
|
|
6882
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
6862
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/chunk-VYFS2IF2.mjs
|
|
6883
6863
|
function concatArrayBuffer(left, right) {
|
|
6884
6864
|
const result = new Uint8Array(left.byteLength + right.byteLength);
|
|
6885
6865
|
result.set(left, 0);
|
|
@@ -7073,7 +7053,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7073
7053
|
this.method = "GET";
|
|
7074
7054
|
this.url = null;
|
|
7075
7055
|
this.events = /* @__PURE__ */ new Map();
|
|
7076
|
-
this.requestId =
|
|
7056
|
+
this.requestId = createRequestId();
|
|
7077
7057
|
this.requestHeaders = new Headers();
|
|
7078
7058
|
this.responseBuffer = new Uint8Array();
|
|
7079
7059
|
this.request = createProxy(initialRequest, {
|
|
@@ -7155,7 +7135,10 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7155
7135
|
this.request.readyState
|
|
7156
7136
|
);
|
|
7157
7137
|
if (IS_NODE2) {
|
|
7158
|
-
this.request.setRequestHeader(
|
|
7138
|
+
this.request.setRequestHeader(
|
|
7139
|
+
INTERNAL_REQUEST_ID_HEADER_NAME,
|
|
7140
|
+
this.requestId
|
|
7141
|
+
);
|
|
7159
7142
|
}
|
|
7160
7143
|
return invoke();
|
|
7161
7144
|
}
|
|
@@ -7701,32 +7684,39 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7701
7684
|
}
|
|
7702
7685
|
}
|
|
7703
7686
|
|
|
7704
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.26.
|
|
7687
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.26.15/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.mjs
|
|
7705
7688
|
function bindEvent(target, event) {
|
|
7706
|
-
Object.
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7689
|
+
Object.defineProperties(event, {
|
|
7690
|
+
target: {
|
|
7691
|
+
value: target,
|
|
7692
|
+
enumerable: true,
|
|
7693
|
+
writable: true
|
|
7694
|
+
},
|
|
7695
|
+
currentTarget: {
|
|
7696
|
+
value: target,
|
|
7697
|
+
enumerable: true,
|
|
7698
|
+
writable: true
|
|
7699
|
+
}
|
|
7710
7700
|
});
|
|
7711
7701
|
return event;
|
|
7712
7702
|
}
|
|
7713
7703
|
var kCancelable = Symbol("kCancelable");
|
|
7714
|
-
var
|
|
7704
|
+
var kDefaultPrevented = Symbol("kDefaultPrevented");
|
|
7715
7705
|
var CancelableMessageEvent = class extends MessageEvent {
|
|
7716
7706
|
constructor(type, init) {
|
|
7717
7707
|
super(type, init);
|
|
7718
7708
|
this[kCancelable] = !!init.cancelable;
|
|
7719
|
-
this[
|
|
7709
|
+
this[kDefaultPrevented] = false;
|
|
7720
7710
|
}
|
|
7721
7711
|
get cancelable() {
|
|
7722
7712
|
return this[kCancelable];
|
|
7723
7713
|
}
|
|
7724
7714
|
get defaultPrevented() {
|
|
7725
|
-
return this[
|
|
7715
|
+
return this[kDefaultPrevented];
|
|
7726
7716
|
}
|
|
7727
7717
|
preventDefault() {
|
|
7728
|
-
if (this.cancelable && !this[
|
|
7729
|
-
this[
|
|
7718
|
+
if (this.cancelable && !this[kDefaultPrevented]) {
|
|
7719
|
+
this[kDefaultPrevented] = true;
|
|
7730
7720
|
}
|
|
7731
7721
|
}
|
|
7732
7722
|
};
|
|
@@ -7743,7 +7733,7 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7743
7733
|
constructor(socket, transport) {
|
|
7744
7734
|
this.socket = socket;
|
|
7745
7735
|
this.transport = transport;
|
|
7746
|
-
this.id =
|
|
7736
|
+
this.id = createRequestId();
|
|
7747
7737
|
this.url = new URL(socket.url);
|
|
7748
7738
|
this[kEmitter2] = new EventTarget();
|
|
7749
7739
|
this.transport.onOutgoing = (data) => {
|
|
@@ -7760,8 +7750,8 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7760
7750
|
/**
|
|
7761
7751
|
* Listen for the outgoing events from the connected WebSocket client.
|
|
7762
7752
|
*/
|
|
7763
|
-
addEventListener(
|
|
7764
|
-
this[kEmitter2].addEventListener(
|
|
7753
|
+
addEventListener(type, listener, options) {
|
|
7754
|
+
this[kEmitter2].addEventListener(type, listener, options);
|
|
7765
7755
|
}
|
|
7766
7756
|
/**
|
|
7767
7757
|
* Removes the listener for the given event.
|
|
@@ -7788,129 +7778,6 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
7788
7778
|
this.transport.close(code, reason);
|
|
7789
7779
|
}
|
|
7790
7780
|
};
|
|
7791
|
-
var kEmitter22 = Symbol("kEmitter");
|
|
7792
|
-
var WebSocketServerConnection = class {
|
|
7793
|
-
constructor(socket, transport, createConnection) {
|
|
7794
|
-
this.socket = socket;
|
|
7795
|
-
this.transport = transport;
|
|
7796
|
-
this.createConnection = createConnection;
|
|
7797
|
-
this[kEmitter22] = new EventTarget();
|
|
7798
|
-
this.transport.onIncoming = (event) => {
|
|
7799
|
-
const messageEvent = bindEvent(
|
|
7800
|
-
this.realWebSocket,
|
|
7801
|
-
new CancelableMessageEvent("message", {
|
|
7802
|
-
data: event.data,
|
|
7803
|
-
origin: event.origin,
|
|
7804
|
-
cancelable: true
|
|
7805
|
-
})
|
|
7806
|
-
);
|
|
7807
|
-
this[kEmitter22].dispatchEvent(messageEvent);
|
|
7808
|
-
if (!messageEvent.defaultPrevented) {
|
|
7809
|
-
this.socket.dispatchEvent(
|
|
7810
|
-
bindEvent(
|
|
7811
|
-
/**
|
|
7812
|
-
* @note Bind the forwarded original server events
|
|
7813
|
-
* to the mock WebSocket instance so it would
|
|
7814
|
-
* dispatch them straight away.
|
|
7815
|
-
*/
|
|
7816
|
-
this.socket,
|
|
7817
|
-
// Clone the message event again to prevent
|
|
7818
|
-
// the "already being dispatched" exception.
|
|
7819
|
-
new MessageEvent("message", {
|
|
7820
|
-
data: event.data,
|
|
7821
|
-
origin: event.origin
|
|
7822
|
-
})
|
|
7823
|
-
)
|
|
7824
|
-
);
|
|
7825
|
-
}
|
|
7826
|
-
};
|
|
7827
|
-
}
|
|
7828
|
-
/**
|
|
7829
|
-
* Server ready state.
|
|
7830
|
-
* Proxies the ready state of the original WebSocket instance,
|
|
7831
|
-
* if set. If the original connection hasn't been established,
|
|
7832
|
-
* defaults to `-1`.
|
|
7833
|
-
*/
|
|
7834
|
-
get readyState() {
|
|
7835
|
-
if (this.realWebSocket) {
|
|
7836
|
-
return this.realWebSocket.readyState;
|
|
7837
|
-
}
|
|
7838
|
-
return -1;
|
|
7839
|
-
}
|
|
7840
|
-
/**
|
|
7841
|
-
* Open connection to the original WebSocket server.
|
|
7842
|
-
*/
|
|
7843
|
-
connect() {
|
|
7844
|
-
invariant(
|
|
7845
|
-
this.readyState === -1,
|
|
7846
|
-
'Failed to call "connect()" on the original WebSocket instance: the connection already open'
|
|
7847
|
-
);
|
|
7848
|
-
const ws2 = this.createConnection();
|
|
7849
|
-
ws2.binaryType = this.socket.binaryType;
|
|
7850
|
-
this.socket.addEventListener(
|
|
7851
|
-
"close",
|
|
7852
|
-
(event) => {
|
|
7853
|
-
ws2.close(event.code, event.reason);
|
|
7854
|
-
},
|
|
7855
|
-
{ once: true }
|
|
7856
|
-
);
|
|
7857
|
-
ws2.addEventListener("message", (event) => {
|
|
7858
|
-
this.transport.onIncoming(event);
|
|
7859
|
-
});
|
|
7860
|
-
ws2.addEventListener("error", () => {
|
|
7861
|
-
this.socket.dispatchEvent(bindEvent(this.socket, new Event("error")));
|
|
7862
|
-
});
|
|
7863
|
-
this.realWebSocket = ws2;
|
|
7864
|
-
}
|
|
7865
|
-
/**
|
|
7866
|
-
* Listen for the incoming events from the original WebSocket server.
|
|
7867
|
-
*/
|
|
7868
|
-
addEventListener(event, listener, options) {
|
|
7869
|
-
this[kEmitter22].addEventListener(
|
|
7870
|
-
event,
|
|
7871
|
-
listener.bind(this.realWebSocket),
|
|
7872
|
-
options
|
|
7873
|
-
);
|
|
7874
|
-
}
|
|
7875
|
-
/**
|
|
7876
|
-
* Removes the listener for the given event.
|
|
7877
|
-
*/
|
|
7878
|
-
removeEventListener(event, listener, options) {
|
|
7879
|
-
this[kEmitter22].removeEventListener(
|
|
7880
|
-
event,
|
|
7881
|
-
listener,
|
|
7882
|
-
options
|
|
7883
|
-
);
|
|
7884
|
-
}
|
|
7885
|
-
/**
|
|
7886
|
-
* Send data to the original WebSocket server.
|
|
7887
|
-
* @example
|
|
7888
|
-
* server.send('hello')
|
|
7889
|
-
* server.send(new Blob(['hello']))
|
|
7890
|
-
* server.send(new TextEncoder().encode('hello'))
|
|
7891
|
-
*/
|
|
7892
|
-
send(data) {
|
|
7893
|
-
const { realWebSocket } = this;
|
|
7894
|
-
invariant(
|
|
7895
|
-
realWebSocket,
|
|
7896
|
-
'Failed to call "server.send()" for "%s": the connection is not open. Did you forget to call "await server.connect()"?',
|
|
7897
|
-
this.socket.url
|
|
7898
|
-
);
|
|
7899
|
-
if (realWebSocket.readyState === realWebSocket.CONNECTING) {
|
|
7900
|
-
realWebSocket.addEventListener(
|
|
7901
|
-
"open",
|
|
7902
|
-
() => {
|
|
7903
|
-
realWebSocket.send(data);
|
|
7904
|
-
},
|
|
7905
|
-
{ once: true }
|
|
7906
|
-
);
|
|
7907
|
-
return;
|
|
7908
|
-
}
|
|
7909
|
-
realWebSocket.send(data);
|
|
7910
|
-
}
|
|
7911
|
-
};
|
|
7912
|
-
var WebSocketTransport = class {
|
|
7913
|
-
};
|
|
7914
7781
|
var WEBSOCKET_CLOSE_CODE_RANGE_ERROR = "InvalidAccessError: close code out of user configurable range";
|
|
7915
7782
|
var kOnSend = Symbol("kOnSend");
|
|
7916
7783
|
var kClose = Symbol("kClose");
|
|
@@ -8057,6 +7924,176 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
8057
7924
|
}
|
|
8058
7925
|
return data.byteLength;
|
|
8059
7926
|
}
|
|
7927
|
+
var kEmitter22 = Symbol("kEmitter");
|
|
7928
|
+
var WebSocketServerConnection = class {
|
|
7929
|
+
constructor(socket, transport, createConnection) {
|
|
7930
|
+
this.socket = socket;
|
|
7931
|
+
this.transport = transport;
|
|
7932
|
+
this.createConnection = createConnection;
|
|
7933
|
+
this[kEmitter22] = new EventTarget();
|
|
7934
|
+
this.mockCloseController = new AbortController();
|
|
7935
|
+
this.transport.onIncoming = (event) => {
|
|
7936
|
+
const messageEvent = bindEvent(
|
|
7937
|
+
this.realWebSocket,
|
|
7938
|
+
new CancelableMessageEvent("message", {
|
|
7939
|
+
data: event.data,
|
|
7940
|
+
origin: event.origin,
|
|
7941
|
+
cancelable: true
|
|
7942
|
+
})
|
|
7943
|
+
);
|
|
7944
|
+
this[kEmitter22].dispatchEvent(messageEvent);
|
|
7945
|
+
if (!messageEvent.defaultPrevented) {
|
|
7946
|
+
this.socket.dispatchEvent(
|
|
7947
|
+
bindEvent(
|
|
7948
|
+
/**
|
|
7949
|
+
* @note Bind the forwarded original server events
|
|
7950
|
+
* to the mock WebSocket instance so it would
|
|
7951
|
+
* dispatch them straight away.
|
|
7952
|
+
*/
|
|
7953
|
+
this.socket,
|
|
7954
|
+
// Clone the message event again to prevent
|
|
7955
|
+
// the "already being dispatched" exception.
|
|
7956
|
+
new MessageEvent("message", {
|
|
7957
|
+
data: event.data,
|
|
7958
|
+
origin: event.origin
|
|
7959
|
+
})
|
|
7960
|
+
)
|
|
7961
|
+
);
|
|
7962
|
+
}
|
|
7963
|
+
};
|
|
7964
|
+
}
|
|
7965
|
+
/**
|
|
7966
|
+
* Server ready state.
|
|
7967
|
+
* Proxies the ready state of the original WebSocket instance,
|
|
7968
|
+
* if set. If the original connection hasn't been established,
|
|
7969
|
+
* defaults to `-1`.
|
|
7970
|
+
*/
|
|
7971
|
+
get readyState() {
|
|
7972
|
+
if (this.realWebSocket) {
|
|
7973
|
+
return this.realWebSocket.readyState;
|
|
7974
|
+
}
|
|
7975
|
+
return -1;
|
|
7976
|
+
}
|
|
7977
|
+
/**
|
|
7978
|
+
* Open connection to the original WebSocket server.
|
|
7979
|
+
*/
|
|
7980
|
+
connect() {
|
|
7981
|
+
invariant(
|
|
7982
|
+
!this.realWebSocket || this.realWebSocket.readyState !== WebSocket.OPEN,
|
|
7983
|
+
'Failed to call "connect()" on the original WebSocket instance: the connection already open'
|
|
7984
|
+
);
|
|
7985
|
+
const realWebSocket = this.createConnection();
|
|
7986
|
+
realWebSocket.binaryType = this.socket.binaryType;
|
|
7987
|
+
realWebSocket.addEventListener(
|
|
7988
|
+
"open",
|
|
7989
|
+
(event) => {
|
|
7990
|
+
this[kEmitter22].dispatchEvent(
|
|
7991
|
+
bindEvent(this.realWebSocket, new Event("open", event))
|
|
7992
|
+
);
|
|
7993
|
+
},
|
|
7994
|
+
{ once: true }
|
|
7995
|
+
);
|
|
7996
|
+
realWebSocket.addEventListener("message", (event) => {
|
|
7997
|
+
this.transport.onIncoming(event);
|
|
7998
|
+
});
|
|
7999
|
+
this.socket.addEventListener("close", this.handleMockClose.bind(this), {
|
|
8000
|
+
signal: this.mockCloseController.signal
|
|
8001
|
+
});
|
|
8002
|
+
realWebSocket.addEventListener("close", this.handleRealClose.bind(this));
|
|
8003
|
+
realWebSocket.addEventListener("error", () => {
|
|
8004
|
+
this.socket.dispatchEvent(bindEvent(this.socket, new Event("error")));
|
|
8005
|
+
});
|
|
8006
|
+
this.realWebSocket = realWebSocket;
|
|
8007
|
+
}
|
|
8008
|
+
/**
|
|
8009
|
+
* Listen for the incoming events from the original WebSocket server.
|
|
8010
|
+
*/
|
|
8011
|
+
addEventListener(event, listener, options) {
|
|
8012
|
+
this[kEmitter22].addEventListener(
|
|
8013
|
+
event,
|
|
8014
|
+
listener.bind(this.realWebSocket),
|
|
8015
|
+
options
|
|
8016
|
+
);
|
|
8017
|
+
}
|
|
8018
|
+
/**
|
|
8019
|
+
* Remove the listener for the given event.
|
|
8020
|
+
*/
|
|
8021
|
+
removeEventListener(event, listener, options) {
|
|
8022
|
+
this[kEmitter22].removeEventListener(
|
|
8023
|
+
event,
|
|
8024
|
+
listener,
|
|
8025
|
+
options
|
|
8026
|
+
);
|
|
8027
|
+
}
|
|
8028
|
+
/**
|
|
8029
|
+
* Send data to the original WebSocket server.
|
|
8030
|
+
* @example
|
|
8031
|
+
* server.send('hello')
|
|
8032
|
+
* server.send(new Blob(['hello']))
|
|
8033
|
+
* server.send(new TextEncoder().encode('hello'))
|
|
8034
|
+
*/
|
|
8035
|
+
send(data) {
|
|
8036
|
+
const { realWebSocket } = this;
|
|
8037
|
+
invariant(
|
|
8038
|
+
realWebSocket,
|
|
8039
|
+
'Failed to call "server.send()" for "%s": the connection is not open. Did you forget to call "server.connect()"?',
|
|
8040
|
+
this.socket.url
|
|
8041
|
+
);
|
|
8042
|
+
if (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) {
|
|
8043
|
+
return;
|
|
8044
|
+
}
|
|
8045
|
+
if (realWebSocket.readyState === WebSocket.CONNECTING) {
|
|
8046
|
+
realWebSocket.addEventListener(
|
|
8047
|
+
"open",
|
|
8048
|
+
() => {
|
|
8049
|
+
realWebSocket.send(data);
|
|
8050
|
+
},
|
|
8051
|
+
{ once: true }
|
|
8052
|
+
);
|
|
8053
|
+
return;
|
|
8054
|
+
}
|
|
8055
|
+
realWebSocket.send(data);
|
|
8056
|
+
}
|
|
8057
|
+
/**
|
|
8058
|
+
* Close the actual server connection.
|
|
8059
|
+
*/
|
|
8060
|
+
close() {
|
|
8061
|
+
const { realWebSocket } = this;
|
|
8062
|
+
invariant(
|
|
8063
|
+
realWebSocket,
|
|
8064
|
+
'Failed to close server connection for "%s": the connection is not open. Did you forget to call "server.connect()"?',
|
|
8065
|
+
this.socket.url
|
|
8066
|
+
);
|
|
8067
|
+
realWebSocket.removeEventListener("close", this.handleRealClose);
|
|
8068
|
+
if (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) {
|
|
8069
|
+
return;
|
|
8070
|
+
}
|
|
8071
|
+
realWebSocket.close();
|
|
8072
|
+
queueMicrotask(() => {
|
|
8073
|
+
this[kEmitter22].dispatchEvent(
|
|
8074
|
+
bindEvent(this.realWebSocket, new CloseEvent("close"))
|
|
8075
|
+
);
|
|
8076
|
+
});
|
|
8077
|
+
}
|
|
8078
|
+
handleMockClose(_event) {
|
|
8079
|
+
if (this.realWebSocket) {
|
|
8080
|
+
this.realWebSocket.close();
|
|
8081
|
+
}
|
|
8082
|
+
}
|
|
8083
|
+
handleRealClose(event) {
|
|
8084
|
+
this.mockCloseController.abort();
|
|
8085
|
+
const closeEvent = bindEvent(
|
|
8086
|
+
this.realWebSocket,
|
|
8087
|
+
new CloseEvent("close", event)
|
|
8088
|
+
);
|
|
8089
|
+
this[kEmitter22].dispatchEvent(closeEvent);
|
|
8090
|
+
if (!closeEvent.defaultPrevented) {
|
|
8091
|
+
this.socket[kClose](event.code, event.reason);
|
|
8092
|
+
}
|
|
8093
|
+
}
|
|
8094
|
+
};
|
|
8095
|
+
var WebSocketTransport = class {
|
|
8096
|
+
};
|
|
8060
8097
|
var WebSocketClassTransport = class extends WebSocketTransport {
|
|
8061
8098
|
constructor(socket) {
|
|
8062
8099
|
super();
|
|
@@ -8138,30 +8175,33 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
8138
8175
|
// src/core/ws/webSocketInterceptor.ts
|
|
8139
8176
|
var webSocketInterceptor = new WebSocketInterceptor();
|
|
8140
8177
|
|
|
8141
|
-
// src/core/
|
|
8142
|
-
function handleWebSocketEvent(
|
|
8178
|
+
// src/core/ws/handleWebSocketEvent.ts
|
|
8179
|
+
function handleWebSocketEvent(options) {
|
|
8143
8180
|
webSocketInterceptor.on("connection", (connection) => {
|
|
8144
|
-
const handlers =
|
|
8181
|
+
const handlers = options.getHandlers();
|
|
8145
8182
|
const connectionEvent = new MessageEvent("connection", {
|
|
8146
8183
|
data: connection
|
|
8147
|
-
/**
|
|
8148
|
-
* @note This message event should be marked as "cancelable"
|
|
8149
|
-
* to have its default prevented using "event.preventDefault()".
|
|
8150
|
-
* There's a bug in Node.js that breaks the "cancelable" flag.
|
|
8151
|
-
* @see https://github.com/nodejs/node/issues/51767
|
|
8152
|
-
*/
|
|
8153
|
-
});
|
|
8154
|
-
Object.defineProperty(connectionEvent, kDefaultPrevented, {
|
|
8155
|
-
enumerable: false,
|
|
8156
|
-
writable: true,
|
|
8157
|
-
value: false
|
|
8158
8184
|
});
|
|
8159
|
-
|
|
8160
|
-
|
|
8185
|
+
const matchingHandlers = handlers.filter(
|
|
8186
|
+
(handler) => {
|
|
8187
|
+
if (handler instanceof WebSocketHandler) {
|
|
8188
|
+
return handler.predicate({
|
|
8189
|
+
event: connectionEvent,
|
|
8190
|
+
parsedResult: handler.parse({
|
|
8191
|
+
event: connectionEvent
|
|
8192
|
+
})
|
|
8193
|
+
});
|
|
8194
|
+
}
|
|
8195
|
+
return false;
|
|
8196
|
+
}
|
|
8197
|
+
);
|
|
8198
|
+
if (matchingHandlers.length > 0) {
|
|
8199
|
+
options?.onMockedConnection(connection);
|
|
8200
|
+
for (const handler of matchingHandlers) {
|
|
8161
8201
|
handler[kDispatchEvent](connectionEvent);
|
|
8162
8202
|
}
|
|
8163
|
-
}
|
|
8164
|
-
|
|
8203
|
+
} else {
|
|
8204
|
+
options?.onPassthroughConnection(connection);
|
|
8165
8205
|
connection.server.connect();
|
|
8166
8206
|
connection.client.addEventListener("message", (event) => {
|
|
8167
8207
|
connection.server.send(event.data);
|
|
@@ -8170,6 +8210,217 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
8170
8210
|
});
|
|
8171
8211
|
}
|
|
8172
8212
|
|
|
8213
|
+
// src/core/ws/utils/getMessageLength.ts
|
|
8214
|
+
function getMessageLength(data) {
|
|
8215
|
+
if (data instanceof Blob) {
|
|
8216
|
+
return data.size;
|
|
8217
|
+
}
|
|
8218
|
+
if (data instanceof ArrayBuffer) {
|
|
8219
|
+
return data.byteLength;
|
|
8220
|
+
}
|
|
8221
|
+
return new Blob([data]).size;
|
|
8222
|
+
}
|
|
8223
|
+
|
|
8224
|
+
// src/core/ws/utils/truncateMessage.ts
|
|
8225
|
+
var MAX_LENGTH = 24;
|
|
8226
|
+
function truncateMessage(message3) {
|
|
8227
|
+
if (message3.length <= MAX_LENGTH) {
|
|
8228
|
+
return message3;
|
|
8229
|
+
}
|
|
8230
|
+
return `${message3.slice(0, MAX_LENGTH)}\u2026`;
|
|
8231
|
+
}
|
|
8232
|
+
|
|
8233
|
+
// src/core/ws/utils/getPublicData.ts
|
|
8234
|
+
async function getPublicData(data) {
|
|
8235
|
+
if (data instanceof Blob) {
|
|
8236
|
+
const text = await data.text();
|
|
8237
|
+
return `Blob(${truncateMessage(text)})`;
|
|
8238
|
+
}
|
|
8239
|
+
if (typeof data === "object" && "byteLength" in data) {
|
|
8240
|
+
const text = new TextDecoder().decode(data);
|
|
8241
|
+
return `ArrayBuffer(${truncateMessage(text)})`;
|
|
8242
|
+
}
|
|
8243
|
+
return truncateMessage(data);
|
|
8244
|
+
}
|
|
8245
|
+
|
|
8246
|
+
// src/core/ws/utils/attachWebSocketLogger.ts
|
|
8247
|
+
function attachWebSocketLogger(connection) {
|
|
8248
|
+
const { client, server } = connection;
|
|
8249
|
+
logConnectionOpen(client);
|
|
8250
|
+
client.addEventListener("message", (event) => {
|
|
8251
|
+
logOutgoingClientMessage(event);
|
|
8252
|
+
});
|
|
8253
|
+
client.addEventListener("close", (event) => {
|
|
8254
|
+
logConnectionClose(event);
|
|
8255
|
+
});
|
|
8256
|
+
client.socket.addEventListener("message", (event) => {
|
|
8257
|
+
logIncomingClientMessage(event);
|
|
8258
|
+
});
|
|
8259
|
+
client.socket.addEventListener("error", (event) => {
|
|
8260
|
+
logClientError(event);
|
|
8261
|
+
});
|
|
8262
|
+
client.send = new Proxy(client.send, {
|
|
8263
|
+
apply(target, thisArg, args) {
|
|
8264
|
+
const [data] = args;
|
|
8265
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
8266
|
+
Object.defineProperties(messageEvent, {
|
|
8267
|
+
currentTarget: {
|
|
8268
|
+
enumerable: true,
|
|
8269
|
+
writable: false,
|
|
8270
|
+
value: client.socket
|
|
8271
|
+
},
|
|
8272
|
+
target: {
|
|
8273
|
+
enumerable: true,
|
|
8274
|
+
writable: false,
|
|
8275
|
+
value: client.socket
|
|
8276
|
+
}
|
|
8277
|
+
});
|
|
8278
|
+
logIncomingMockedClientMessage(messageEvent);
|
|
8279
|
+
return Reflect.apply(target, thisArg, args);
|
|
8280
|
+
}
|
|
8281
|
+
});
|
|
8282
|
+
server.addEventListener(
|
|
8283
|
+
"open",
|
|
8284
|
+
() => {
|
|
8285
|
+
server.addEventListener("message", (event) => {
|
|
8286
|
+
logIncomingServerMessage(event);
|
|
8287
|
+
});
|
|
8288
|
+
},
|
|
8289
|
+
{ once: true }
|
|
8290
|
+
);
|
|
8291
|
+
server.send = new Proxy(server.send, {
|
|
8292
|
+
apply(target, thisArg, args) {
|
|
8293
|
+
const [data] = args;
|
|
8294
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
8295
|
+
Object.defineProperties(messageEvent, {
|
|
8296
|
+
currentTarget: {
|
|
8297
|
+
enumerable: true,
|
|
8298
|
+
writable: false,
|
|
8299
|
+
value: server["realWebSocket"]
|
|
8300
|
+
},
|
|
8301
|
+
target: {
|
|
8302
|
+
enumerable: true,
|
|
8303
|
+
writable: false,
|
|
8304
|
+
value: server["realWebSocket"]
|
|
8305
|
+
}
|
|
8306
|
+
});
|
|
8307
|
+
logOutgoingMockedClientMessage(messageEvent);
|
|
8308
|
+
return Reflect.apply(target, thisArg, args);
|
|
8309
|
+
}
|
|
8310
|
+
});
|
|
8311
|
+
}
|
|
8312
|
+
function logConnectionOpen(client) {
|
|
8313
|
+
const publicUrl = toPublicUrl(client.url);
|
|
8314
|
+
console.groupCollapsed(
|
|
8315
|
+
devUtils.formatMessage(`${getTimestamp()} %c\u25B8%c ${publicUrl}`),
|
|
8316
|
+
"color:blue",
|
|
8317
|
+
"color:inherit"
|
|
8318
|
+
);
|
|
8319
|
+
console.log("Client:", client.socket);
|
|
8320
|
+
console.groupEnd();
|
|
8321
|
+
}
|
|
8322
|
+
async function logOutgoingClientMessage(event) {
|
|
8323
|
+
const byteLength = getMessageLength(event.data);
|
|
8324
|
+
const publicData = await getPublicData(event.data);
|
|
8325
|
+
console.groupCollapsed(
|
|
8326
|
+
devUtils.formatMessage(
|
|
8327
|
+
`${getTimestamp({ milliseconds: true })} %c\u2191%c ${publicData} %c${byteLength}%c`
|
|
8328
|
+
),
|
|
8329
|
+
"color:green",
|
|
8330
|
+
"color:inherit",
|
|
8331
|
+
"color:gray;font-weight:normal",
|
|
8332
|
+
"color:inherit;font-weight:inherit"
|
|
8333
|
+
);
|
|
8334
|
+
console.log(event);
|
|
8335
|
+
console.groupEnd();
|
|
8336
|
+
}
|
|
8337
|
+
async function logOutgoingMockedClientMessage(event) {
|
|
8338
|
+
const byteLength = getMessageLength(event.data);
|
|
8339
|
+
const publicData = await getPublicData(event.data);
|
|
8340
|
+
console.groupCollapsed(
|
|
8341
|
+
devUtils.formatMessage(
|
|
8342
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E1%c ${publicData} %c${byteLength}%c`
|
|
8343
|
+
),
|
|
8344
|
+
"color:orangered",
|
|
8345
|
+
"color:inherit",
|
|
8346
|
+
"color:gray;font-weight:normal",
|
|
8347
|
+
"color:inherit;font-weight:inherit"
|
|
8348
|
+
);
|
|
8349
|
+
console.log(event);
|
|
8350
|
+
console.groupEnd();
|
|
8351
|
+
}
|
|
8352
|
+
async function logIncomingClientMessage(event) {
|
|
8353
|
+
const byteLength = getMessageLength(event.data);
|
|
8354
|
+
const publicData = await getPublicData(event.data);
|
|
8355
|
+
console.groupCollapsed(
|
|
8356
|
+
devUtils.formatMessage(
|
|
8357
|
+
`${getTimestamp({ milliseconds: true })} %c\u2193%c ${publicData} %c${byteLength}%c`
|
|
8358
|
+
),
|
|
8359
|
+
"color:red",
|
|
8360
|
+
"color:inherit",
|
|
8361
|
+
"color:gray;font-weight:normal",
|
|
8362
|
+
"color:inherit;font-weight:inherit"
|
|
8363
|
+
);
|
|
8364
|
+
console.log(event);
|
|
8365
|
+
console.groupEnd();
|
|
8366
|
+
}
|
|
8367
|
+
async function logIncomingMockedClientMessage(event) {
|
|
8368
|
+
const byteLength = getMessageLength(event.data);
|
|
8369
|
+
const publicData = await getPublicData(event.data);
|
|
8370
|
+
console.groupCollapsed(
|
|
8371
|
+
devUtils.formatMessage(
|
|
8372
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
8373
|
+
),
|
|
8374
|
+
"color:orangered",
|
|
8375
|
+
"color:inherit",
|
|
8376
|
+
"color:gray;font-weight:normal",
|
|
8377
|
+
"color:inherit;font-weight:inherit"
|
|
8378
|
+
);
|
|
8379
|
+
console.log(event);
|
|
8380
|
+
console.groupEnd();
|
|
8381
|
+
}
|
|
8382
|
+
function logConnectionClose(event) {
|
|
8383
|
+
const target = event.target;
|
|
8384
|
+
const publicUrl = toPublicUrl(target.url);
|
|
8385
|
+
console.groupCollapsed(
|
|
8386
|
+
devUtils.formatMessage(
|
|
8387
|
+
`${getTimestamp({ milliseconds: true })} %c\u25A0%c ${publicUrl}`
|
|
8388
|
+
),
|
|
8389
|
+
"color:blue",
|
|
8390
|
+
"color:inherit"
|
|
8391
|
+
);
|
|
8392
|
+
console.log(event);
|
|
8393
|
+
console.groupEnd();
|
|
8394
|
+
}
|
|
8395
|
+
async function logIncomingServerMessage(event) {
|
|
8396
|
+
const byteLength = getMessageLength(event.data);
|
|
8397
|
+
const publicData = await getPublicData(event.data);
|
|
8398
|
+
console.groupCollapsed(
|
|
8399
|
+
devUtils.formatMessage(
|
|
8400
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
8401
|
+
),
|
|
8402
|
+
"color:orangered",
|
|
8403
|
+
"color:inherit",
|
|
8404
|
+
"color:gray;font-weight:normal",
|
|
8405
|
+
"color:inherit;font-weight:inherit"
|
|
8406
|
+
);
|
|
8407
|
+
console.log(event);
|
|
8408
|
+
console.groupEnd();
|
|
8409
|
+
}
|
|
8410
|
+
function logClientError(event) {
|
|
8411
|
+
const socket = event.target;
|
|
8412
|
+
const publicUrl = toPublicUrl(socket.url);
|
|
8413
|
+
console.groupCollapsed(
|
|
8414
|
+
devUtils.formatMessage(
|
|
8415
|
+
`${getTimestamp({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
8416
|
+
),
|
|
8417
|
+
"color:red",
|
|
8418
|
+
"color:inherit"
|
|
8419
|
+
);
|
|
8420
|
+
console.log(event);
|
|
8421
|
+
console.groupEnd();
|
|
8422
|
+
}
|
|
8423
|
+
|
|
8173
8424
|
// src/browser/setupWorker/setupWorker.ts
|
|
8174
8425
|
var SetupWorkerApi = class extends SetupApi {
|
|
8175
8426
|
context;
|
|
@@ -8286,8 +8537,17 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
8286
8537
|
DEFAULT_START_OPTIONS,
|
|
8287
8538
|
options
|
|
8288
8539
|
);
|
|
8289
|
-
handleWebSocketEvent(
|
|
8290
|
-
|
|
8540
|
+
handleWebSocketEvent({
|
|
8541
|
+
getHandlers: () => {
|
|
8542
|
+
return this.handlersController.currentHandlers();
|
|
8543
|
+
},
|
|
8544
|
+
onMockedConnection: (connection) => {
|
|
8545
|
+
if (!this.context.startOptions.quiet) {
|
|
8546
|
+
attachWebSocketLogger(connection);
|
|
8547
|
+
}
|
|
8548
|
+
},
|
|
8549
|
+
onPassthroughConnection() {
|
|
8550
|
+
}
|
|
8291
8551
|
});
|
|
8292
8552
|
webSocketInterceptor.apply();
|
|
8293
8553
|
this.subscriptions.push(() => {
|