UNPKG

2.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const os = require("os");
4const codeFrame = require("babel-code-frame");
5const chalk_1 = require("chalk");
6const fs = require("fs");
7const NormalizedMessage_1 = require("../NormalizedMessage");
8const FsHelper_1 = require("../FsHelper");
9/**
10 * Create new code frame formatter.
11 *
12 * @param options Options for babel-code-frame - see https://www.npmjs.com/package/babel-code-frame
13 * @returns {codeframeFormatter}
14 */
15function createCodeframeFormatter(options) {
16 return function codeframeFormatter(message, useColors) {
17 const colors = new chalk_1.default.constructor({ enabled: useColors });
18 const messageColor = message.isWarningSeverity()
19 ? colors.bold.yellow
20 : colors.bold.red;
21 const positionColor = colors.dim;
22 if (message.code === NormalizedMessage_1.NormalizedMessage.ERROR_CODE_INTERNAL) {
23 return (messageColor(`INTERNAL ${message.severity.toUpperCase()}(${message.line},${message.character}) `) +
24 message.content +
25 (message.stack
26 ? os.EOL + 'stack trace:' + os.EOL + colors.gray(message.stack)
27 : ''));
28 }
29 const file = message.file;
30 const source = file && FsHelper_1.fileExistsSync(file) && fs.readFileSync(file, 'utf-8');
31 let frame = '';
32 if (source) {
33 frame = codeFrame(source, message.line, // Assertion: `codeFrame` allows passing undefined, typings are incorrect
34 message.character, Object.assign({}, (options || {}), { highlightCode: useColors }))
35 .split('\n')
36 .map(str => ' ' + str)
37 .join(os.EOL);
38 }
39 return (messageColor(message.severity.toUpperCase() +
40 ' in ' +
41 `${message.file}(${message.line},${message.character}):`) +
42 os.EOL +
43 positionColor(message.line + ':' + message.character) +
44 ' ' +
45 message.content +
46 (frame ? os.EOL + frame : ''));
47 };
48}
49exports.createCodeframeFormatter = createCodeframeFormatter;
50//# sourceMappingURL=codeframeFormatter.js.map
\No newline at end of file