UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

65 lines (62 loc) 1.99 kB
import 'vscode/vscode/vs/base/common/charCode'; import 'vscode/vscode/vs/base/common/marshallingIds'; import 'vscode/vscode/vs/base/common/path'; import 'vscode/vscode/vs/base/common/platform'; function parse(entry) { const args = []; let stack; try { const parsedArguments = JSON.parse(entry.arguments); const stackArgument = parsedArguments[parsedArguments.length - 1]; if (stackArgument && stackArgument.__$stack) { parsedArguments.pop(); stack = stackArgument.__$stack; } args.push(...parsedArguments); } catch (error) { args.push('Unable to log remote console arguments', entry.arguments); } return { args, stack }; } function findFirstFrame(stack) { if (!stack) { return stack; } const newlineIndex = stack.indexOf('\n'); if (newlineIndex === -1) { return stack; } return stack.substring(0, newlineIndex); } function log(entry, label) { const { args, stack } = parse(entry); const isOneStringArg = typeof args[0] === 'string' && args.length === 1; let topFrame = findFirstFrame(stack); if (topFrame) { topFrame = `(${topFrame.trim()})`; } let consoleArgs = []; if (typeof args[0] === 'string') { if (topFrame && isOneStringArg) { consoleArgs = [`%c[${label}] %c${args[0]} %c${topFrame}`, color('blue'), color(''), color('grey')]; } else { consoleArgs = [`%c[${label}] %c${args[0]}`, color('blue'), color(''), ...args.slice(1)]; } } else { consoleArgs = [`%c[${label}]%`, color('blue'), ...args]; } if (topFrame && !isOneStringArg) { consoleArgs.push(topFrame); } if (typeof console[entry.severity] !== 'function') { throw ( new Error('Unknown console method')); } console[entry.severity].apply(console, consoleArgs); } function color(color) { return `color: ${color}`; } export { log, parse };