New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

babel-plugin-transform-react-remove-prop-types

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-transform-react-remove-prop-types - npm Package Compare versions

Comparing version

to
0.4.14

21

lib/index.js

@@ -16,4 +16,6 @@ "use strict";

function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function isPathReactClass(path, globalOptions) {

@@ -66,6 +68,6 @@ var node = path.node;

function _default(_ref) {
var template = _ref.template,
types = _ref.types,
traverse = _ref.traverse;
function _default(api) {
var template = api.template,
types = api.types,
traverse = api.traverse;
return {

@@ -111,3 +113,3 @@ visitor: {

if (typeof pluginOpts !== 'string') {
pluginsState.opts = _extends({}, pluginsState.opts, pluginOpts[1]);
pluginsState.opts = _objectSpread({}, pluginsState.opts, pluginOpts[1]);
}

@@ -121,6 +123,3 @@

return plugin({
template: template,
types: types
}).visitor;
return plugin(api).visitor;
});

@@ -239,3 +238,3 @@ traverse(programPath.parent, traverse.visitors.merge(pluginsVisitors), programPath.scope, pluginsState, programPath.parentPath);

} else {
throw new Error('react-remove-prop-types: removeImport and mode=remove can not be used at the same time.');
throw new Error('transform-react-remove-prop-type: removeImport = true and mode != "remove" can not be used at the same time.');
}

@@ -242,0 +241,0 @@ }

@@ -7,4 +7,5 @@ "use strict";

exports.default = isStatelessComponent;
// weak
var traversed = Symbol('traversed');
// weak
function isJSXElementOrReactCreateElement(path) {

@@ -16,3 +17,3 @@ var visited = false;

if (callee.matchesPattern('React.createElement') || callee.matchesPattern('React.cloneElement')) {
if (callee.matchesPattern('React.createElement') || callee.matchesPattern('React.cloneElement') || callee.node.name === 'cloneElement') {
visited = true;

@@ -29,2 +30,4 @@ }

function isReturningJSXElement(path) {
var iteration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
// Early exit for ArrowFunctionExpressions, there is no ReturnStatement node.

@@ -35,2 +38,6 @@ if (path.node.init && path.node.init.body && isJSXElementOrReactCreateElement(path)) {

if (iteration > 20) {
throw new Error('transform-react-remove-prop-type: infinite loop detected.');
}
var visited = false;

@@ -61,5 +68,12 @@ path.traverse({

return;
} // Prevents infinite traverse loop.
if (binding.path[traversed]) {
return;
}
if (isReturningJSXElement(binding.path)) {
binding.path[traversed] = true;
if (isReturningJSXElement(binding.path, iteration + 1)) {
visited = true;

@@ -66,0 +80,0 @@ }

{
"name": "babel-plugin-transform-react-remove-prop-types",
"version": "0.4.13",
"version": "0.4.14",
"description": "Remove unnecessary React propTypes from the production build",

@@ -34,13 +34,13 @@ "main": "lib/index.js",

"devDependencies": {
"@babel/cli": "^7.0.0-beta.35",
"@babel/core": "^7.0.0-beta.35",
"@babel/generator": "^7.0.0-beta.35",
"@babel/plugin-external-helpers": "^7.0.0-beta.35",
"@babel/plugin-proposal-class-properties": "^7.0.0-beta.35",
"@babel/plugin-transform-flow-strip-types": "^7.0.0-beta.35",
"@babel/preset-env": "^7.0.0-beta.35",
"@babel/preset-flow": "^7.0.0-beta.35",
"@babel/preset-react": "^7.0.0-beta.35",
"@babel/preset-stage-1": "^7.0.0-beta.35",
"@babel/register": "^7.0.0-beta.35",
"@babel/cli": "7.0.0-beta.42",
"@babel/core": "7.0.0-beta.42",
"@babel/generator": "7.0.0-beta.42",
"@babel/plugin-external-helpers": "7.0.0-beta.42",
"@babel/plugin-proposal-class-properties": "7.0.0-beta.42",
"@babel/plugin-transform-flow-strip-types": "7.0.0-beta.42",
"@babel/preset-env": "7.0.0-beta.42",
"@babel/preset-flow": "7.0.0-beta.42",
"@babel/preset-react": "7.0.0-beta.42",
"@babel/preset-stage-1": "7.0.0-beta.42",
"@babel/register": "7.0.0-beta.42",
"babel-eslint": "^8.0.2",

@@ -47,0 +47,0 @@ "babel-plugin-flow-react-proptypes": "^6.1.0",

@@ -56,3 +56,5 @@ // @flow weak

export default function({ template, types, traverse }) {
export default function(api) {
const { template, types, traverse } = api
return {

@@ -117,3 +119,3 @@ visitor: {

return plugin({ template, types }).visitor
return plugin(api).visitor
})

@@ -230,3 +232,3 @@

throw new Error(
'react-remove-prop-types: removeImport and mode=remove can not be used at the same time.'
'transform-react-remove-prop-type: removeImport = true and mode != "remove" can not be used at the same time.'
)

@@ -233,0 +235,0 @@ }

// @flow weak
const traversed = Symbol('traversed')
function isJSXElementOrReactCreateElement(path) {

@@ -12,3 +14,4 @@ let visited = false

callee.matchesPattern('React.createElement') ||
callee.matchesPattern('React.cloneElement')
callee.matchesPattern('React.cloneElement') ||
callee.node.name === 'cloneElement'
) {

@@ -26,3 +29,3 @@ visited = true

function isReturningJSXElement(path) {
function isReturningJSXElement(path, iteration = 0) {
// Early exit for ArrowFunctionExpressions, there is no ReturnStatement node.

@@ -33,2 +36,6 @@ if (path.node.init && path.node.init.body && isJSXElementOrReactCreateElement(path)) {

if (iteration > 20) {
throw new Error('transform-react-remove-prop-type: infinite loop detected.')
}
let visited = false

@@ -63,3 +70,10 @@

if (isReturningJSXElement(binding.path)) {
// Prevents infinite traverse loop.
if (binding.path[traversed]) {
return
}
binding.path[traversed] = true
if (isReturningJSXElement(binding.path, iteration + 1)) {
visited = true

@@ -66,0 +80,0 @@ }