UNPKG

tslint-consistent-codestyle

Version:

Additional rules to enforce constistent code style with tslint

112 lines 9.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ts = require("typescript"); var Lint = require("tslint"); var utils = require("tsutils"); var rules_1 = require("../src/rules"); var ALL_OR_NONE_OPTION = 'all-or-none'; var LEADING_OPTION = 'leading'; var TRAILING_OPTION = 'trailing'; var READONLY_OPTION = 'readonly'; var MEMBER_ACCESS_OPTION = 'member-access'; var ALL_OR_NONE_FAIL = 'don\'t mix parameter properties with regular parameters'; var LEADING_FAIL = 'parameter properties must precede regular parameters'; var TRAILING_FAIL = 'regular parameters must precede parameter properties'; var READONLY_FAIL = 'parameter property must be readonly'; var MEMBER_ACCESS_FAIL = 'parameter property must have access modifier'; var Rule = (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { return _super !== null && _super.apply(this, arguments) || this; } Rule.prototype.apply = function (sourceFile) { return this.applyWithWalker(new ParameterPropertyWalker(sourceFile, this.ruleName, { allOrNone: this.ruleArguments.indexOf(ALL_OR_NONE_OPTION) !== -1, leading: this.ruleArguments.indexOf(LEADING_OPTION) !== -1, trailing: this.ruleArguments.indexOf(TRAILING_OPTION) !== -1, readOnly: this.ruleArguments.indexOf(READONLY_OPTION) !== -1, memberAccess: this.ruleArguments.indexOf(MEMBER_ACCESS_OPTION) !== -1, })); }; return Rule; }(rules_1.AbstractConfigDependentRule)); exports.Rule = Rule; var ParameterPropertyWalker = (function (_super) { tslib_1.__extends(ParameterPropertyWalker, _super); function ParameterPropertyWalker() { return _super !== null && _super.apply(this, arguments) || this; } ParameterPropertyWalker.prototype.walk = function (sourceFile) { var _this = this; var cb = function (node) { if (node.kind === ts.SyntaxKind.Constructor) _this._checkConstructorDeclaration(node); return ts.forEachChild(node, cb); }; return ts.forEachChild(sourceFile, cb); }; ParameterPropertyWalker.prototype._checkConstructorDeclaration = function (node) { var parameters = node.parameters; var length = parameters.length; if (length === 0) return; var index = -1; for (var i = 0; i < length; ++i) { if (utils.isParameterProperty(parameters[i])) { index = i; break; } } if (index === -1) return; if (this.options.allOrNone) { var start = parameters[0].getStart(this.getSourceFile()); var end = parameters[parameters.length - 1].getEnd(); if (index > 0) { this.addFailure(start, end, ALL_OR_NONE_FAIL); } else { for (var i = index + 1; i < length; ++i) { if (!utils.isParameterProperty(parameters[i])) { this.addFailure(start, end, ALL_OR_NONE_FAIL); break; } } } } else if (this.options.leading) { var regular = index > 0; for (var i = index; i < length; ++i) { if (utils.isParameterProperty(parameters[i])) { if (regular) this.addFailureAtNode(parameters[i], LEADING_FAIL); } else { regular = true; } } } else if (this.options.trailing) { for (var i = index; i < length; ++i) if (!utils.isParameterProperty(parameters[i])) this.addFailureAtNode(parameters[i], TRAILING_FAIL); } if (this.options.memberAccess) { for (var i = index; i < length; ++i) { var parameter = parameters[i]; if (utils.isParameterProperty(parameter) && !utils.hasAccessModifier(parameter)) this.addFailureAtNode(parameter, MEMBER_ACCESS_FAIL); } } if (this.options.readOnly) { for (var i = index; i < length; ++i) { var parameter = parameters[i]; if (utils.isParameterProperty(parameter) && !utils.hasModifier(parameter.modifiers, ts.SyntaxKind.ReadonlyKeyword)) this.addFailureAtNode(parameter, READONLY_FAIL); } } }; return ParameterPropertyWalker; }(Lint.AbstractWalker)); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyUHJvcGVydGllc1J1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJhbWV0ZXJQcm9wZXJ0aWVzUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBaUM7QUFDakMsNkJBQStCO0FBQy9CLCtCQUFpQztBQUVqQyxzQ0FBMkQ7QUFFM0QsSUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUM7QUFDekMsSUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ2pDLElBQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUNuQyxJQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDbkMsSUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUM7QUFFN0MsSUFBTSxnQkFBZ0IsR0FBRyx5REFBeUQsQ0FBQztBQUNuRixJQUFNLFlBQVksR0FBRyxzREFBc0QsQ0FBQztBQUM1RSxJQUFNLGFBQWEsR0FBRyxzREFBc0QsQ0FBQztBQUM3RSxJQUFNLGFBQWEsR0FBRyxxQ0FBcUMsQ0FBQztBQUM1RCxJQUFNLGtCQUFrQixHQUFHLDhDQUE4QyxDQUFDO0FBbUIxRTtJQUEwQixnQ0FBMkI7SUFBckQ7O0lBVUEsQ0FBQztJQVRVLG9CQUFLLEdBQVosVUFBYSxVQUF5QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxD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