@babel/plugin-transform-react-constant-elements
Advanced tools
Comparing version
@@ -1,10 +0,5 @@ | ||
"use strict"; | ||
import { declare } from '@babel/helper-plugin-utils'; | ||
import { types, template } from '@babel/core'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _helperPluginUtils = require("@babel/helper-plugin-utils"); | ||
var _core = require("@babel/core"); | ||
var _default = (0, _helperPluginUtils.declare)((api, options) => { | ||
var index = declare((api, options) => { | ||
api.assertVersion(7); | ||
@@ -19,9 +14,9 @@ const { | ||
function declares(node, scope) { | ||
if (_core.types.isJSXIdentifier(node, { | ||
if (types.isJSXIdentifier(node, { | ||
name: "this" | ||
}) || _core.types.isJSXIdentifier(node, { | ||
}) || types.isJSXIdentifier(node, { | ||
name: "arguments" | ||
}) || _core.types.isJSXIdentifier(node, { | ||
}) || types.isJSXIdentifier(node, { | ||
name: "super" | ||
}) || _core.types.isJSXIdentifier(node, { | ||
}) || types.isJSXIdentifier(node, { | ||
name: "new" | ||
@@ -67,3 +62,2 @@ })) { | ||
enter(path, state) { | ||
var _expressionResult$deo; | ||
const stop = () => { | ||
@@ -116,3 +110,3 @@ state.isImmutable = false; | ||
} | ||
} else if ((_expressionResult$deo = expressionResult.deopt) != null && _expressionResult$deo.isIdentifier()) { | ||
} else if (expressionResult.deopt?.isIdentifier()) { | ||
return; | ||
@@ -128,3 +122,2 @@ } | ||
JSXElement(path) { | ||
var _jsxScope; | ||
if (HOISTED.has(path.node)) return; | ||
@@ -135,3 +128,3 @@ const name = path.node.openingElement.name; | ||
let lastSegment = name; | ||
while (_core.types.isJSXMemberExpression(lastSegment)) { | ||
while (types.isJSXMemberExpression(lastSegment)) { | ||
lastSegment = lastSegment.property; | ||
@@ -148,3 +141,3 @@ } | ||
} | ||
(_jsxScope = jsxScope) != null ? _jsxScope : jsxScope = path.scope; | ||
jsxScope ??= path.scope; | ||
HOISTED.set(path.node, jsxScope); | ||
@@ -172,10 +165,10 @@ const visitorState = { | ||
targetScope.push({ | ||
id: _core.types.identifier(id) | ||
id: types.identifier(id) | ||
}); | ||
HOISTED.set(path.node, targetScope); | ||
let replacement = _core.template.expression.ast` | ||
${_core.types.identifier(id)} || (${_core.types.identifier(id)} = ${path.node}) | ||
let replacement = template.expression.ast` | ||
${types.identifier(id)} || (${types.identifier(id)} = ${path.node}) | ||
`; | ||
if (path.parentPath.isJSXElement() || path.parentPath.isJSXAttribute()) { | ||
replacement = _core.types.jsxExpressionContainer(replacement); | ||
replacement = types.jsxExpressionContainer(replacement); | ||
} | ||
@@ -187,4 +180,4 @@ path.replaceWith(replacement); | ||
}); | ||
exports.default = _default; | ||
export { index as default }; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@babel/plugin-transform-react-constant-elements", | ||
"version": "7.22.5", | ||
"version": "8.0.0-alpha.0", | ||
"description": "Treat React JSX elements as value types and hoist them to the highest scope", | ||
@@ -20,16 +20,20 @@ "repository": { | ||
"dependencies": { | ||
"@babel/helper-plugin-utils": "^7.22.5" | ||
"@babel/helper-plugin-utils": "^8.0.0-alpha.0" | ||
}, | ||
"peerDependencies": { | ||
"@babel/core": "^7.0.0-0" | ||
"@babel/core": "^8.0.0-alpha.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.22.5", | ||
"@babel/helper-plugin-test-runner": "^7.22.5" | ||
"@babel/core": "^8.0.0-alpha.0", | ||
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.0" | ||
}, | ||
"engines": { | ||
"node": ">=6.9.0" | ||
"node": "^16.20.0 || ^18.16.0 || >=20.0.0" | ||
}, | ||
"author": "The Babel Team (https://babel.dev/team)", | ||
"type": "commonjs" | ||
"exports": { | ||
".": "./lib/index.js", | ||
"./package.json": "./package.json" | ||
}, | ||
"type": "module" | ||
} |
@@ -5,3 +5,3 @@ # @babel/plugin-transform-react-constant-elements | ||
See our website [@babel/plugin-transform-react-constant-elements](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements) for more information. | ||
See our website [@babel/plugin-transform-react-constant-elements](https://babeljs.io/docs/babel-plugin-transform-react-constant-elements) for more information. | ||
@@ -8,0 +8,0 @@ ## Install |
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
23897
1.43%Yes
NaN173
-3.89%1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed