UNPKG

italia-tslint-rules

Version:

Custom tslint rules for the IO project

64 lines 2.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var Lint = require("tslint"); var utils = require("tsutils"); var ts = require("typescript"); var tslint_1 = require("tslint"); var enableDisableRules_1 = require("tslint/lib/enableDisableRules"); var Rule = (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { return _super !== null && _super.apply(this, arguments) || this; } Rule.prototype.applyWithProgram = function (sourceFile, _) { var failures = []; utils.forEachComment(sourceFile, function (fullText, comment) { var commentText = comment.kind === ts.SyntaxKind.SingleLineCommentTrivia ? fullText.substring(comment.pos + 2, comment.end) : fullText.substring(comment.pos + 2, comment.end - 2); var parsed = parseComment(commentText); if (parsed !== undefined) { if (!parsed.isEnabled && parsed.rulesList === "all") { failures.push(new tslint_1.RuleFailure(sourceFile, comment.pos, comment.end, Rule.FAILURE_STRING, Rule.metadata.ruleName)); } } }); return failures; }; Rule.metadata = { ruleName: "no-tslint-disable-all", description: "Avoid disabling all tslint rules.", options: {}, optionsDescription: "None", type: "typescript", hasFix: false, typescriptOnly: true, requiresTypeInfo: false }; Rule.FAILURE_STRING = "do not disable all tslint rules"; return Rule; }(Lint.Rules.TypedRule)); exports.Rule = Rule; function parseComment(commentText) { var match = enableDisableRules_1.ENABLE_DISABLE_REGEX.exec(commentText); if (match === null) { return undefined; } var baseResponse = { isEnabled: match[1] === "enable", modifier: match[2] }; var rulesList = splitOnSpaces(commentText.substr(match[0].length)); if (rulesList.length === 0 && match[3] === ":") { return undefined; } if (rulesList.length === 0 || rulesList.indexOf("all") !== -1) { return tslib_1.__assign({}, baseResponse, { rulesList: "all" }); } return tslib_1.__assign({}, baseResponse, { rulesList: rulesList }); } function splitOnSpaces(str) { return str.split(/\s+/).filter(function (s) { return s !== ""; }); } //# sourceMappingURL=noTslintDisableAllRule.js.map