diff options
Diffstat (limited to 'node_modules/tslint/lib/rules/maxClassesPerFileRule.js')
-rw-r--r-- | node_modules/tslint/lib/rules/maxClassesPerFileRule.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/node_modules/tslint/lib/rules/maxClassesPerFileRule.js b/node_modules/tslint/lib/rules/maxClassesPerFileRule.js index c5921368b..74092147c 100644 --- a/node_modules/tslint/lib/rules/maxClassesPerFileRule.js +++ b/node_modules/tslint/lib/rules/maxClassesPerFileRule.js @@ -20,6 +20,7 @@ var tslib_1 = require("tslib"); var tsutils_1 = require("tsutils"); var ts = require("typescript"); var Lint = require("../index"); +var OPTION_EXCLUDE_CLASS_EXPRESSIONS = "exclude-class-expressions"; var Rule = /** @class */ (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { @@ -33,14 +34,17 @@ var Rule = /** @class */ (function (_super) { Rule.prototype.apply = function (sourceFile) { var argument = this.ruleArguments[0]; var maxClasses = isNaN(argument) || argument > 0 ? argument : 1; - return this.applyWithFunction(sourceFile, walk, { maxClasses: maxClasses }); + return this.applyWithFunction(sourceFile, walk, { + excludeClassExpressions: this.ruleArguments.indexOf(OPTION_EXCLUDE_CLASS_EXPRESSIONS) !== -1, + maxClasses: maxClasses, + }); }; /* tslint:disable:object-literal-sort-keys */ Rule.metadata = { ruleName: "max-classes-per-file", description: (_a = ["\n A file may not contain more than the specified number of classes"], _a.raw = ["\n A file may not contain more than the specified number of classes"], Lint.Utils.dedent(_a)), rationale: (_b = ["\n Ensures that files have a single responsibility so that that classes each exist in their own files"], _b.raw = ["\n Ensures that files have a single responsibility so that that classes each exist in their own files"], Lint.Utils.dedent(_b)), - optionsDescription: (_c = ["\n The one required argument is an integer indicating the maximum number of classes that can appear in a file."], _c.raw = ["\n The one required argument is an integer indicating the maximum number of classes that can appear in a file."], Lint.Utils.dedent(_c)), + optionsDescription: (_c = ["\n The one required argument is an integer indicating the maximum number of classes that can appear in a\n file. An optional argument `\"exclude-class-expressions\"` can be provided to exclude class expressions\n from the overall class count."], _c.raw = ["\n The one required argument is an integer indicating the maximum number of classes that can appear in a\n file. An optional argument \\`\"exclude-class-expressions\"\\` can be provided to exclude class expressions\n from the overall class count."], Lint.Utils.dedent(_c)), options: { type: "array", items: [ @@ -48,12 +52,16 @@ var Rule = /** @class */ (function (_super) { type: "number", minimum: 1, }, + { + type: "string", + enum: [OPTION_EXCLUDE_CLASS_EXPRESSIONS], + }, ], additionalItems: false, minLength: 1, maxLength: 2, }, - optionExamples: [[true, 1], [true, 5]], + optionExamples: [[true, 1], [true, 5, OPTION_EXCLUDE_CLASS_EXPRESSIONS]], type: "maintainability", typescriptOnly: false, }; @@ -61,10 +69,10 @@ var Rule = /** @class */ (function (_super) { }(Lint.Rules.AbstractRule)); exports.Rule = Rule; function walk(ctx) { - var sourceFile = ctx.sourceFile, maxClasses = ctx.options.maxClasses; + var sourceFile = ctx.sourceFile, _a = ctx.options, maxClasses = _a.maxClasses, excludeClassExpressions = _a.excludeClassExpressions; var classes = 0; return ts.forEachChild(sourceFile, function cb(node) { - if (tsutils_1.isClassLikeDeclaration(node)) { + if (tsutils_1.isClassDeclaration(node) || (!excludeClassExpressions && tsutils_1.isClassExpression(node))) { classes++; if (classes > maxClasses) { ctx.addFailureAtNode(node, Rule.FAILURE_STRING(maxClasses)); |