UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

31 lines (29 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDiagnosticMessage = void 0; const tslib_1 = require("tslib"); const code_frame_1 = require("@babel/code-frame"); const path = tslib_1.__importStar(require("path")); const typescript_1 = tslib_1.__importDefault(require("typescript")); const MESSAGE_INDENT = ' '; const getRenderedCallsite = (fileContent, line, column, noHighlight = false) => { let renderedCallsite = code_frame_1.codeFrameColumns(fileContent, { start: { column, line } }, { highlightCode: !noHighlight }); renderedCallsite = renderedCallsite .split('\n') .map((renderedLine) => MESSAGE_INDENT + renderedLine) .join('\n'); renderedCallsite = `\n${renderedCallsite}\n`; return renderedCallsite; }; exports.getDiagnosticMessage = (diagnostic, { onlyFileName = false, noHighlight = false } = { onlyFileName: false, noHighlight: false }) => { if (diagnostic.file && diagnostic.start) { const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); const message = typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); const fileName = diagnostic.file.fileName; const filePath = onlyFileName ? path.basename(fileName) : fileName; const callSite = getRenderedCallsite(diagnostic.file.text, line + 1, character + 1, noHighlight); return `${filePath} (${line + 1},${character + 1}): ${message}\n${callSite}`; } return typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); }; //# sourceMappingURL=getDiagnosticMessage.js.map