eslint-plugin-playlyfe
Version:
custom eslint stuff for playlyfe
55 lines (40 loc) • 1.48 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var icu = _interopRequireWildcard(require("./utils/icu"));
var astUtils = _interopRequireWildcard(require("./utils/astUtils"));
var _reactIntlVisitor = _interopRequireDefault(require("./utils/reactIntlVisitor"));
const Rule = {
meta: {
docs: {
description: 'enforces message args values to be defined with the message'
}
},
create(context) {
return (0, _reactIntlVisitor.default)({
defineMessages(node) {
node.properties.forEach(property => {
if (property.value.type !== 'ObjectExpression') {
return;
}
const defaultMessageNode = astUtils.findObjectExpressionProperty(property.value, 'defaultMessage');
if (!defaultMessageNode) {
return;
}
const messageNode = astUtils.getStringNodeValue(defaultMessageNode.value);
if (!messageNode) {
return;
}
const message = icu.getMessageArguments(messageNode.value);
if (message.args.length > 0) {
context.report({
node: property.key,
message: 'Use FormattedMessage/formatMessage instead of defineMessages for intl message containing args.'
});
}
});
}
});
}
};
module.exports = Rule;