msw 2.3.0-ws.rc-9 → 2.3.0-ws.rc-11
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/lib/browser/index.js +15 -8
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +15 -8
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/utils/handleRequest.d.mts +2 -2
- package/lib/core/utils/handleRequest.d.ts +2 -2
- package/lib/core/utils/handleRequest.js.map +1 -1
- package/lib/core/utils/handleRequest.mjs.map +1 -1
- package/lib/core/ws/WebSocketClientManager.d.mts +1 -3
- package/lib/core/ws/WebSocketClientManager.d.ts +1 -3
- package/lib/core/ws/WebSocketClientManager.js +1 -2
- package/lib/core/ws/WebSocketClientManager.js.map +1 -1
- package/lib/core/ws/WebSocketClientManager.mjs +1 -2
- package/lib/core/ws/WebSocketClientManager.mjs.map +1 -1
- package/lib/core/ws/WebSocketClientStore.d.mts +2 -2
- package/lib/core/ws/WebSocketClientStore.d.ts +2 -2
- package/lib/core/ws/WebSocketClientStore.js.map +1 -1
- package/lib/core/ws/WebSocketClientStore.mjs.map +1 -1
- package/lib/core/ws/WebSocketIndexedDBClientStore.js +27 -6
- package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -1
- package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +27 -6
- package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.mts +2 -0
- package/lib/core/ws/handleWebSocketEvent.d.ts +2 -0
- package/lib/core/ws/handleWebSocketEvent.js +30 -13
- package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.mjs +32 -13
- package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.d.mts +2 -24
- package/lib/core/ws/utils/attachWebSocketLogger.d.ts +2 -24
- package/lib/core/ws/utils/attachWebSocketLogger.js +41 -60
- package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.mjs +41 -60
- package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -1
- package/lib/core/ws.js +1 -1
- package/lib/core/ws.js.map +1 -1
- package/lib/core/ws.mjs +1 -1
- package/lib/core/ws.mjs.map +1 -1
- package/lib/iife/index.js +170 -110
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.js +10 -5
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +10 -5
- package/lib/native/index.mjs.map +1 -1
- package/lib/node/index.js +10 -5
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +10 -5
- package/lib/node/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/browser/setupWorker/setupWorker.ts +5 -7
- package/src/browser/setupWorker/start/createRequestListener.ts +7 -1
- package/src/core/utils/handleRequest.ts +2 -1
- package/src/core/ws/WebSocketClientManager.ts +1 -5
- package/src/core/ws/WebSocketClientStore.ts +1 -1
- package/src/core/ws/WebSocketIndexedDBClientStore.ts +39 -6
- package/src/core/ws/handleWebSocketEvent.ts +40 -14
- package/src/core/ws/utils/attachWebSocketLogger.ts +45 -79
- package/src/core/ws.ts +1 -1
- package/src/node/SetupServerCommonApi.ts +17 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/ws/handleWebSocketEvent.ts"],"sourcesContent":["import type { WebSocketConnectionData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { WebSocketHandler, kDispatchEvent } from '../handlers/WebSocketHandler'\nimport { webSocketInterceptor } from './webSocketInterceptor'\n\ninterface HandleWebSocketEventOptions {\n getHandlers: () => Array<RequestHandler | WebSocketHandler>\n onMockedConnection: (connection: WebSocketConnectionData) => void\n onPassthroughConnection: (onnection: WebSocketConnectionData) => void\n}\n\nexport function handleWebSocketEvent(options: HandleWebSocketEventOptions) {\n webSocketInterceptor.on('connection', (connection) => {\n const handlers = options.getHandlers()\n\n const connectionEvent = new MessageEvent('connection', {\n data: connection,\n })\n\n // First, filter only those WebSocket handlers that\n // match the \"ws.link()\" endpoint predicate. Don't dispatch\n // anything yet so the logger can be attached to the connection\n // before it potentially sends events.\n const matchingHandlers
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ws/handleWebSocketEvent.ts"],"sourcesContent":["import type { WebSocketConnectionData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { WebSocketHandler, kDispatchEvent } from '../handlers/WebSocketHandler'\nimport { webSocketInterceptor } from './webSocketInterceptor'\nimport {\n onUnhandledRequest,\n UnhandledRequestStrategy,\n} from '../utils/request/onUnhandledRequest'\n\ninterface HandleWebSocketEventOptions {\n getUnhandledRequestStrategy: () => UnhandledRequestStrategy\n getHandlers: () => Array<RequestHandler | WebSocketHandler>\n onMockedConnection: (connection: WebSocketConnectionData) => void\n onPassthroughConnection: (onnection: WebSocketConnectionData) => void\n}\n\nexport function handleWebSocketEvent(options: HandleWebSocketEventOptions) {\n webSocketInterceptor.on('connection', async (connection) => {\n const handlers = options.getHandlers()\n\n const connectionEvent = new MessageEvent('connection', {\n data: connection,\n })\n\n // First, filter only those WebSocket handlers that\n // match the \"ws.link()\" endpoint predicate. Don't dispatch\n // anything yet so the logger can be attached to the connection\n // before it potentially sends events.\n const matchingHandlers: Array<WebSocketHandler> = []\n\n for (const handler of handlers) {\n if (\n handler instanceof WebSocketHandler &&\n handler.predicate({\n event: connectionEvent,\n parsedResult: handler.parse({\n event: connectionEvent,\n }),\n })\n ) {\n matchingHandlers.push(handler)\n }\n }\n\n if (matchingHandlers.length > 0) {\n options?.onMockedConnection(connection)\n\n // Iterate over the handlers and forward the connection\n // event to WebSocket event handlers. This is equivalent\n // to dispatching that event onto multiple listeners.\n for (const handler of matchingHandlers) {\n handler[kDispatchEvent](connectionEvent)\n }\n } else {\n // Construct a request representing this WebSocket connection.\n const request = new Request(connection.client.url, {\n headers: {\n upgrade: 'websocket',\n connection: 'upgrade',\n },\n })\n await onUnhandledRequest(\n request,\n options.getUnhandledRequestStrategy(),\n ).catch((error) => {\n const errorEvent = new Event('error')\n Object.defineProperty(errorEvent, 'cause', {\n enumerable: true,\n configurable: false,\n value: error,\n })\n connection.client.socket.dispatchEvent(errorEvent)\n })\n\n options?.onPassthroughConnection(connection)\n\n // If none of the \"ws\" handlers matched,\n // establish the WebSocket connection as-is.\n connection.server.connect()\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAAiD;AACjD,kCAAqC;AACrC,gCAGO;AASA,SAAS,qBAAqB,SAAsC;AACzE,mDAAqB,GAAG,cAAc,OAAO,eAAe;AAC1D,UAAM,WAAW,QAAQ,YAAY;AAErC,UAAM,kBAAkB,IAAI,aAAa,cAAc;AAAA,MACrD,MAAM;AAAA,IACR,CAAC;AAMD,UAAM,mBAA4C,CAAC;AAEnD,eAAW,WAAW,UAAU;AAC9B,UACE,mBAAmB,4CACnB,QAAQ,UAAU;AAAA,QAChB,OAAO;AAAA,QACP,cAAc,QAAQ,MAAM;AAAA,UAC1B,OAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC,GACD;AACA,yBAAiB,KAAK,OAAO;AAAA,MAC/B;AAAA,IACF;AAEA,QAAI,iBAAiB,SAAS,GAAG;AAC/B,eAAS,mBAAmB,UAAU;AAKtC,iBAAW,WAAW,kBAAkB;AACtC,gBAAQ,sCAAc,EAAE,eAAe;AAAA,MACzC;AAAA,IACF,OAAO;AAEL,YAAM,UAAU,IAAI,QAAQ,WAAW,OAAO,KAAK;AAAA,QACjD,SAAS;AAAA,UACP,SAAS;AAAA,UACT,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AACD,gBAAM;AAAA,QACJ;AAAA,QACA,QAAQ,4BAA4B;AAAA,MACtC,EAAE,MAAM,CAAC,UAAU;AACjB,cAAM,aAAa,IAAI,MAAM,OAAO;AACpC,eAAO,eAAe,YAAY,SAAS;AAAA,UACzC,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,OAAO;AAAA,QACT,CAAC;AACD,mBAAW,OAAO,OAAO,cAAc,UAAU;AAAA,MACnD,CAAC;AAED,eAAS,wBAAwB,UAAU;AAI3C,iBAAW,OAAO,QAAQ;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,30 +1,49 @@
|
|
|
1
1
|
import { WebSocketHandler, kDispatchEvent } from '../handlers/WebSocketHandler.mjs';
|
|
2
2
|
import { webSocketInterceptor } from './webSocketInterceptor.mjs';
|
|
3
|
+
import {
|
|
4
|
+
onUnhandledRequest
|
|
5
|
+
} from '../utils/request/onUnhandledRequest.mjs';
|
|
3
6
|
function handleWebSocketEvent(options) {
|
|
4
|
-
webSocketInterceptor.on("connection", (connection) => {
|
|
7
|
+
webSocketInterceptor.on("connection", async (connection) => {
|
|
5
8
|
const handlers = options.getHandlers();
|
|
6
9
|
const connectionEvent = new MessageEvent("connection", {
|
|
7
10
|
data: connection
|
|
8
11
|
});
|
|
9
|
-
const matchingHandlers =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return false;
|
|
12
|
+
const matchingHandlers = [];
|
|
13
|
+
for (const handler of handlers) {
|
|
14
|
+
if (handler instanceof WebSocketHandler && handler.predicate({
|
|
15
|
+
event: connectionEvent,
|
|
16
|
+
parsedResult: handler.parse({
|
|
17
|
+
event: connectionEvent
|
|
18
|
+
})
|
|
19
|
+
})) {
|
|
20
|
+
matchingHandlers.push(handler);
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
}
|
|
22
23
|
if (matchingHandlers.length > 0) {
|
|
23
24
|
options?.onMockedConnection(connection);
|
|
24
25
|
for (const handler of matchingHandlers) {
|
|
25
26
|
handler[kDispatchEvent](connectionEvent);
|
|
26
27
|
}
|
|
27
28
|
} else {
|
|
29
|
+
const request = new Request(connection.client.url, {
|
|
30
|
+
headers: {
|
|
31
|
+
upgrade: "websocket",
|
|
32
|
+
connection: "upgrade"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
await onUnhandledRequest(
|
|
36
|
+
request,
|
|
37
|
+
options.getUnhandledRequestStrategy()
|
|
38
|
+
).catch((error) => {
|
|
39
|
+
const errorEvent = new Event("error");
|
|
40
|
+
Object.defineProperty(errorEvent, "cause", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: false,
|
|
43
|
+
value: error
|
|
44
|
+
});
|
|
45
|
+
connection.client.socket.dispatchEvent(errorEvent);
|
|
46
|
+
});
|
|
28
47
|
options?.onPassthroughConnection(connection);
|
|
29
48
|
connection.server.connect();
|
|
30
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/ws/handleWebSocketEvent.ts"],"sourcesContent":["import type { WebSocketConnectionData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { WebSocketHandler, kDispatchEvent } from '../handlers/WebSocketHandler'\nimport { webSocketInterceptor } from './webSocketInterceptor'\n\ninterface HandleWebSocketEventOptions {\n getHandlers: () => Array<RequestHandler | WebSocketHandler>\n onMockedConnection: (connection: WebSocketConnectionData) => void\n onPassthroughConnection: (onnection: WebSocketConnectionData) => void\n}\n\nexport function handleWebSocketEvent(options: HandleWebSocketEventOptions) {\n webSocketInterceptor.on('connection', (connection) => {\n const handlers = options.getHandlers()\n\n const connectionEvent = new MessageEvent('connection', {\n data: connection,\n })\n\n // First, filter only those WebSocket handlers that\n // match the \"ws.link()\" endpoint predicate. Don't dispatch\n // anything yet so the logger can be attached to the connection\n // before it potentially sends events.\n const matchingHandlers
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ws/handleWebSocketEvent.ts"],"sourcesContent":["import type { WebSocketConnectionData } from '@mswjs/interceptors/lib/browser/interceptors/WebSocket'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { WebSocketHandler, kDispatchEvent } from '../handlers/WebSocketHandler'\nimport { webSocketInterceptor } from './webSocketInterceptor'\nimport {\n onUnhandledRequest,\n UnhandledRequestStrategy,\n} from '../utils/request/onUnhandledRequest'\n\ninterface HandleWebSocketEventOptions {\n getUnhandledRequestStrategy: () => UnhandledRequestStrategy\n getHandlers: () => Array<RequestHandler | WebSocketHandler>\n onMockedConnection: (connection: WebSocketConnectionData) => void\n onPassthroughConnection: (onnection: WebSocketConnectionData) => void\n}\n\nexport function handleWebSocketEvent(options: HandleWebSocketEventOptions) {\n webSocketInterceptor.on('connection', async (connection) => {\n const handlers = options.getHandlers()\n\n const connectionEvent = new MessageEvent('connection', {\n data: connection,\n })\n\n // First, filter only those WebSocket handlers that\n // match the \"ws.link()\" endpoint predicate. Don't dispatch\n // anything yet so the logger can be attached to the connection\n // before it potentially sends events.\n const matchingHandlers: Array<WebSocketHandler> = []\n\n for (const handler of handlers) {\n if (\n handler instanceof WebSocketHandler &&\n handler.predicate({\n event: connectionEvent,\n parsedResult: handler.parse({\n event: connectionEvent,\n }),\n })\n ) {\n matchingHandlers.push(handler)\n }\n }\n\n if (matchingHandlers.length > 0) {\n options?.onMockedConnection(connection)\n\n // Iterate over the handlers and forward the connection\n // event to WebSocket event handlers. This is equivalent\n // to dispatching that event onto multiple listeners.\n for (const handler of matchingHandlers) {\n handler[kDispatchEvent](connectionEvent)\n }\n } else {\n // Construct a request representing this WebSocket connection.\n const request = new Request(connection.client.url, {\n headers: {\n upgrade: 'websocket',\n connection: 'upgrade',\n },\n })\n await onUnhandledRequest(\n request,\n options.getUnhandledRequestStrategy(),\n ).catch((error) => {\n const errorEvent = new Event('error')\n Object.defineProperty(errorEvent, 'cause', {\n enumerable: true,\n configurable: false,\n value: error,\n })\n connection.client.socket.dispatchEvent(errorEvent)\n })\n\n options?.onPassthroughConnection(connection)\n\n // If none of the \"ws\" handlers matched,\n // establish the WebSocket connection as-is.\n connection.server.connect()\n }\n })\n}\n"],"mappings":"AAEA,SAAS,kBAAkB,sBAAsB;AACjD,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,OAEK;AASA,SAAS,qBAAqB,SAAsC;AACzE,uBAAqB,GAAG,cAAc,OAAO,eAAe;AAC1D,UAAM,WAAW,QAAQ,YAAY;AAErC,UAAM,kBAAkB,IAAI,aAAa,cAAc;AAAA,MACrD,MAAM;AAAA,IACR,CAAC;AAMD,UAAM,mBAA4C,CAAC;AAEnD,eAAW,WAAW,UAAU;AAC9B,UACE,mBAAmB,oBACnB,QAAQ,UAAU;AAAA,QAChB,OAAO;AAAA,QACP,cAAc,QAAQ,MAAM;AAAA,UAC1B,OAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC,GACD;AACA,yBAAiB,KAAK,OAAO;AAAA,MAC/B;AAAA,IACF;AAEA,QAAI,iBAAiB,SAAS,GAAG;AAC/B,eAAS,mBAAmB,UAAU;AAKtC,iBAAW,WAAW,kBAAkB;AACtC,gBAAQ,cAAc,EAAE,eAAe;AAAA,MACzC;AAAA,IACF,OAAO;AAEL,YAAM,UAAU,IAAI,QAAQ,WAAW,OAAO,KAAK;AAAA,QACjD,SAAS;AAAA,UACP,SAAS;AAAA,UACT,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AACD,YAAM;AAAA,QACJ;AAAA,QACA,QAAQ,4BAA4B;AAAA,MACtC,EAAE,MAAM,CAAC,UAAU;AACjB,cAAM,aAAa,IAAI,MAAM,OAAO;AACpC,eAAO,eAAe,YAAY,SAAS;AAAA,UACzC,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,OAAO;AAAA,QACT,CAAC;AACD,mBAAW,OAAO,OAAO,cAAc,UAAU;AAAA,MACnD,CAAC;AAED,eAAS,wBAAwB,UAAU;AAI3C,iBAAW,OAAO,QAAQ;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WebSocketConnectionData, WebSocketClientConnection
|
|
1
|
+
import { WebSocketConnectionData, WebSocketClientConnection } from '@mswjs/interceptors/WebSocket';
|
|
2
2
|
|
|
3
3
|
declare function attachWebSocketLogger(connection: WebSocketConnectionData): void;
|
|
4
4
|
/**
|
|
@@ -8,27 +8,5 @@ declare function attachWebSocketLogger(connection: WebSocketConnectionData): voi
|
|
|
8
8
|
* what handlers observe this connection.
|
|
9
9
|
*/
|
|
10
10
|
declare function logConnectionOpen(client: WebSocketClientConnection): void;
|
|
11
|
-
/**
|
|
12
|
-
* Prints the outgoing client message.
|
|
13
|
-
*/
|
|
14
|
-
declare function logOutgoingClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Prints the outgoing client message initiated
|
|
17
|
-
* by `server.send()` in the event handler.
|
|
18
|
-
*/
|
|
19
|
-
declare function logOutgoingMockedClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Prings the message received by the WebSocket client.
|
|
22
|
-
* This is fired when the "message" event is dispatched
|
|
23
|
-
* on the actual WebSocket client instance, and translates to
|
|
24
|
-
* the client receiving a message from the server.
|
|
25
|
-
*/
|
|
26
|
-
declare function logIncomingClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Prints the outgoing client message initiated
|
|
29
|
-
* by `client.send()` in the event handler.
|
|
30
|
-
*/
|
|
31
|
-
declare function logIncomingMockedClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
32
|
-
declare function logIncomingServerMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
33
11
|
|
|
34
|
-
export { attachWebSocketLogger, logConnectionOpen
|
|
12
|
+
export { attachWebSocketLogger, logConnectionOpen };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WebSocketConnectionData, WebSocketClientConnection
|
|
1
|
+
import { WebSocketConnectionData, WebSocketClientConnection } from '@mswjs/interceptors/WebSocket';
|
|
2
2
|
|
|
3
3
|
declare function attachWebSocketLogger(connection: WebSocketConnectionData): void;
|
|
4
4
|
/**
|
|
@@ -8,27 +8,5 @@ declare function attachWebSocketLogger(connection: WebSocketConnectionData): voi
|
|
|
8
8
|
* what handlers observe this connection.
|
|
9
9
|
*/
|
|
10
10
|
declare function logConnectionOpen(client: WebSocketClientConnection): void;
|
|
11
|
-
/**
|
|
12
|
-
* Prints the outgoing client message.
|
|
13
|
-
*/
|
|
14
|
-
declare function logOutgoingClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Prints the outgoing client message initiated
|
|
17
|
-
* by `server.send()` in the event handler.
|
|
18
|
-
*/
|
|
19
|
-
declare function logOutgoingMockedClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Prings the message received by the WebSocket client.
|
|
22
|
-
* This is fired when the "message" event is dispatched
|
|
23
|
-
* on the actual WebSocket client instance, and translates to
|
|
24
|
-
* the client receiving a message from the server.
|
|
25
|
-
*/
|
|
26
|
-
declare function logIncomingClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Prints the outgoing client message initiated
|
|
29
|
-
* by `client.send()` in the event handler.
|
|
30
|
-
*/
|
|
31
|
-
declare function logIncomingMockedClientMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
32
|
-
declare function logIncomingServerMessage(event: MessageEvent<WebSocketData>): Promise<void>;
|
|
33
11
|
|
|
34
|
-
export { attachWebSocketLogger, logConnectionOpen
|
|
12
|
+
export { attachWebSocketLogger, logConnectionOpen };
|
|
@@ -19,12 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var attachWebSocketLogger_exports = {};
|
|
20
20
|
__export(attachWebSocketLogger_exports, {
|
|
21
21
|
attachWebSocketLogger: () => attachWebSocketLogger,
|
|
22
|
-
logConnectionOpen: () => logConnectionOpen
|
|
23
|
-
logIncomingClientMessage: () => logIncomingClientMessage,
|
|
24
|
-
logIncomingMockedClientMessage: () => logIncomingMockedClientMessage,
|
|
25
|
-
logIncomingServerMessage: () => logIncomingServerMessage,
|
|
26
|
-
logOutgoingClientMessage: () => logOutgoingClientMessage,
|
|
27
|
-
logOutgoingMockedClientMessage: () => logOutgoingMockedClientMessage
|
|
22
|
+
logConnectionOpen: () => logConnectionOpen
|
|
28
23
|
});
|
|
29
24
|
module.exports = __toCommonJS(attachWebSocketLogger_exports);
|
|
30
25
|
var import_devUtils = require("../../utils/internal/devUtils.js");
|
|
@@ -33,10 +28,10 @@ var import_toPublicUrl = require("../../utils/request/toPublicUrl.js");
|
|
|
33
28
|
var import_getMessageLength = require("./getMessageLength.js");
|
|
34
29
|
var import_getPublicData = require("./getPublicData.js");
|
|
35
30
|
const colors = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
system: "#3b82f6",
|
|
32
|
+
outgoing: "#22c55e",
|
|
33
|
+
incoming: "#ef4444",
|
|
34
|
+
mocked: "#ff6a33"
|
|
40
35
|
};
|
|
41
36
|
function attachWebSocketLogger(connection) {
|
|
42
37
|
const { client, server } = connection;
|
|
@@ -47,9 +42,6 @@ function attachWebSocketLogger(connection) {
|
|
|
47
42
|
client.addEventListener("close", (event) => {
|
|
48
43
|
logConnectionClose(event);
|
|
49
44
|
});
|
|
50
|
-
client.socket.addEventListener("message", (event) => {
|
|
51
|
-
logIncomingClientMessage(event);
|
|
52
|
-
});
|
|
53
45
|
client.socket.addEventListener("error", (event) => {
|
|
54
46
|
logClientError(event);
|
|
55
47
|
});
|
|
@@ -69,7 +61,9 @@ function attachWebSocketLogger(connection) {
|
|
|
69
61
|
value: client.socket
|
|
70
62
|
}
|
|
71
63
|
});
|
|
72
|
-
|
|
64
|
+
queueMicrotask(() => {
|
|
65
|
+
logIncomingMockedClientMessage(messageEvent);
|
|
66
|
+
});
|
|
73
67
|
return Reflect.apply(target, thisArg, args);
|
|
74
68
|
}
|
|
75
69
|
});
|
|
@@ -90,12 +84,12 @@ function attachWebSocketLogger(connection) {
|
|
|
90
84
|
currentTarget: {
|
|
91
85
|
enumerable: true,
|
|
92
86
|
writable: false,
|
|
93
|
-
value: server
|
|
87
|
+
value: server.socket
|
|
94
88
|
},
|
|
95
89
|
target: {
|
|
96
90
|
enumerable: true,
|
|
97
91
|
writable: false,
|
|
98
|
-
value: server
|
|
92
|
+
value: server.socket
|
|
99
93
|
}
|
|
100
94
|
});
|
|
101
95
|
logOutgoingMockedClientMessage(messageEvent);
|
|
@@ -107,50 +101,47 @@ function logConnectionOpen(client) {
|
|
|
107
101
|
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(client.url);
|
|
108
102
|
console.groupCollapsed(
|
|
109
103
|
import_devUtils.devUtils.formatMessage(`${(0, import_getTimestamp.getTimestamp)()} %c\u25B6%c ${publicUrl}`),
|
|
110
|
-
`color:${colors.
|
|
104
|
+
`color:${colors.system}`,
|
|
111
105
|
"color:inherit"
|
|
112
106
|
);
|
|
113
107
|
console.log("Client:", client.socket);
|
|
114
108
|
console.groupEnd();
|
|
115
109
|
}
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
const
|
|
110
|
+
function logConnectionClose(event) {
|
|
111
|
+
const target = event.target;
|
|
112
|
+
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(target.url);
|
|
119
113
|
console.groupCollapsed(
|
|
120
114
|
import_devUtils.devUtils.formatMessage(
|
|
121
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\
|
|
115
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u25A0%c ${publicUrl}`
|
|
122
116
|
),
|
|
123
|
-
`color:${colors.
|
|
124
|
-
"color:inherit"
|
|
125
|
-
"color:gray;font-weight:normal",
|
|
126
|
-
"color:inherit;font-weight:inherit"
|
|
117
|
+
`color:${colors.system}`,
|
|
118
|
+
"color:inherit"
|
|
127
119
|
);
|
|
128
120
|
console.log(event);
|
|
129
121
|
console.groupEnd();
|
|
130
122
|
}
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
const
|
|
123
|
+
function logClientError(event) {
|
|
124
|
+
const socket = event.target;
|
|
125
|
+
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(socket.url);
|
|
134
126
|
console.groupCollapsed(
|
|
135
127
|
import_devUtils.devUtils.formatMessage(
|
|
136
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\
|
|
128
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
137
129
|
),
|
|
138
|
-
`color:${colors.
|
|
139
|
-
"color:inherit"
|
|
140
|
-
"color:gray;font-weight:normal",
|
|
141
|
-
"color:inherit;font-weight:inherit"
|
|
130
|
+
`color:${colors.system}`,
|
|
131
|
+
"color:inherit"
|
|
142
132
|
);
|
|
143
133
|
console.log(event);
|
|
144
134
|
console.groupEnd();
|
|
145
135
|
}
|
|
146
|
-
async function
|
|
136
|
+
async function logOutgoingClientMessage(event) {
|
|
147
137
|
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
148
138
|
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
139
|
+
const arrow = event.defaultPrevented ? "\u21E1" : "\u2B06";
|
|
149
140
|
console.groupCollapsed(
|
|
150
141
|
import_devUtils.devUtils.formatMessage(
|
|
151
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c
|
|
142
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`
|
|
152
143
|
),
|
|
153
|
-
`color:${colors.
|
|
144
|
+
`color:${colors.outgoing}`,
|
|
154
145
|
"color:inherit",
|
|
155
146
|
"color:gray;font-weight:normal",
|
|
156
147
|
"color:inherit;font-weight:inherit"
|
|
@@ -158,14 +149,14 @@ async function logIncomingClientMessage(event) {
|
|
|
158
149
|
console.log(event);
|
|
159
150
|
console.groupEnd();
|
|
160
151
|
}
|
|
161
|
-
async function
|
|
152
|
+
async function logOutgoingMockedClientMessage(event) {
|
|
162
153
|
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
163
154
|
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
164
155
|
console.groupCollapsed(
|
|
165
156
|
import_devUtils.devUtils.formatMessage(
|
|
166
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\
|
|
157
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u2B06%c ${publicData} %c${byteLength}%c`
|
|
167
158
|
),
|
|
168
|
-
`color:${colors.
|
|
159
|
+
`color:${colors.mocked}`,
|
|
169
160
|
"color:inherit",
|
|
170
161
|
"color:gray;font-weight:normal",
|
|
171
162
|
"color:inherit;font-weight:inherit"
|
|
@@ -173,15 +164,17 @@ async function logIncomingMockedClientMessage(event) {
|
|
|
173
164
|
console.log(event);
|
|
174
165
|
console.groupEnd();
|
|
175
166
|
}
|
|
176
|
-
function
|
|
177
|
-
const
|
|
178
|
-
const
|
|
167
|
+
async function logIncomingMockedClientMessage(event) {
|
|
168
|
+
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
169
|
+
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
179
170
|
console.groupCollapsed(
|
|
180
171
|
import_devUtils.devUtils.formatMessage(
|
|
181
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\
|
|
172
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\u2B07%c ${publicData} %c${byteLength}%c`
|
|
182
173
|
),
|
|
183
|
-
`color:${colors.
|
|
184
|
-
"color:inherit"
|
|
174
|
+
`color:${colors.mocked}`,
|
|
175
|
+
"color:inherit",
|
|
176
|
+
"color:gray;font-weight:normal",
|
|
177
|
+
"color:inherit;font-weight:inherit"
|
|
185
178
|
);
|
|
186
179
|
console.log(event);
|
|
187
180
|
console.groupEnd();
|
|
@@ -189,11 +182,12 @@ function logConnectionClose(event) {
|
|
|
189
182
|
async function logIncomingServerMessage(event) {
|
|
190
183
|
const byteLength = (0, import_getMessageLength.getMessageLength)(event.data);
|
|
191
184
|
const publicData = await (0, import_getPublicData.getPublicData)(event.data);
|
|
185
|
+
const arrow = event.defaultPrevented ? "\u21E3" : "\u2B07";
|
|
192
186
|
console.groupCollapsed(
|
|
193
187
|
import_devUtils.devUtils.formatMessage(
|
|
194
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c
|
|
188
|
+
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`
|
|
195
189
|
),
|
|
196
|
-
`color:${colors.
|
|
190
|
+
`color:${colors.incoming}`,
|
|
197
191
|
"color:inherit",
|
|
198
192
|
"color:gray;font-weight:normal",
|
|
199
193
|
"color:inherit;font-weight:inherit"
|
|
@@ -201,17 +195,4 @@ async function logIncomingServerMessage(event) {
|
|
|
201
195
|
console.log(event);
|
|
202
196
|
console.groupEnd();
|
|
203
197
|
}
|
|
204
|
-
function logClientError(event) {
|
|
205
|
-
const socket = event.target;
|
|
206
|
-
const publicUrl = (0, import_toPublicUrl.toPublicUrl)(socket.url);
|
|
207
|
-
console.groupCollapsed(
|
|
208
|
-
import_devUtils.devUtils.formatMessage(
|
|
209
|
-
`${(0, import_getTimestamp.getTimestamp)({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
210
|
-
),
|
|
211
|
-
`color:${colors.blue}`,
|
|
212
|
-
"color:inherit"
|
|
213
|
-
);
|
|
214
|
-
console.log(event);
|
|
215
|
-
console.groupEnd();
|
|
216
|
-
}
|
|
217
198
|
//# sourceMappingURL=attachWebSocketLogger.js.map
|
|
@@ -1 +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\nconst colors = {\n blue: '#3b82f6',\n green: '#22c55e',\n red: '#ef4444',\n orange: '#ff6a33',\n}\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(`${getTimestamp()} %c▶%c ${publicUrl}`),\n `color:${colors.blue}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log('Client:', client.socket)\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↑%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.green}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇡%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.orange}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c↓%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.red}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.orange}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\nfunction logConnectionClose(event: CloseEvent) {\n const target = event.target as WebSocket\n const publicUrl = toPublicUrl(target.url)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c■%c ${publicUrl}`,\n ),\n `color:${colors.blue}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⇣%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.green}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\nfunction logClientError(event: Event) {\n const socket = event.target as WebSocket\n const publicUrl = toPublicUrl(socket.url)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c\\u00D7%c ${publicUrl}`,\n ),\n `color:${colors.blue}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n"],"mappings":"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","names":[]}
|
|
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\nconst colors = {\n system: '#3b82f6',\n outgoing: '#22c55e',\n incoming: '#ef4444',\n mocked: '#ff6a33',\n}\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 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\n queueMicrotask(() => {\n logIncomingMockedClientMessage(messageEvent)\n })\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.socket,\n },\n target: {\n enumerable: true,\n writable: false,\n value: server.socket,\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 // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(`${getTimestamp()} %c▶%c ${publicUrl}`),\n `color:${colors.system}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log('Client:', client.socket)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\nfunction logConnectionClose(event: CloseEvent) {\n const target = event.target as WebSocket\n const publicUrl = toPublicUrl(target.url)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c■%c ${publicUrl}`,\n ),\n `color:${colors.system}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\nfunction logClientError(event: Event) {\n const socket = event.target as WebSocket\n const publicUrl = toPublicUrl(socket.url)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c\\u00D7%c ${publicUrl}`,\n ),\n `color:${colors.system}`,\n 'color:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message.\n */\nasync function logOutgoingClientMessage(event: MessageEvent<WebSocketData>) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n const arrow = event.defaultPrevented ? '⇡' : '⬆'\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.outgoing}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `server.send()` in the event handler.\n */\nasync function logOutgoingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⬆%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.mocked}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\n/**\n * Prints the outgoing client message initiated\n * by `client.send()` in the event handler.\n */\nasync function logIncomingMockedClientMessage(\n event: MessageEvent<WebSocketData>,\n) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c⬇%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.mocked}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n\nasync function logIncomingServerMessage(event: MessageEvent<WebSocketData>) {\n const byteLength = getMessageLength(event.data)\n const publicData = await getPublicData(event.data)\n const arrow = event.defaultPrevented ? '⇣' : '⬇'\n\n // eslint-disable-next-line no-console\n console.groupCollapsed(\n devUtils.formatMessage(\n `${getTimestamp({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`,\n ),\n `color:${colors.incoming}`,\n 'color:inherit',\n 'color:gray;font-weight:normal',\n 'color:inherit;font-weight:inherit',\n )\n // eslint-disable-next-line no-console\n console.log(event)\n // eslint-disable-next-line no-console\n console.groupEnd()\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,10 +4,10 @@ import { toPublicUrl } from '../../utils/request/toPublicUrl.mjs';
|
|
|
4
4
|
import { getMessageLength } from './getMessageLength.mjs';
|
|
5
5
|
import { getPublicData } from './getPublicData.mjs';
|
|
6
6
|
const colors = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
system: "#3b82f6",
|
|
8
|
+
outgoing: "#22c55e",
|
|
9
|
+
incoming: "#ef4444",
|
|
10
|
+
mocked: "#ff6a33"
|
|
11
11
|
};
|
|
12
12
|
function attachWebSocketLogger(connection) {
|
|
13
13
|
const { client, server } = connection;
|
|
@@ -18,9 +18,6 @@ function attachWebSocketLogger(connection) {
|
|
|
18
18
|
client.addEventListener("close", (event) => {
|
|
19
19
|
logConnectionClose(event);
|
|
20
20
|
});
|
|
21
|
-
client.socket.addEventListener("message", (event) => {
|
|
22
|
-
logIncomingClientMessage(event);
|
|
23
|
-
});
|
|
24
21
|
client.socket.addEventListener("error", (event) => {
|
|
25
22
|
logClientError(event);
|
|
26
23
|
});
|
|
@@ -40,7 +37,9 @@ function attachWebSocketLogger(connection) {
|
|
|
40
37
|
value: client.socket
|
|
41
38
|
}
|
|
42
39
|
});
|
|
43
|
-
|
|
40
|
+
queueMicrotask(() => {
|
|
41
|
+
logIncomingMockedClientMessage(messageEvent);
|
|
42
|
+
});
|
|
44
43
|
return Reflect.apply(target, thisArg, args);
|
|
45
44
|
}
|
|
46
45
|
});
|
|
@@ -61,12 +60,12 @@ function attachWebSocketLogger(connection) {
|
|
|
61
60
|
currentTarget: {
|
|
62
61
|
enumerable: true,
|
|
63
62
|
writable: false,
|
|
64
|
-
value: server
|
|
63
|
+
value: server.socket
|
|
65
64
|
},
|
|
66
65
|
target: {
|
|
67
66
|
enumerable: true,
|
|
68
67
|
writable: false,
|
|
69
|
-
value: server
|
|
68
|
+
value: server.socket
|
|
70
69
|
}
|
|
71
70
|
});
|
|
72
71
|
logOutgoingMockedClientMessage(messageEvent);
|
|
@@ -78,50 +77,47 @@ function logConnectionOpen(client) {
|
|
|
78
77
|
const publicUrl = toPublicUrl(client.url);
|
|
79
78
|
console.groupCollapsed(
|
|
80
79
|
devUtils.formatMessage(`${getTimestamp()} %c\u25B6%c ${publicUrl}`),
|
|
81
|
-
`color:${colors.
|
|
80
|
+
`color:${colors.system}`,
|
|
82
81
|
"color:inherit"
|
|
83
82
|
);
|
|
84
83
|
console.log("Client:", client.socket);
|
|
85
84
|
console.groupEnd();
|
|
86
85
|
}
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
const
|
|
86
|
+
function logConnectionClose(event) {
|
|
87
|
+
const target = event.target;
|
|
88
|
+
const publicUrl = toPublicUrl(target.url);
|
|
90
89
|
console.groupCollapsed(
|
|
91
90
|
devUtils.formatMessage(
|
|
92
|
-
`${getTimestamp({ milliseconds: true })} %c\
|
|
91
|
+
`${getTimestamp({ milliseconds: true })} %c\u25A0%c ${publicUrl}`
|
|
93
92
|
),
|
|
94
|
-
`color:${colors.
|
|
95
|
-
"color:inherit"
|
|
96
|
-
"color:gray;font-weight:normal",
|
|
97
|
-
"color:inherit;font-weight:inherit"
|
|
93
|
+
`color:${colors.system}`,
|
|
94
|
+
"color:inherit"
|
|
98
95
|
);
|
|
99
96
|
console.log(event);
|
|
100
97
|
console.groupEnd();
|
|
101
98
|
}
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
const
|
|
99
|
+
function logClientError(event) {
|
|
100
|
+
const socket = event.target;
|
|
101
|
+
const publicUrl = toPublicUrl(socket.url);
|
|
105
102
|
console.groupCollapsed(
|
|
106
103
|
devUtils.formatMessage(
|
|
107
|
-
`${getTimestamp({ milliseconds: true })} %c\
|
|
104
|
+
`${getTimestamp({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
108
105
|
),
|
|
109
|
-
`color:${colors.
|
|
110
|
-
"color:inherit"
|
|
111
|
-
"color:gray;font-weight:normal",
|
|
112
|
-
"color:inherit;font-weight:inherit"
|
|
106
|
+
`color:${colors.system}`,
|
|
107
|
+
"color:inherit"
|
|
113
108
|
);
|
|
114
109
|
console.log(event);
|
|
115
110
|
console.groupEnd();
|
|
116
111
|
}
|
|
117
|
-
async function
|
|
112
|
+
async function logOutgoingClientMessage(event) {
|
|
118
113
|
const byteLength = getMessageLength(event.data);
|
|
119
114
|
const publicData = await getPublicData(event.data);
|
|
115
|
+
const arrow = event.defaultPrevented ? "\u21E1" : "\u2B06";
|
|
120
116
|
console.groupCollapsed(
|
|
121
117
|
devUtils.formatMessage(
|
|
122
|
-
`${getTimestamp({ milliseconds: true })} %c
|
|
118
|
+
`${getTimestamp({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`
|
|
123
119
|
),
|
|
124
|
-
`color:${colors.
|
|
120
|
+
`color:${colors.outgoing}`,
|
|
125
121
|
"color:inherit",
|
|
126
122
|
"color:gray;font-weight:normal",
|
|
127
123
|
"color:inherit;font-weight:inherit"
|
|
@@ -129,14 +125,14 @@ async function logIncomingClientMessage(event) {
|
|
|
129
125
|
console.log(event);
|
|
130
126
|
console.groupEnd();
|
|
131
127
|
}
|
|
132
|
-
async function
|
|
128
|
+
async function logOutgoingMockedClientMessage(event) {
|
|
133
129
|
const byteLength = getMessageLength(event.data);
|
|
134
130
|
const publicData = await getPublicData(event.data);
|
|
135
131
|
console.groupCollapsed(
|
|
136
132
|
devUtils.formatMessage(
|
|
137
|
-
`${getTimestamp({ milliseconds: true })} %c\
|
|
133
|
+
`${getTimestamp({ milliseconds: true })} %c\u2B06%c ${publicData} %c${byteLength}%c`
|
|
138
134
|
),
|
|
139
|
-
`color:${colors.
|
|
135
|
+
`color:${colors.mocked}`,
|
|
140
136
|
"color:inherit",
|
|
141
137
|
"color:gray;font-weight:normal",
|
|
142
138
|
"color:inherit;font-weight:inherit"
|
|
@@ -144,15 +140,17 @@ async function logIncomingMockedClientMessage(event) {
|
|
|
144
140
|
console.log(event);
|
|
145
141
|
console.groupEnd();
|
|
146
142
|
}
|
|
147
|
-
function
|
|
148
|
-
const
|
|
149
|
-
const
|
|
143
|
+
async function logIncomingMockedClientMessage(event) {
|
|
144
|
+
const byteLength = getMessageLength(event.data);
|
|
145
|
+
const publicData = await getPublicData(event.data);
|
|
150
146
|
console.groupCollapsed(
|
|
151
147
|
devUtils.formatMessage(
|
|
152
|
-
`${getTimestamp({ milliseconds: true })} %c\
|
|
148
|
+
`${getTimestamp({ milliseconds: true })} %c\u2B07%c ${publicData} %c${byteLength}%c`
|
|
153
149
|
),
|
|
154
|
-
`color:${colors.
|
|
155
|
-
"color:inherit"
|
|
150
|
+
`color:${colors.mocked}`,
|
|
151
|
+
"color:inherit",
|
|
152
|
+
"color:gray;font-weight:normal",
|
|
153
|
+
"color:inherit;font-weight:inherit"
|
|
156
154
|
);
|
|
157
155
|
console.log(event);
|
|
158
156
|
console.groupEnd();
|
|
@@ -160,11 +158,12 @@ function logConnectionClose(event) {
|
|
|
160
158
|
async function logIncomingServerMessage(event) {
|
|
161
159
|
const byteLength = getMessageLength(event.data);
|
|
162
160
|
const publicData = await getPublicData(event.data);
|
|
161
|
+
const arrow = event.defaultPrevented ? "\u21E3" : "\u2B07";
|
|
163
162
|
console.groupCollapsed(
|
|
164
163
|
devUtils.formatMessage(
|
|
165
|
-
`${getTimestamp({ milliseconds: true })} %c
|
|
164
|
+
`${getTimestamp({ milliseconds: true })} %c${arrow}%c ${publicData} %c${byteLength}%c`
|
|
166
165
|
),
|
|
167
|
-
`color:${colors.
|
|
166
|
+
`color:${colors.incoming}`,
|
|
168
167
|
"color:inherit",
|
|
169
168
|
"color:gray;font-weight:normal",
|
|
170
169
|
"color:inherit;font-weight:inherit"
|
|
@@ -172,26 +171,8 @@ async function logIncomingServerMessage(event) {
|
|
|
172
171
|
console.log(event);
|
|
173
172
|
console.groupEnd();
|
|
174
173
|
}
|
|
175
|
-
function logClientError(event) {
|
|
176
|
-
const socket = event.target;
|
|
177
|
-
const publicUrl = toPublicUrl(socket.url);
|
|
178
|
-
console.groupCollapsed(
|
|
179
|
-
devUtils.formatMessage(
|
|
180
|
-
`${getTimestamp({ milliseconds: true })} %c\xD7%c ${publicUrl}`
|
|
181
|
-
),
|
|
182
|
-
`color:${colors.blue}`,
|
|
183
|
-
"color:inherit"
|
|
184
|
-
);
|
|
185
|
-
console.log(event);
|
|
186
|
-
console.groupEnd();
|
|
187
|
-
}
|
|
188
174
|
export {
|
|
189
175
|
attachWebSocketLogger,
|
|
190
|
-
logConnectionOpen
|
|
191
|
-
logIncomingClientMessage,
|
|
192
|
-
logIncomingMockedClientMessage,
|
|
193
|
-
logIncomingServerMessage,
|
|
194
|
-
logOutgoingClientMessage,
|
|
195
|
-
logOutgoingMockedClientMessage
|
|
176
|
+
logConnectionOpen
|
|
196
177
|
};
|
|
197
178
|
//# sourceMappingURL=attachWebSocketLogger.mjs.map
|