babel-plugin-transform-react-qa-classes
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -12,2 +12,10 @@ 'use strict'; | ||
visitor: { | ||
FunctionDeclaration: function FunctionDeclaration(path, state) { | ||
if (!path.node.id || !path.node.id.name) return; | ||
var options = (0, _options2.default)(state); | ||
var componentName = path.node.id.name; | ||
functionBodyPushAttributes(t, path, options, componentName); | ||
}, | ||
ArrowFunctionExpression: function ArrowFunctionExpression(path, state) { | ||
@@ -18,11 +26,3 @@ var options = (0, _options2.default)(state); | ||
var functionBody = path.get('body').get('body'); | ||
var returnStatement = functionBody.find(function (c) { | ||
return c.type === 'ReturnStatement'; | ||
}); | ||
var arg = returnStatement.get('argument'); | ||
if (!arg.isJSXElement()) return; | ||
var openingElement = arg.get('openingElement'); | ||
openingElement.node.attributes.push(t.jSXAttribute(t.jSXIdentifier(options.attribute), t.stringLiteral(options.format(componentName)))); | ||
functionBodyPushAttributes(t, path, options, componentName); | ||
}, | ||
@@ -49,2 +49,4 @@ ClassDeclaration: function ClassDeclaration(path, state) { | ||
var openingElement = arg.get('openingElement'); | ||
if (isReactFragment(openingElement)) return; | ||
openingElement.node.attributes.push(t.jSXAttribute(t.jSXIdentifier(options.attribute), t.stringLiteral(options.format(name.node && name.node.name)))); | ||
@@ -62,2 +64,33 @@ } | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function isReactFragment(openingElement) { | ||
return openingElement.node.name.name === 'Fragment' || openingElement.node.name.type === 'JSXMemberExpression' && openingElement.node.name.object.name === 'React' && openingElement.node.name.property.name === 'Fragment'; | ||
} | ||
function functionBodyPushAttributes(t, path, options, componentName) { | ||
var openingElement = null; | ||
var functionBody = path.get('body').get('body'); | ||
if (functionBody.parent && functionBody.parent.type === 'JSXElement') { | ||
var jsxElement = functionBody.find(function (c) { | ||
return c.type === 'JSXElement'; | ||
}); | ||
if (!jsxElement) return; | ||
openingElement = jsxElement.get('openingElement'); | ||
} else { | ||
var returnStatement = functionBody.find(function (c) { | ||
return c.type === 'ReturnStatement'; | ||
}); | ||
if (!returnStatement) return; | ||
var arg = returnStatement.get('argument'); | ||
if (!arg.isJSXElement()) return; | ||
openingElement = arg.get('openingElement'); | ||
} | ||
if (!openingElement) return; | ||
if (isReactFragment(openingElement)) return; | ||
openingElement.node.attributes.push(t.jSXAttribute(t.jSXIdentifier(options.attribute), t.stringLiteral(options.format(componentName)))); | ||
} |
{ | ||
"name": "babel-plugin-transform-react-qa-classes", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "description": "Add component's name in `data-qa` attributes to React Components Edit", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10928
108