UNPKG

eslint-plugin-codelyzer

Version:

49 lines (48 loc) 2.15 kB
"use strict"; 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' }); } } } }; } });