MCPcopy Create free account
hub / github.com/Snapchat/Valdi / _onConsoleMessage

Method _onConsoleMessage

valdi/vscode_debugger/src/adapter/threads.ts:990–1078  ·  view source on GitHub ↗
(
    event: Cdp.Runtime.ConsoleAPICalledEvent,
  )

Source from the content-addressed store, hash-verified

988 }
989
990 async _onConsoleMessage(
991 event: Cdp.Runtime.ConsoleAPICalledEvent,
992 ): Promise<Dap.OutputEventParams | undefined> {
993 switch (event.type) {
994 case 'endGroup':
995 return { category: 'stdout', output: '', group: 'end' };
996 case 'clear':
997 return this._clearDebuggerConsole();
998 }
999
1000 // Ignore the duplicate group events that Node.js can emit:
1001 // See: https://github.com/nodejs/node/issues/31973
1002 if (event.type === 'log') {
1003 const firstFrame = event.stackTrace?.callFrames[0];
1004 if (
1005 firstFrame &&
1006 firstFrame.functionName === 'group' &&
1007 firstFrame.url === 'internal/console/constructor.js'
1008 ) {
1009 return undefined;
1010 }
1011 }
1012
1013 let stackTrace: StackTrace | undefined;
1014 let uiLocation: IUiLocation | undefined;
1015 const isAssert = event.type === 'assert';
1016 const isError = event.type === 'error';
1017 if (event.stackTrace) {
1018 stackTrace = StackTrace.fromRuntime(this, event.stackTrace);
1019 const frames = await stackTrace.loadFrames(1);
1020 if (frames.length) uiLocation = await frames[0].uiLocation();
1021 if (!isError && event.type !== 'warning' && !isAssert && event.type !== 'trace')
1022 stackTrace = undefined;
1023 }
1024
1025 let category: 'console' | 'stdout' | 'stderr' | 'telemetry' = 'stdout';
1026 if (isError || isAssert) category = 'stderr';
1027 if (event.type === 'warning') category = 'console';
1028
1029 if (isAssert && event.args[0] && event.args[0].value === 'console.assert')
1030 event.args[0].value = localize('console.assert', 'Assertion failed');
1031
1032 let messageText: string;
1033 let usedAllArgs = false;
1034 if (event.type === 'table' && event.args.length && event.args[0].preview) {
1035 messageText = objectPreview.formatAsTable(event.args[0].preview);
1036 } else {
1037 const useMessageFormat = event.args.length > 1 && event.args[0].type === 'string';
1038 const formatString = useMessageFormat ? (event.args[0].value as string) : '';
1039 const formatResult = messageFormat.formatMessage(
1040 formatString,
1041 (useMessageFormat ? event.args.slice(1) : event.args) as AnyObject[],
1042 objectPreview.messageFormatters,
1043 );
1044 messageText = formatResult.result;
1045 usedAllArgs = formatResult.usedAllSubs;
1046 }
1047

Callers 1

_initializeMethod · 0.95

Calls 6

_clearDebuggerConsoleMethod · 0.95
loadFramesMethod · 0.80
uiLocationMethod · 0.80
fromRuntimeMethod · 0.45
toDapMethod · 0.45

Tested by

no test coverage detected