Socket
Socket
Sign inDemoInstall

babel-plugin-transform-react-qa-classes

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-transform-react-qa-classes - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

53

lib/index.js

@@ -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))));
}

2

package.json
{
"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",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc