eslint-plugin-codelyzer
Version:
62 lines (61 loc) • 2.22 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var create_eslint_rule_1 = require("../util/create-eslint-rule");
var selectors_1 = require("../util/selectors");
var utils_1 = require("../util/utils");
exports.RULE_NAME = 'component-class-suffix';
var STYLE_GUIDE_LINK = 'https://angular.io/styleguide#style-02-03';
exports.default = create_eslint_rule_1.createESLintRule({
name: exports.RULE_NAME,
meta: {
type: 'suggestion',
docs: {
description: "Classes decorated with @Component must have suffix \"Component\" (or custom) in their name. See more at " + STYLE_GUIDE_LINK + ".",
category: 'Best Practices',
recommended: false
},
schema: [
{
type: 'object',
properties: {
suffixes: {
type: 'array',
items: {
type: 'string'
}
}
},
additionalProperties: false
}
],
messages: {
componentClassSuffix: "The name of the class {{className}} should end with the suffix {{suffixes}} (" + STYLE_GUIDE_LINK + ")"
}
},
defaultOptions: [
{
suffixes: ['Component']
}
],
create: function (context, _a) {
var _b;
var options = _a[0];
var suffixes = options.suffixes;
return _b = {},
_b[selectors_1.COMPONENT_CLASS_DECORATOR] = function (node) {
var classParent = node.parent;
var className = utils_1.getClassName(classParent);
if (!className || !suffixes.some(function (suffix) { return className.endsWith(suffix); })) {
context.report({
node: classParent.id ? classParent.id : classParent,
messageId: 'componentClassSuffix',
data: {
className: className,
suffixes: suffixes
}
});
}
},
_b;
}
});