UNPKG

955 BJavaScriptView Raw
1const os = require('os')
2const { codeFrameColumns } = require('@babel/code-frame')
3const chalk = require('chalk')
4const fs = require('fs')
5
6module.exports = codeFrameOptions => (error, useColors) => {
7 const colors = new chalk.constructor({ enabled: useColors })
8 const { file } = error
9 const source = file && fs.existsSync(file) && fs.readFileSync(file, 'utf-8')
10
11 let frame = ''
12
13 if (source) {
14 frame = codeFrameColumns(
15 source,
16 {
17 start: {
18 line: error.line,
19 column: error.character,
20 },
21 },
22 Object.assign({}, codeFrameOptions || {}, {
23 highlightCode: useColors,
24 })
25 )
26 }
27
28 return (
29 colors.dim(`${error.line}:${error.character} `) +
30 error.content +
31 colors.cyan(` (TS${error.code})`) +
32 os.EOL +
33 (frame ? os.EOL + frame : '')
34 )
35}