@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
31 lines (29 loc) • 1.66 kB
JavaScript
;
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