eslint-plugin-codelyzer
Version:
49 lines (48 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var ts = require("typescript");
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-view-encapsulation';
var NONE = 'None';
exports.default = create_eslint_rule_1.createESLintRule({
name: exports.RULE_NAME,
meta: {
type: 'suggestion',
docs: {
description: "Disallows using ViewEncapsulation." + NONE,
category: 'Best Practices',
recommended: false
},
schema: [],
messages: {
useComponentViewEncapsulation: "Using ViewEncapsulation." + NONE + " makes your styles global, which may have an unintended effect"
}
},
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 encapsulationExpression = utils_1.getDecoratorPropertyInitializer(metadata.decorator, 'encapsulation');
if (!encapsulationExpression ||
(ts.isPropertyAccessExpression(encapsulationExpression) && encapsulationExpression.name.text !== NONE)) {
return;
}
context.report({
node: nodeMaps.tsNodeToESTreeNodeMap.get(encapsulationExpression),
messageId: 'useComponentViewEncapsulation'
});
}
}
}
};
}
});