@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
30 lines (28 loc) • 5.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldERpYWdub3N0aWNNZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFxRDtBQUNyRCxtREFBNkI7QUFDN0Isb0VBQTRCO0FBTzVCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUU5QixNQUFNLG1CQUFtQixHQUFHLENBQUMsV0FBbUIsRUFBRSxJQUFZLEVBQUUsTUFBZSxFQUFFLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBRTtJQUN0RyxJQUFJLGdCQUFnQixHQUFHLDZCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUVuSCxnQkFBZ0IsR0FBRyxnQkFBZ0I7U0FDaEMsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLEdBQUcsQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7U0FDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWQsZ0JBQWdCLEdBQUcsS0FBSyxnQkFBZ0IsSUFBSSxDQUFDO0lBRTdDLE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRVcsUUFBQSxvQkFBb0IsR0FBRyxDQUNsQyxVQUF5QixFQUN6QixFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLEtBQUssS0FBYyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUM1RixFQUFFO0lBQ1YsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDdkMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RixNQUFNLE9BQU8sR0FBRyxvQkFBRSxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWpHLE9BQU8sR0FBRyxRQUFRLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxNQUFNLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztLQUM5RTtJQUVELE9BQU8sb0JBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy91dGlscy9nZXREaWFnbm9zdGljTWVzc2FnZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZGVGcmFtZUNvbHVtbnMgfSBmcm9tICdAYmFiZWwvY29kZS1mcmFtZSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG9ubHlGaWxlTmFtZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vSGlnaGxpZ2h0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgTUVTU0FHRV9JTkRFTlQgPSAnICAgICc7XG5cbmNvbnN0IGdldFJlbmRlcmVkQ2FsbHNpdGUgPSAoZmlsZUNvbnRlbnQ6IHN0cmluZywgbGluZTogbnVtYmVyLCBjb2x1bW4/OiBudW1iZXIsIG5vSGlnaGxpZ2h0ID0gZmFsc2UpID0+IHtcbiAgbGV0IHJlbmRlcmVkQ2FsbHNpdGUgPSBjb2RlRnJhbWVDb2x1bW5zKGZpbGVDb250ZW50LCB7IHN0YXJ0OiB7IGNvbHVtbiwgbGluZSB9IH0sIHsgaGlnaGxpZ2h0Q29kZTogIW5vSGlnaGxpZ2h0IH0pO1xuXG4gIHJlbmRlcmVkQ2FsbHNpdGUgPSByZW5kZXJlZENhbGxzaXRlXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKHJlbmRlcmVkTGluZTogc3RyaW5nKSA9PiBNRVNTQUdFX0lOREVOVCArIHJlbmRlcmVkTGluZSlcbiAgICAuam9pbignXFxuJyk7XG5cbiAgcmVuZGVyZWRDYWxsc2l0ZSA9IGBcXG4ke3JlbmRlcmVkQ2FsbHNpdGV9XFxuYDtcblxuICByZXR1cm4gcmVuZGVyZWRDYWxsc2l0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaWFnbm9zdGljTWVzc2FnZSA9IChcbiAgZGlhZ25vc3RpYzogdHMuRGlhZ25vc3RpYyxcbiAgeyBvbmx5RmlsZU5hbWUgPSBmYWxzZSwgbm9IaWdobGlnaHQgPSBmYWxzZSB9OiBPcHRpb25zID0geyBvbmx5RmlsZU5hbWU6IGZhbHNlLCBub0hpZ2hsaWdodDogZmFsc2UgfSxcbik6IHN0cmluZyA9PiB7XG4gIGlmIChkaWFnbm9zdGljLmZpbGUgJiYgZGlhZ25vc3RpYy5zdGFydCkge1xuICAgIGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPSBkaWFnbm9zdGljLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZGlhZ25vc3RpYy5zdGFydCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCwgJ1xcbicpO1xuXG4gICAgY29uc3QgZmlsZU5hbWUgPSBkaWFnbm9zdGljLmZpbGUuZmlsZU5hbWU7XG4gICAgY29uc3QgZmlsZVBhdGggPSBvbmx5RmlsZU5hbWUgPyBwYXRoLmJhc2VuYW1lKGZpbGVOYW1lKSA6IGZpbGVOYW1lO1xuICAgIGNvbnN0IGNhbGxTaXRlID0gZ2V0UmVuZGVyZWRDYWxsc2l0ZShkaWFnbm9zdGljLmZpbGUudGV4dCwgbGluZSArIDEsIGNoYXJhY3RlciArIDEsIG5vSGlnaGxpZ2h0KTtcblxuICAgIHJldHVybiBgJHtmaWxlUGF0aH0gKCR7bGluZSArIDF9LCR7Y2hhcmFjdGVyICsgMX0pOiAke21lc3NhZ2V9XFxuJHtjYWxsU2l0ZX1gO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCwgJ1xcbicpO1xufTtcbiJdfQ==