UNPKG

3.07 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var helpers_1 = require("../util/helpers");
4var logger_1 = require("./logger");
5var STOP_CHARS = [' ', '=', ',', '.', '\t', '{', '}', '(', ')', '"', '\'', '`', '?', ':', ';', '+', '-', '*', '/', '<', '>', '&', '[', ']', '|'];
6function runTsLintDiagnostics(context, failures) {
7 return failures.map(function (failure) { return loadDiagnostic(context, failure); });
8}
9exports.runTsLintDiagnostics = runTsLintDiagnostics;
10function 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}
78exports.loadDiagnostic = loadDiagnostic;