msw 2.3.0-ws.rc-1 → 2.3.0-ws.rc-2
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 +64 -59
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +64 -59
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{GraphQLHandler-Cbu12sb0.d.ts → GraphQLHandler-3gvpA65n.d.ts} +3 -3
- package/lib/core/{GraphQLHandler-QGQY_9Rc.d.mts → GraphQLHandler-4DPdxG0R.d.mts} +3 -3
- package/lib/core/{HttpResponse-BWB1yDNM.d.mts → HttpResponse-aJY-D0oG.d.ts} +3 -3
- package/lib/core/{HttpResponse-DeJBWGN5.d.ts → HttpResponse-xuSipbNt.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 +4 -4
- package/lib/core/index.d.ts +4 -4
- package/lib/core/index.js +2 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +4 -0
- 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/handleWebSocketEvent.d.mts +8 -2
- package/lib/core/utils/handleWebSocketEvent.d.ts +8 -2
- package/lib/core/utils/handleWebSocketEvent.js +20 -17
- package/lib/core/utils/handleWebSocketEvent.js.map +1 -1
- package/lib/core/utils/handleWebSocketEvent.mjs +21 -22
- package/lib/core/utils/handleWebSocketEvent.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/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/iife/index.js +508 -231
- 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 +8 -2
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +8 -2
- 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 +8 -2
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +8 -2
- package/lib/node/index.mjs.map +1 -1
- package/package.json +8 -11
- package/src/browser/setupWorker/glossary.ts +4 -1
- package/src/browser/setupWorker/setupWorker.ts +19 -2
- 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 +6 -2
- 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/handleWebSocketEvent.ts +39 -29
- 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/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/mockServiceWorker.js +7 -10
- package/src/node/SetupServerApi.ts +4 -4
- package/src/node/SetupServerCommonApi.ts +6 -2
- package/src/node/glossary.ts +3 -3
- 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/src/browser/utils/requestIntegrityCheck.ts +0 -23
- package/src/core/utils/internal/randomId.ts +0 -3
|
@@ -0,0 +1,211 @@
|
|
|
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 attachWebSocketLogger_exports = {};
|
|
20
|
+
__export(attachWebSocketLogger_exports, {
|
|
21
|
+
attachWebSocketLogger: () => attachWebSocketLogger,
|
|
22
|
+
logConnectionOpen: () => logConnectionOpen,
|
|
23
|
+
logIncomingClientMessage: () => logIncomingClientMessage,
|
|
24
|
+
logIncomingMockedClientMessage: () => logIncomingMockedClientMessage,
|
|
25
|
+
logIncomingServerMessage: () => logIncomingServerMessage,
|
|
26
|
+
logOutgoingClientMessage: () => logOutgoingClientMessage,
|
|
27
|
+
logOutgoingMockedClientMessage: () => logOutgoingMockedClientMessage
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(attachWebSocketLogger_exports);
|
|
30
|
+
var import_devUtils = require("../../utils/internal/devUtils.js");
|
|
31
|
+
var import_getTimestamp = require("../../utils/logging/getTimestamp.js");
|
|
32
|
+
var import_toPublicUrl = require("../../utils/request/toPublicUrl.js");
|
|
33
|
+
var import_getMessageLength = require("./getMessageLength.js");
|
|
34
|
+
var import_getPublicData = require("./getPublicData.js");
|
|
35
|
+
function attachWebSocketLogger(connection) {
|
|
36
|
+
const { client, server } = connection;
|
|
37
|
+
logConnectionOpen(client);
|
|
38
|
+
client.addEventListener("message", (event) => {
|
|
39
|
+
logOutgoingClientMessage(event);
|
|
40
|
+
});
|
|
41
|
+
client.addEventListener("close", (event) => {
|
|
42
|
+
logConnectionClose(event);
|
|
43
|
+
});
|
|
44
|
+
client.socket.addEventListener("message", (event) => {
|
|
45
|
+
logIncomingClientMessage(event);
|
|
46
|
+
});
|
|
47
|
+
client.socket.addEventListener("error", (event) => {
|
|
48
|
+
logClientError(event);
|
|
49
|
+
});
|
|
50
|
+
client.send = new Proxy(client.send, {
|
|
51
|
+
apply(target, thisArg, args) {
|
|
52
|
+
const [data] = args;
|
|
53
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
54
|
+
Object.defineProperties(messageEvent, {
|
|
55
|
+
currentTarget: {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
writable: false,
|
|
58
|
+
value: client.socket
|
|
59
|
+
},
|
|
60
|
+
target: {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
writable: false,
|
|
63
|
+
value: client.socket
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
logIncomingMockedClientMessage(messageEvent);
|
|
67
|
+
return Reflect.apply(target, thisArg, args);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
server.addEventListener(
|
|
71
|
+
"open",
|
|
72
|
+
() => {
|
|
73
|
+
server.addEventListener("message", (event) => {
|
|
74
|
+
logIncomingServerMessage(event);
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
{ once: true }
|
|
78
|
+
);
|
|
79
|
+
server.send = new Proxy(server.send, {
|
|
80
|
+
apply(target, thisArg, args) {
|
|
81
|
+
const [data] = args;
|
|
82
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
83
|
+
Object.defineProperties(messageEvent, {
|
|
84
|
+
currentTarget: {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
writable: false,
|
|
87
|
+
value: server["realWebSocket"]
|
|
88
|
+
},
|
|
89
|
+
target: {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
writable: false,
|
|
92
|
+
value: server["realWebSocket"]
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
logOutgoingMockedClientMessage(messageEvent);
|
|
96
|
+
return Reflect.apply(target, thisArg, args);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function logConnectionOpen(client) {
|
|
101
|
+
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(client.url);
|
|
102
|
+
console.groupCollapsed(
|
|
103
|
+
import_devUtils.devUtils.formatMessage(`${(0, import_getTimestamp.getTimestamp)()} %c\u25B8%c ${publicUrl}`),
|
|
104
|
+
"color:blue",
|
|
105
|
+
"color:inherit"
|
|
106
|
+
);
|
|
107
|
+
console.log("Client:", client.socket);
|
|
108
|
+
console.groupEnd();
|
|
109
|
+
}
|
|
110
|
+
async function logOutgoingClientMessage(event) {
|
|
111
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
112
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
113
|
+
console.groupCollapsed(
|
|
114
|
+
import_devUtils.devUtils.formatMessage(
|
|
115
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u2191%c ${publicData} %c${byteLength}%c`
|
|
116
|
+
),
|
|
117
|
+
"color:green",
|
|
118
|
+
"color:inherit",
|
|
119
|
+
"color:gray;font-weight:normal",
|
|
120
|
+
"color:inherit;font-weight:inherit"
|
|
121
|
+
);
|
|
122
|
+
console.log(event);
|
|
123
|
+
console.groupEnd();
|
|
124
|
+
}
|
|
125
|
+
async function logOutgoingMockedClientMessage(event) {
|
|
126
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
127
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
128
|
+
console.groupCollapsed(
|
|
129
|
+
import_devUtils.devUtils.formatMessage(
|
|
130
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u21E1%c ${publicData} %c${byteLength}%c`
|
|
131
|
+
),
|
|
132
|
+
"color:orangered",
|
|
133
|
+
"color:inherit",
|
|
134
|
+
"color:gray;font-weight:normal",
|
|
135
|
+
"color:inherit;font-weight:inherit"
|
|
136
|
+
);
|
|
137
|
+
console.log(event);
|
|
138
|
+
console.groupEnd();
|
|
139
|
+
}
|
|
140
|
+
async function logIncomingClientMessage(event) {
|
|
141
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
142
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
143
|
+
console.groupCollapsed(
|
|
144
|
+
import_devUtils.devUtils.formatMessage(
|
|
145
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u2193%c ${publicData} %c${byteLength}%c`
|
|
146
|
+
),
|
|
147
|
+
"color:red",
|
|
148
|
+
"color:inherit",
|
|
149
|
+
"color:gray;font-weight:normal",
|
|
150
|
+
"color:inherit;font-weight:inherit"
|
|
151
|
+
);
|
|
152
|
+
console.log(event);
|
|
153
|
+
console.groupEnd();
|
|
154
|
+
}
|
|
155
|
+
async function logIncomingMockedClientMessage(event) {
|
|
156
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
157
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
158
|
+
console.groupCollapsed(
|
|
159
|
+
import_devUtils.devUtils.formatMessage(
|
|
160
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
161
|
+
),
|
|
162
|
+
"color:orangered",
|
|
163
|
+
"color:inherit",
|
|
164
|
+
"color:gray;font-weight:normal",
|
|
165
|
+
"color:inherit;font-weight:inherit"
|
|
166
|
+
);
|
|
167
|
+
console.log(event);
|
|
168
|
+
console.groupEnd();
|
|
169
|
+
}
|
|
170
|
+
function logConnectionClose(event) {
|
|
171
|
+
const target = event.target;
|
|
172
|
+
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(target.url);
|
|
173
|
+
console.groupCollapsed(
|
|
174
|
+
import_devUtils.devUtils.formatMessage(
|
|
175
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u25A0%c ${publicUrl}`
|
|
176
|
+
),
|
|
177
|
+
"color:blue",
|
|
178
|
+
"color:inherit"
|
|
179
|
+
);
|
|
180
|
+
console.log(event);
|
|
181
|
+
console.groupEnd();
|
|
182
|
+
}
|
|
183
|
+
async function logIncomingServerMessage(event) {
|
|
184
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
185
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
186
|
+
console.groupCollapsed(
|
|
187
|
+
import_devUtils.devUtils.formatMessage(
|
|
188
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
189
|
+
),
|
|
190
|
+
"color:orangered",
|
|
191
|
+
"color:inherit",
|
|
192
|
+
"color:gray;font-weight:normal",
|
|
193
|
+
"color:inherit;font-weight:inherit"
|
|
194
|
+
);
|
|
195
|
+
console.log(event);
|
|
196
|
+
console.groupEnd();
|
|
197
|
+
}
|
|
198
|
+
function logClientError(event) {
|
|
199
|
+
const socket = event.target;
|
|
200
|
+
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(socket.url);
|
|
201
|
+
console.groupCollapsed(
|
|
202
|
+
import_devUtils.devUtils.formatMessage(
|
|
203
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
204
|
+
),
|
|
205
|
+
"color:red",
|
|
206
|
+
"color:inherit"
|
|
207
|
+
);
|
|
208
|
+
console.log(event);
|
|
209
|
+
console.groupEnd();
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=attachWebSocketLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/attachWebSocketLogger.ts"],"sourcesContent":["import type {\n WebSocketClientConnection,\n WebSocketConnectionData,\n WebSocketData,\n} from '@mswjs/interceptors/WebSocket'\nimport { devUtils } from '../../utils/internal/devUtils'\nimport { getTimestamp } from '../../utils/logging/getTimestamp'\nimport { toPublicUrl } from '../../utils/request/toPublicUrl'\nimport { getMessageLength } from './getMessageLength'\nimport { getPublicData } from './getPublicData'\n\nexport function attachWebSocketLogger(\n connection: WebSocketConnectionData,\n): void {\n const { client, server } = connection\n\n logConnectionOpen(client)\n\n // Log the events sent from the WebSocket client.\n // WebSocket client connection object is written from the\n // server's perspective so these message events are outgoing.\n /**\n * @todo Provide the reference to the exact event handler\n * that called this `client.send()`.\n */\n client.addEventListener('message', (event) => {\n logOutgoingClientMessage(event)\n })\n\n client.addEventListener('close', (event) => {\n logConnectionClose(event)\n })\n\n // Log the events received by the WebSocket client.\n // \"client.socket\" references the actual WebSocket instance\n // so these message events are incoming messages.\n client.socket.addEventListener('message', (event) => {\n logIncomingClientMessage(event)\n })\n\n // Log client errors (connection closures due to errors).\n client.socket.addEventListener('error', (event) => {\n logClientError(event)\n })\n\n client.send = new Proxy(client.send, {\n apply(target, thisArg, args) {\n const [data] = args\n const messageEvent = new MessageEvent('message', { data })\n Object.defineProperties(messageEvent, {\n currentTarget: {\n enumerable: true,\n writable: false,\n value: client.socket,\n },\n target: {\n enumerable: true,\n writable: false,\n value: client.socket,\n },\n })\n logIncomingMockedClientMessage(messageEvent)\n\n return Reflect.apply(target, thisArg, args)\n },\n })\n\n server.addEventListener(\n 'open',\n () => {\n server.addEventListener('message', (event) => {\n logIncomingServerMessage(event)\n })\n },\n { once: true },\n )\n\n // Log outgoing client events initiated by the event handler.\n // The actual client never sent these but the handler did.\n server.send = new Proxy(server.send, {\n apply(target, thisArg, args) {\n const [data] = args\n const messageEvent = new MessageEvent('message', { data })\n Object.defineProperties(messageEvent, {\n currentTarget: {\n enumerable: true,\n writable: false,\n value: server['realWebSocket'],\n },\n target: {\n enumerable: true,\n writable: false,\n value: server['realWebSocket'],\n },\n })\n\n logOutgoingMockedClientMessage(messageEvent)\n\n return Reflect.apply(target, thisArg, args)\n },\n })\n}\n\n/**\n * Prints the WebSocket connection.\n * This is meant to be logged by every WebSocket handler\n * that intercepted this connection. This helps you see\n * what handlers observe this connection.\n */\nexport function logConnectionOpen(client: WebSocketClientConnection) {\n const publicUrl = toPublicUrl(client.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(`${getTimestamp()} %c▸%c ${publicUrl}`),\n 'color:blue',\n 'color:inherit',\n )\n console.log('Client:', client.socket)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message.\n */\nexport async function logOutgoingClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↑%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:green',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `server.send()` in the event handler.\n */\nexport async function logOutgoingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇡%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prings the message received by the WebSocket client.\n * This is fired when the \"message\" event is dispatched\n * on the actual WebSocket client instance, and translates to\n * the client receiving a message from the server.\n */\nexport async function logIncomingClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↓%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:red',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `client.send()` in the event handler.\n */\nexport async function logIncomingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nfunction logConnectionClose(event: CloseEvent) {\n const target = event.target as WebSocket\n const publicUrl = toPublicUrl(target.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c■%c ${publicUrl}`,\n ),\n 'color:blue',\n 'color:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nexport async function logIncomingServerMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nfunction logClientError(event: Event) {\n const socket = event.target as WebSocket\n const publicUrl = toPublicUrl(socket.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c\\u00D7%c ${publicUrl}`,\n ),\n 'color:red',\n 'color:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { devUtils } from '../../utils/internal/devUtils.mjs';
|
|
2
|
+
import { getTimestamp } from '../../utils/logging/getTimestamp.mjs';
|
|
3
|
+
import { toPublicUrl } from '../../utils/request/toPublicUrl.mjs';
|
|
4
|
+
import { getMessageLength } from './getMessageLength.mjs';
|
|
5
|
+
import { getPublicData } from './getPublicData.mjs';
|
|
6
|
+
function attachWebSocketLogger(connection) {
|
|
7
|
+
const { client, server } = connection;
|
|
8
|
+
logConnectionOpen(client);
|
|
9
|
+
client.addEventListener("message", (event) => {
|
|
10
|
+
logOutgoingClientMessage(event);
|
|
11
|
+
});
|
|
12
|
+
client.addEventListener("close", (event) => {
|
|
13
|
+
logConnectionClose(event);
|
|
14
|
+
});
|
|
15
|
+
client.socket.addEventListener("message", (event) => {
|
|
16
|
+
logIncomingClientMessage(event);
|
|
17
|
+
});
|
|
18
|
+
client.socket.addEventListener("error", (event) => {
|
|
19
|
+
logClientError(event);
|
|
20
|
+
});
|
|
21
|
+
client.send = new Proxy(client.send, {
|
|
22
|
+
apply(target, thisArg, args) {
|
|
23
|
+
const [data] = args;
|
|
24
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
25
|
+
Object.defineProperties(messageEvent, {
|
|
26
|
+
currentTarget: {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
writable: false,
|
|
29
|
+
value: client.socket
|
|
30
|
+
},
|
|
31
|
+
target: {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
writable: false,
|
|
34
|
+
value: client.socket
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
logIncomingMockedClientMessage(messageEvent);
|
|
38
|
+
return Reflect.apply(target, thisArg, args);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
server.addEventListener(
|
|
42
|
+
"open",
|
|
43
|
+
() => {
|
|
44
|
+
server.addEventListener("message", (event) => {
|
|
45
|
+
logIncomingServerMessage(event);
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
{ once: true }
|
|
49
|
+
);
|
|
50
|
+
server.send = new Proxy(server.send, {
|
|
51
|
+
apply(target, thisArg, args) {
|
|
52
|
+
const [data] = args;
|
|
53
|
+
const messageEvent = new MessageEvent("message", { data });
|
|
54
|
+
Object.defineProperties(messageEvent, {
|
|
55
|
+
currentTarget: {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
writable: false,
|
|
58
|
+
value: server["realWebSocket"]
|
|
59
|
+
},
|
|
60
|
+
target: {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
writable: false,
|
|
63
|
+
value: server["realWebSocket"]
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
logOutgoingMockedClientMessage(messageEvent);
|
|
67
|
+
return Reflect.apply(target, thisArg, args);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function logConnectionOpen(client) {
|
|
72
|
+
const publicUrl = toPublicUrl(client.url);
|
|
73
|
+
console.groupCollapsed(
|
|
74
|
+
devUtils.formatMessage(`${getTimestamp()} %c\u25B8%c ${publicUrl}`),
|
|
75
|
+
"color:blue",
|
|
76
|
+
"color:inherit"
|
|
77
|
+
);
|
|
78
|
+
console.log("Client:", client.socket);
|
|
79
|
+
console.groupEnd();
|
|
80
|
+
}
|
|
81
|
+
async function logOutgoingClientMessage(event) {
|
|
82
|
+
const byteLength = getMessageLength(event.data);
|
|
83
|
+
const publicData = await getPublicData(event.data);
|
|
84
|
+
console.groupCollapsed(
|
|
85
|
+
devUtils.formatMessage(
|
|
86
|
+
`${getTimestamp({ milliseconds: true })} %c\u2191%c ${publicData} %c${byteLength}%c`
|
|
87
|
+
),
|
|
88
|
+
"color:green",
|
|
89
|
+
"color:inherit",
|
|
90
|
+
"color:gray;font-weight:normal",
|
|
91
|
+
"color:inherit;font-weight:inherit"
|
|
92
|
+
);
|
|
93
|
+
console.log(event);
|
|
94
|
+
console.groupEnd();
|
|
95
|
+
}
|
|
96
|
+
async function logOutgoingMockedClientMessage(event) {
|
|
97
|
+
const byteLength = getMessageLength(event.data);
|
|
98
|
+
const publicData = await getPublicData(event.data);
|
|
99
|
+
console.groupCollapsed(
|
|
100
|
+
devUtils.formatMessage(
|
|
101
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E1%c ${publicData} %c${byteLength}%c`
|
|
102
|
+
),
|
|
103
|
+
"color:orangered",
|
|
104
|
+
"color:inherit",
|
|
105
|
+
"color:gray;font-weight:normal",
|
|
106
|
+
"color:inherit;font-weight:inherit"
|
|
107
|
+
);
|
|
108
|
+
console.log(event);
|
|
109
|
+
console.groupEnd();
|
|
110
|
+
}
|
|
111
|
+
async function logIncomingClientMessage(event) {
|
|
112
|
+
const byteLength = getMessageLength(event.data);
|
|
113
|
+
const publicData = await getPublicData(event.data);
|
|
114
|
+
console.groupCollapsed(
|
|
115
|
+
devUtils.formatMessage(
|
|
116
|
+
`${getTimestamp({ milliseconds: true })} %c\u2193%c ${publicData} %c${byteLength}%c`
|
|
117
|
+
),
|
|
118
|
+
"color:red",
|
|
119
|
+
"color:inherit",
|
|
120
|
+
"color:gray;font-weight:normal",
|
|
121
|
+
"color:inherit;font-weight:inherit"
|
|
122
|
+
);
|
|
123
|
+
console.log(event);
|
|
124
|
+
console.groupEnd();
|
|
125
|
+
}
|
|
126
|
+
async function logIncomingMockedClientMessage(event) {
|
|
127
|
+
const byteLength = getMessageLength(event.data);
|
|
128
|
+
const publicData = await getPublicData(event.data);
|
|
129
|
+
console.groupCollapsed(
|
|
130
|
+
devUtils.formatMessage(
|
|
131
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
132
|
+
),
|
|
133
|
+
"color:orangered",
|
|
134
|
+
"color:inherit",
|
|
135
|
+
"color:gray;font-weight:normal",
|
|
136
|
+
"color:inherit;font-weight:inherit"
|
|
137
|
+
);
|
|
138
|
+
console.log(event);
|
|
139
|
+
console.groupEnd();
|
|
140
|
+
}
|
|
141
|
+
function logConnectionClose(event) {
|
|
142
|
+
const target = event.target;
|
|
143
|
+
const publicUrl = toPublicUrl(target.url);
|
|
144
|
+
console.groupCollapsed(
|
|
145
|
+
devUtils.formatMessage(
|
|
146
|
+
`${getTimestamp({ milliseconds: true })} %c\u25A0%c ${publicUrl}`
|
|
147
|
+
),
|
|
148
|
+
"color:blue",
|
|
149
|
+
"color:inherit"
|
|
150
|
+
);
|
|
151
|
+
console.log(event);
|
|
152
|
+
console.groupEnd();
|
|
153
|
+
}
|
|
154
|
+
async function logIncomingServerMessage(event) {
|
|
155
|
+
const byteLength = getMessageLength(event.data);
|
|
156
|
+
const publicData = await getPublicData(event.data);
|
|
157
|
+
console.groupCollapsed(
|
|
158
|
+
devUtils.formatMessage(
|
|
159
|
+
`${getTimestamp({ milliseconds: true })} %c\u21E3%c ${publicData} %c${byteLength}%c`
|
|
160
|
+
),
|
|
161
|
+
"color:orangered",
|
|
162
|
+
"color:inherit",
|
|
163
|
+
"color:gray;font-weight:normal",
|
|
164
|
+
"color:inherit;font-weight:inherit"
|
|
165
|
+
);
|
|
166
|
+
console.log(event);
|
|
167
|
+
console.groupEnd();
|
|
168
|
+
}
|
|
169
|
+
function logClientError(event) {
|
|
170
|
+
const socket = event.target;
|
|
171
|
+
const publicUrl = toPublicUrl(socket.url);
|
|
172
|
+
console.groupCollapsed(
|
|
173
|
+
devUtils.formatMessage(
|
|
174
|
+
`${getTimestamp({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
175
|
+
),
|
|
176
|
+
"color:red",
|
|
177
|
+
"color:inherit"
|
|
178
|
+
);
|
|
179
|
+
console.log(event);
|
|
180
|
+
console.groupEnd();
|
|
181
|
+
}
|
|
182
|
+
export {
|
|
183
|
+
attachWebSocketLogger,
|
|
184
|
+
logConnectionOpen,
|
|
185
|
+
logIncomingClientMessage,
|
|
186
|
+
logIncomingMockedClientMessage,
|
|
187
|
+
logIncomingServerMessage,
|
|
188
|
+
logOutgoingClientMessage,
|
|
189
|
+
logOutgoingMockedClientMessage
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=attachWebSocketLogger.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/attachWebSocketLogger.ts"],"sourcesContent":["import type {\n WebSocketClientConnection,\n WebSocketConnectionData,\n WebSocketData,\n} from '@mswjs/interceptors/WebSocket'\nimport { devUtils } from '../../utils/internal/devUtils'\nimport { getTimestamp } from '../../utils/logging/getTimestamp'\nimport { toPublicUrl } from '../../utils/request/toPublicUrl'\nimport { getMessageLength } from './getMessageLength'\nimport { getPublicData } from './getPublicData'\n\nexport function attachWebSocketLogger(\n connection: WebSocketConnectionData,\n): void {\n const { client, server } = connection\n\n logConnectionOpen(client)\n\n // Log the events sent from the WebSocket client.\n // WebSocket client connection object is written from the\n // server's perspective so these message events are outgoing.\n /**\n * @todo Provide the reference to the exact event handler\n * that called this `client.send()`.\n */\n client.addEventListener('message', (event) => {\n logOutgoingClientMessage(event)\n })\n\n client.addEventListener('close', (event) => {\n logConnectionClose(event)\n })\n\n // Log the events received by the WebSocket client.\n // \"client.socket\" references the actual WebSocket instance\n // so these message events are incoming messages.\n client.socket.addEventListener('message', (event) => {\n logIncomingClientMessage(event)\n })\n\n // Log client errors (connection closures due to errors).\n client.socket.addEventListener('error', (event) => {\n logClientError(event)\n })\n\n client.send = new Proxy(client.send, {\n apply(target, thisArg, args) {\n const [data] = args\n const messageEvent = new MessageEvent('message', { data })\n Object.defineProperties(messageEvent, {\n currentTarget: {\n enumerable: true,\n writable: false,\n value: client.socket,\n },\n target: {\n enumerable: true,\n writable: false,\n value: client.socket,\n },\n })\n logIncomingMockedClientMessage(messageEvent)\n\n return Reflect.apply(target, thisArg, args)\n },\n })\n\n server.addEventListener(\n 'open',\n () => {\n server.addEventListener('message', (event) => {\n logIncomingServerMessage(event)\n })\n },\n { once: true },\n )\n\n // Log outgoing client events initiated by the event handler.\n // The actual client never sent these but the handler did.\n server.send = new Proxy(server.send, {\n apply(target, thisArg, args) {\n const [data] = args\n const messageEvent = new MessageEvent('message', { data })\n Object.defineProperties(messageEvent, {\n currentTarget: {\n enumerable: true,\n writable: false,\n value: server['realWebSocket'],\n },\n target: {\n enumerable: true,\n writable: false,\n value: server['realWebSocket'],\n },\n })\n\n logOutgoingMockedClientMessage(messageEvent)\n\n return Reflect.apply(target, thisArg, args)\n },\n })\n}\n\n/**\n * Prints the WebSocket connection.\n * This is meant to be logged by every WebSocket handler\n * that intercepted this connection. This helps you see\n * what handlers observe this connection.\n */\nexport function logConnectionOpen(client: WebSocketClientConnection) {\n const publicUrl = toPublicUrl(client.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(`${getTimestamp()} %c▸%c ${publicUrl}`),\n 'color:blue',\n 'color:inherit',\n )\n console.log('Client:', client.socket)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message.\n */\nexport async function logOutgoingClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↑%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:green',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `server.send()` in the event handler.\n */\nexport async function logOutgoingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇡%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prings the message received by the WebSocket client.\n * This is fired when the \"message\" event is dispatched\n * on the actual WebSocket client instance, and translates to\n * the client receiving a message from the server.\n */\nexport async function logIncomingClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↓%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:red',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `client.send()` in the event handler.\n */\nexport async function logIncomingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nfunction logConnectionClose(event: CloseEvent) {\n const target = event.target as WebSocket\n const publicUrl = toPublicUrl(target.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c■%c ${publicUrl}`,\n ),\n 'color:blue',\n 'color:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nexport async function logIncomingServerMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n 'color:orangered',\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n\nfunction logClientError(event: Event) {\n const socket = event.target as WebSocket\n const publicUrl = toPublicUrl(socket.url)\n\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c\\u00D7%c ${publicUrl}`,\n ),\n 'color:red',\n 'color:inherit',\n )\n console.log(event)\n console.groupEnd()\n}\n"],"mappings":"AAKA,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,SAAS,sBACd,YACM;AACN,QAAM,EAAE,QAAQ,OAAO,IAAI;AAE3B,oBAAkB,MAAM;AASxB,SAAO,iBAAiB,WAAW,CAAC,UAAU;AAC5C,6BAAyB,KAAK;AAAA,EAChC,CAAC;AAED,SAAO,iBAAiB,SAAS,CAAC,UAAU;AAC1C,uBAAmB,KAAK;AAAA,EAC1B,CAAC;AAKD,SAAO,OAAO,iBAAiB,WAAW,CAAC,UAAU;AACnD,6BAAyB,KAAK;AAAA,EAChC,CAAC;AAGD,SAAO,OAAO,iBAAiB,SAAS,CAAC,UAAU;AACjD,mBAAe,KAAK;AAAA,EACtB,CAAC;AAED,SAAO,OAAO,IAAI,MAAM,OAAO,MAAM;AAAA,IACnC,MAAM,QAAQ,SAAS,MAAM;AAC3B,YAAM,CAAC,IAAI,IAAI;AACf,YAAM,eAAe,IAAI,aAAa,WAAW,EAAE,KAAK,CAAC;AACzD,aAAO,iBAAiB,cAAc;AAAA,QACpC,eAAe;AAAA,UACb,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,OAAO,OAAO;AAAA,QAChB;AAAA,QACA,QAAQ;AAAA,UACN,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,OAAO,OAAO;AAAA,QAChB;AAAA,MACF,CAAC;AACD,qCAA+B,YAAY;AAE3C,aAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAAA,IAC5C;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AACJ,aAAO,iBAAiB,WAAW,CAAC,UAAU;AAC5C,iCAAyB,KAAK;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IACA,EAAE,MAAM,KAAK;AAAA,EACf;AAIA,SAAO,OAAO,IAAI,MAAM,OAAO,MAAM;AAAA,IACnC,MAAM,QAAQ,SAAS,MAAM;AAC3B,YAAM,CAAC,IAAI,IAAI;AACf,YAAM,eAAe,IAAI,aAAa,WAAW,EAAE,KAAK,CAAC;AACzD,aAAO,iBAAiB,cAAc;AAAA,QACpC,eAAe;AAAA,UACb,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,OAAO,OAAO,eAAe;AAAA,QAC/B;AAAA,QACA,QAAQ;AAAA,UACN,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,OAAO,OAAO,eAAe;AAAA,QAC/B;AAAA,MACF,CAAC;AAED,qCAA+B,YAAY;AAE3C,aAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAAA,IAC5C;AAAA,EACF,CAAC;AACH;AAQO,SAAS,kBAAkB,QAAmC;AACnE,QAAM,YAAY,YAAY,OAAO,GAAG;AAExC,UAAQ;AAAA,IACN,SAAS,cAAc,GAAG,aAAa,CAAC,eAAU,SAAS,EAAE;AAAA,IAC7D;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,WAAW,OAAO,MAAM;AACpC,UAAQ,SAAS;AACnB;AAKA,eAAsB,yBACpB,OACA;AACA,QAAM,aAAa,iBAAiB,MAAM,IAAI;AAC9C,QAAM,aAAa,MAAM,cAAc,MAAM,IAAI;AAEjD,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAMA,eAAsB,+BACpB,OACA;AACA,QAAM,aAAa,iBAAiB,MAAM,IAAI;AAC9C,QAAM,aAAa,MAAM,cAAc,MAAM,IAAI;AAEjD,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAQA,eAAsB,yBACpB,OACA;AACA,QAAM,aAAa,iBAAiB,MAAM,IAAI;AAC9C,QAAM,aAAa,MAAM,cAAc,MAAM,IAAI;AAEjD,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAMA,eAAsB,+BACpB,OACA;AACA,QAAM,aAAa,iBAAiB,MAAM,IAAI;AAC9C,QAAM,aAAa,MAAM,cAAc,MAAM,IAAI;AAEjD,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAEA,SAAS,mBAAmB,OAAmB;AAC7C,QAAM,SAAS,MAAM;AACrB,QAAM,YAAY,YAAY,OAAO,GAAG;AAExC,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,SAAS;AAAA,IAC5D;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAEA,eAAsB,yBACpB,OACA;AACA,QAAM,aAAa,iBAAiB,MAAM,IAAI;AAC9C,QAAM,aAAa,MAAM,cAAc,MAAM,IAAI;AAEjD,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,eAAU,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;AAEA,SAAS,eAAe,OAAc;AACpC,QAAM,SAAS,MAAM;AACrB,QAAM,YAAY,YAAY,OAAO,GAAG;AAExC,UAAQ;AAAA,IACN,SAAS;AAAA,MACP,GAAG,aAAa,EAAE,cAAc,KAAK,CAAC,CAAC,aAAe,SAAS;AAAA,IACjE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,UAAQ,IAAI,KAAK;AACjB,UAAQ,SAAS;AACnB;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WebSocketData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the byte length of the given WebSocket message.
|
|
5
|
+
* @example
|
|
6
|
+
* getMessageLength('hello') // 5
|
|
7
|
+
* getMessageLength(new Blob(['hello'])) // 5
|
|
8
|
+
*/
|
|
9
|
+
declare function getMessageLength(data: WebSocketData): number;
|
|
10
|
+
|
|
11
|
+
export { getMessageLength };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WebSocketData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the byte length of the given WebSocket message.
|
|
5
|
+
* @example
|
|
6
|
+
* getMessageLength('hello') // 5
|
|
7
|
+
* getMessageLength(new Blob(['hello'])) // 5
|
|
8
|
+
*/
|
|
9
|
+
declare function getMessageLength(data: WebSocketData): number;
|
|
10
|
+
|
|
11
|
+
export { getMessageLength };
|
|
@@ -0,0 +1,33 @@
|
|
|
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 getMessageLength_exports = {};
|
|
20
|
+
__export(getMessageLength_exports, {
|
|
21
|
+
getMessageLength: () => getMessageLength
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(getMessageLength_exports);
|
|
24
|
+
function getMessageLength(data) {
|
|
25
|
+
if (data instanceof Blob) {
|
|
26
|
+
return data.size;
|
|
27
|
+
}
|
|
28
|
+
if (data instanceof ArrayBuffer) {
|
|
29
|
+
return data.byteLength;
|
|
30
|
+
}
|
|
31
|
+
return new Blob([data]).size;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=getMessageLength.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/getMessageLength.ts"],"sourcesContent":["import type { WebSocketData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\n\n/**\n * Returns the byte length of the given WebSocket message.\n * @example\n * getMessageLength('hello') // 5\n * getMessageLength(new Blob(['hello'])) // 5\n */\nexport function getMessageLength(data: WebSocketData): number {\n if (data instanceof Blob) {\n return data.size\n }\n\n if (data instanceof ArrayBuffer) {\n return data.byteLength\n }\n\n return new Blob([data]).size\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,SAAS,iBAAiB,MAA6B;AAC5D,MAAI,gBAAgB,MAAM;AACxB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,gBAAgB,aAAa;AAC/B,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AAC1B;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function getMessageLength(data) {
|
|
2
|
+
if (data instanceof Blob) {
|
|
3
|
+
return data.size;
|
|
4
|
+
}
|
|
5
|
+
if (data instanceof ArrayBuffer) {
|
|
6
|
+
return data.byteLength;
|
|
7
|
+
}
|
|
8
|
+
return new Blob([data]).size;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
getMessageLength
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=getMessageLength.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/getMessageLength.ts"],"sourcesContent":["import type { WebSocketData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\n\n/**\n * Returns the byte length of the given WebSocket message.\n * @example\n * getMessageLength('hello') // 5\n * getMessageLength(new Blob(['hello'])) // 5\n */\nexport function getMessageLength(data: WebSocketData): number {\n if (data instanceof Blob) {\n return data.size\n }\n\n if (data instanceof ArrayBuffer) {\n return data.byteLength\n }\n\n return new Blob([data]).size\n}\n"],"mappings":"AAQO,SAAS,iBAAiB,MAA6B;AAC5D,MAAI,gBAAgB,MAAM;AACxB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,gBAAgB,aAAa;AAC/B,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AAC1B;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 getPublicData_exports = {};
|
|
20
|
+
__export(getPublicData_exports, {
|
|
21
|
+
getPublicData: () => getPublicData
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(getPublicData_exports);
|
|
24
|
+
var import_truncateMessage = require("./truncateMessage.js");
|
|
25
|
+
async function getPublicData(data) {
|
|
26
|
+
if (data instanceof Blob) {
|
|
27
|
+
const text = await data.text();
|
|
28
|
+
return `Blob(${(0, import_truncateMessage.truncateMessage)(text)})`;
|
|
29
|
+
}
|
|
30
|
+
if (typeof data === "object" && "byteLength" in data) {
|
|
31
|
+
const text = new TextDecoder().decode(data);
|
|
32
|
+
return `ArrayBuffer(${(0, import_truncateMessage.truncateMessage)(text)})`;
|
|
33
|
+
}
|
|
34
|
+
return (0, import_truncateMessage.truncateMessage)(data);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=getPublicData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/getPublicData.ts"],"sourcesContent":["import { WebSocketData } from '@mswjs/interceptors/WebSocket'\nimport { truncateMessage } from './truncateMessage'\n\nexport async function getPublicData(data: WebSocketData): Promise<string> {\n if (data instanceof Blob) {\n const text = await data.text()\n return `Blob(${truncateMessage(text)})`\n }\n\n // Handle all ArrayBuffer-like objects.\n if (typeof data === 'object' && 'byteLength' in data) {\n const text = new TextDecoder().decode(data)\n return `ArrayBuffer(${truncateMessage(text)})`\n }\n\n return truncateMessage(data)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,6BAAgC;AAEhC,eAAsB,cAAc,MAAsC;AACxE,MAAI,gBAAgB,MAAM;AACxB,UAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,WAAO,YAAQ,wCAAgB,IAAI,CAAC;AAAA,EACtC;AAGA,MAAI,OAAO,SAAS,YAAY,gBAAgB,MAAM;AACpD,UAAM,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAC1C,WAAO,mBAAe,wCAAgB,IAAI,CAAC;AAAA,EAC7C;AAEA,aAAO,wCAAgB,IAAI;AAC7B;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { truncateMessage } from './truncateMessage.mjs';
|
|
2
|
+
async function getPublicData(data) {
|
|
3
|
+
if (data instanceof Blob) {
|
|
4
|
+
const text = await data.text();
|
|
5
|
+
return `Blob(${truncateMessage(text)})`;
|
|
6
|
+
}
|
|
7
|
+
if (typeof data === "object" && "byteLength" in data) {
|
|
8
|
+
const text = new TextDecoder().decode(data);
|
|
9
|
+
return `ArrayBuffer(${truncateMessage(text)})`;
|
|
10
|
+
}
|
|
11
|
+
return truncateMessage(data);
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
getPublicData
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=getPublicData.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/getPublicData.ts"],"sourcesContent":["import { WebSocketData } from '@mswjs/interceptors/WebSocket'\nimport { truncateMessage } from './truncateMessage'\n\nexport async function getPublicData(data: WebSocketData): Promise<string> {\n if (data instanceof Blob) {\n const text = await data.text()\n return `Blob(${truncateMessage(text)})`\n }\n\n // Handle all ArrayBuffer-like objects.\n if (typeof data === 'object' && 'byteLength' in data) {\n const text = new TextDecoder().decode(data)\n return `ArrayBuffer(${truncateMessage(text)})`\n }\n\n return truncateMessage(data)\n}\n"],"mappings":"AACA,SAAS,uBAAuB;AAEhC,eAAsB,cAAc,MAAsC;AACxE,MAAI,gBAAgB,MAAM;AACxB,UAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,WAAO,QAAQ,gBAAgB,IAAI,CAAC;AAAA,EACtC;AAGA,MAAI,OAAO,SAAS,YAAY,gBAAgB,MAAM;AACpD,UAAM,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAC1C,WAAO,eAAe,gBAAgB,IAAI,CAAC;AAAA,EAC7C;AAEA,SAAO,gBAAgB,IAAI;AAC7B;","names":[]}
|
|
@@ -16,12 +16,16 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var truncateMessage_exports = {};
|
|
20
|
+
__export(truncateMessage_exports, {
|
|
21
|
+
truncateMessage: () => truncateMessage
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
module.exports = __toCommonJS(truncateMessage_exports);
|
|
24
|
+
const MAX_LENGTH = 24;
|
|
25
|
+
function truncateMessage(message) {
|
|
26
|
+
if (message.length <= MAX_LENGTH) {
|
|
27
|
+
return message;
|
|
28
|
+
}
|
|
29
|
+
return `${message.slice(0, MAX_LENGTH)}\u2026`;
|
|
26
30
|
}
|
|
27
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=truncateMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/ws/utils/truncateMessage.ts"],"sourcesContent":["const MAX_LENGTH = 24\n\nexport function truncateMessage(message: string): string {\n if (message.length <= MAX_LENGTH) {\n return message\n }\n\n return `${message.slice(0, MAX_LENGTH)}…`\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,aAAa;AAEZ,SAAS,gBAAgB,SAAyB;AACvD,MAAI,QAAQ,UAAU,YAAY;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,QAAQ,MAAM,GAAG,UAAU,CAAC;AACxC;","names":[]}
|