@builder.io/eslint-plugin-mitosis
Version:
A Mitosis plugin containing rules that help you write valid and idiomatic Mitosis code
51 lines (50 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var types = require("@babel/types");
var isMitosisPath_1 = require("../helpers/isMitosisPath");
var regex = new RegExp('^on[A-Z]');
// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------
var rule = {
meta: {
type: 'problem',
docs: {
description: 'disallow using regular functions as callbacks.',
recommended: true,
},
fixable: 'code',
},
create: function (context) {
// variables should be defined here
var filename = context.getFilename();
if (!(0, isMitosisPath_1.default)(filename))
return {};
// ----------------------------------------------------------------------
// Helpers
// ----------------------------------------------------------------------
// any helper functions should go here or else delete this section
// ----------------------------------------------------------------------
// Public
// ----------------------------------------------------------------------
//
var listener = {
JSXAttribute: function (node) {
var name = node.name.name, value = node.value;
if (typeof name !== 'string' || !regex.test(name))
return;
if (types.isArrowFunctionExpression(value.expression))
return;
context.report({
node: value.expression,
message: 'Callback value must be an arrow function expression',
fix: function (fixer) {
return fixer.replaceTextRange(node.value.expression.range, '(event)=>{}');
},
});
},
};
return listener;
},
};
exports.default = rule;