forked from angelozerr/codemirror-lint-eslint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lint.js
47 lines (39 loc) · 1.06 KB
/
lint.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import isNil from 'lodash/isNil'
import linterModule from 'eslint/lib/linter/linter'
import defaultEslintConfig from '../assets/json/eslint.json'
const Pos = CodeMirror.Pos
const linter = new linterModule.Linter()
function validator(text, options) {
const result = []
if (!text) return result
const [
config = defaultEslintConfig,
wrappedText = `async () => {\n${text}\n}`,
] = []
const errors = linter.verify(wrappedText, {
...config,
})
for (let i = 0; i < errors.length; i++) {
const error = errors[i]
result.push({
message: error.message,
severity: getSeverity(error),
from: Pos(error.line - 1 - 1, error.column - 1),
to: Pos(
isNil(error.endLine) ? error.line - 1 - 1 : error.endLine - 1 - 1,
isNil(error.endColumn) ? error.column : error.endColumn - 1,
),
})
}
return result
}
CodeMirror.registerHelper('lint', 'javascript', validator)
function getSeverity(error) {
switch (error.severity) {
case 1:
return 'warning'
case 2:
default:
return 'error'
}
}