UNPKG

eslint-plugin-codelyzer

Version:

48 lines (47 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var angular_1 = require("../../angular"); var ngWalkerFactoryUtils_1 = require("../../angular/ngWalkerFactoryUtils"); var create_eslint_rule_1 = require("../util/create-eslint-rule"); var utils_1 = require("../../util/utils"); exports.RULE_NAME = 'use-component-selector'; exports.default = create_eslint_rule_1.createESLintRule({ name: exports.RULE_NAME, meta: { type: 'suggestion', docs: { description: 'Component selector must be declared', category: 'Best Practices', recommended: false }, schema: [], messages: { useComponentSelector: "The selector of the component '{{className}}' is mandatory" } }, defaultOptions: [], create: function (context) { var nodeMaps = create_eslint_rule_1.getNodeMaps(context); var metadataReader = ngWalkerFactoryUtils_1.ngWalkerFactoryUtils.defaultMetadataReader(); return { ClassDeclaration: function (node) { var tsNode = nodeMaps.esTreeNodeToTSNodeMap.get(node); if (utils_1.getClassName(tsNode)) { var metadata = metadataReader.read(tsNode); if (metadata instanceof angular_1.ComponentMetadata) { var metadataDecorator = metadata.decorator, controllerName = metadata.controller.name, metadataSelector = metadata.selector; if (metadataSelector || !controllerName) return; context.report({ node: nodeMaps.tsNodeToESTreeNodeMap.get(metadataDecorator), messageId: 'useComponentSelector', data: { className: controllerName.text } }); } } } }; } });