eslint-plugin-codelyzer
Version:
48 lines (47 loc) • 2.01 kB
JavaScript
"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
}
});
}
}
}
};
}
});