1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var helpers_1 = require("../util/helpers");
|
4 | var logger_1 = require("./logger");
|
5 | var STOP_CHARS = [' ', '=', ',', '.', '\t', '{', '}', '(', ')', '"', '\'', '`', '?', ':', ';', '+', '-', '*', '/', '<', '>', '&', '[', ']', '|'];
|
6 | function runTsLintDiagnostics(context, failures) {
|
7 | return failures.map(function (failure) { return loadDiagnostic(context, failure); });
|
8 | }
|
9 | exports.runTsLintDiagnostics = runTsLintDiagnostics;
|
10 | function loadDiagnostic(context, failure) {
|
11 | var start = failure.getStartPosition()
|
12 | .toJson();
|
13 | var end = failure.getEndPosition()
|
14 | .toJson();
|
15 | var fileName = failure.getFileName();
|
16 | var sourceFile = failure.getRawLines();
|
17 | var d = {
|
18 | level: 'warn',
|
19 | type: 'tslint',
|
20 | language: 'typescript',
|
21 | absFileName: fileName,
|
22 | relFileName: logger_1.Logger.formatFileName(context.rootDir, fileName),
|
23 | header: logger_1.Logger.formatHeader('tslint', fileName, context.rootDir, start.line + 1, end.line + 1),
|
24 | code: failure.getRuleName(),
|
25 | messageText: failure.getFailure(),
|
26 | lines: []
|
27 | };
|
28 | if (sourceFile) {
|
29 | var srcLines = helpers_1.splitLineBreaks(sourceFile);
|
30 | for (var i = start.line; i <= end.line; i++) {
|
31 | if (srcLines[i].trim().length) {
|
32 | var errorLine = {
|
33 | lineIndex: i,
|
34 | lineNumber: i + 1,
|
35 | text: srcLines[i],
|
36 | html: srcLines[i],
|
37 | errorCharStart: (i === start.line) ? start.character : (i === end.line) ? end.character : -1,
|
38 | errorLength: 0,
|
39 | };
|
40 | for (var j = errorLine.errorCharStart; j < errorLine.text.length; j++) {
|
41 | if (STOP_CHARS.indexOf(errorLine.text.charAt(j)) > -1) {
|
42 | break;
|
43 | }
|
44 | errorLine.errorLength++;
|
45 | }
|
46 | if (errorLine.errorLength === 0 && errorLine.errorCharStart > 0) {
|
47 | errorLine.errorLength = 1;
|
48 | errorLine.errorCharStart--;
|
49 | }
|
50 | d.lines.push(errorLine);
|
51 | }
|
52 | }
|
53 | if (start.line > 0) {
|
54 | var beforeLine = {
|
55 | lineIndex: start.line - 1,
|
56 | lineNumber: start.line,
|
57 | text: srcLines[start.line - 1],
|
58 | html: srcLines[start.line - 1],
|
59 | errorCharStart: -1,
|
60 | errorLength: -1
|
61 | };
|
62 | d.lines.unshift(beforeLine);
|
63 | }
|
64 | if (end.line < srcLines.length) {
|
65 | var afterLine = {
|
66 | lineIndex: end.line + 1,
|
67 | lineNumber: end.line + 2,
|
68 | text: srcLines[end.line + 1],
|
69 | html: srcLines[end.line + 1],
|
70 | errorCharStart: -1,
|
71 | errorLength: -1
|
72 | };
|
73 | d.lines.push(afterLine);
|
74 | }
|
75 | }
|
76 | return d;
|
77 | }
|
78 | exports.loadDiagnostic = loadDiagnostic;
|