12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- const ansiHTML = require('ansi-html-community');
- const entities = require('html-entities');
- const theme = require('../theme.js');
- const utils = require('../utils.js');
- ansiHTML.setColors(theme);
- function CompileErrorTrace(document, root, props) {
- const errorParts = props.errorMessage.split('\n');
- if (errorParts.length) {
- if (errorParts[0]) {
- errorParts[0] = utils.formatFilename(errorParts[0]);
- }
- const errorMessage = errorParts.splice(1, 1)[0];
- if (errorMessage) {
-
- errorParts.unshift(errorMessage.replace(/^(.*:)\s.*:(\s.*)$/, '$1$2'));
- }
- }
- const stackContainer = document.createElement('pre');
- stackContainer.innerHTML = entities.decode(
- ansiHTML(entities.encode(errorParts.join('\n'), { level: 'html5', mode: 'nonAscii' })),
- { level: 'html5' }
- );
- stackContainer.style.fontFamily = [
- '"Operator Mono SSm"',
- '"Operator Mono"',
- '"Fira Code Retina"',
- '"Fira Code"',
- '"FiraCode-Retina"',
- '"Andale Mono"',
- '"Lucida Console"',
- 'Menlo',
- 'Consolas',
- 'Monaco',
- 'monospace',
- ].join(', ');
- stackContainer.style.margin = '0';
- stackContainer.style.whiteSpace = 'pre-wrap';
- root.appendChild(stackContainer);
- }
- module.exports = CompileErrorTrace;
|