docs: {
description: "enforce a maximum number of classes per file",
- category: "Best Practices",
recommended: false,
url: "https://eslint.org/docs/rules/max-classes-per-file"
},
schema: [
{
- type: "integer",
- minimum: 1
+ oneOf: [
+ {
+ type: "integer",
+ minimum: 1
+ },
+ {
+ type: "object",
+ properties: {
+ ignoreExpressions: {
+ type: "boolean"
+ },
+ max: {
+ type: "integer",
+ minimum: 1
+ }
+ },
+ additionalProperties: false
+ }
+ ]
}
],
}
},
create(context) {
-
- const maxClasses = context.options[0] || 1;
+ const [option = {}] = context.options;
+ const [ignoreExpressions, max] = typeof option === "number"
+ ? [false, option || 1]
+ : [option.ignoreExpressions, option.max || 1];
let classCount = 0;
classCount = 0;
},
"Program:exit"(node) {
- if (classCount > maxClasses) {
+ if (classCount > max) {
context.report({
node,
messageId: "maximumExceeded",
data: {
classCount,
- max: maxClasses
+ max
}
});
}
},
- "ClassDeclaration, ClassExpression"() {
+ "ClassDeclaration"() {
classCount++;
+ },
+ "ClassExpression"() {
+ if (!ignoreExpressions) {
+ classCount++;
+ }
}
};
}