UNPKG

eslint-plugin-codelyzer

Version:

62 lines (61 loc) 2.22 kB
"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; } });