eslint-plugin-codelyzer
Version:
42 lines (41 loc) • 1.57 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var create_eslint_rule_1 = require("../util/create-eslint-rule");
var utils_1 = require("../util/utils");
exports.RULE_NAME = 'no-output-on-prefix';
exports.default = create_eslint_rule_1.createESLintRule({
name: exports.RULE_NAME,
meta: {
type: 'suggestion',
docs: {
description: "Name events without the prefix on. See more at https://angular.io/guide/styleguide#dont-prefix-output-properties.",
category: 'Best Practices',
recommended: false
},
schema: [],
messages: {
noOutputOnPrefix: 'In the class "{{className}}", the output property "{{memberName}}" should not be prefixed with on'
}
},
defaultOptions: [],
create: function (context) {
return {
'ClassProperty > Decorator[expression.callee.name="Output"]': function (node) {
var property = node.parent;
var className = utils_1.getClassName(node);
var memberName = utils_1.getClassPropertyName(property);
if (!memberName || !/^on((?![a-z])|(?=$))/.test(memberName)) {
return;
}
context.report({
node: property,
messageId: 'noOutputOnPrefix',
data: {
className: className,
memberName: memberName
}
});
}
};
}
});