@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining
Advanced tools
Comparing version
@@ -1,12 +0,8 @@ | ||
'use strict'; | ||
import { declare } from '@babel/helper-plugin-utils'; | ||
import { transform } from '@babel/plugin-transform-optional-chaining'; | ||
import { skipTransparentExprWrappers } from '@babel/helper-skip-transparent-expression-wrappers'; | ||
import { types } from '@babel/core'; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var helperPluginUtils = require('@babel/helper-plugin-utils'); | ||
var pluginTransformOptionalChaining = require('@babel/plugin-transform-optional-chaining'); | ||
var helperSkipTransparentExpressionWrappers = require('@babel/helper-skip-transparent-expression-wrappers'); | ||
var core = require('@babel/core'); | ||
function matchAffectedArguments(argumentNodes) { | ||
const spreadIndex = argumentNodes.findIndex(node => core.types.isSpreadElement(node)); | ||
const spreadIndex = argumentNodes.findIndex(node => types.isSpreadElement(node)); | ||
return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1; | ||
@@ -20,6 +16,6 @@ } | ||
chains.push(optionalPath.node); | ||
optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("object")); | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("object")); | ||
} else if (optionalPath.isOptionalCallExpression()) { | ||
chains.push(optionalPath.node); | ||
optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("callee")); | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("callee")); | ||
} else { | ||
@@ -31,3 +27,3 @@ break; | ||
const node = chains[i]; | ||
if (core.types.isOptionalCallExpression(node) && matchAffectedArguments(node.arguments)) { | ||
if (types.isOptionalCallExpression(node) && matchAffectedArguments(node.arguments)) { | ||
if (node.optional) { | ||
@@ -37,3 +33,3 @@ return true; | ||
const callee = chains[i + 1]; | ||
if (core.types.isOptionalMemberExpression(callee, { | ||
if (types.isOptionalMemberExpression(callee, { | ||
optional: true | ||
@@ -48,7 +44,6 @@ })) { | ||
var index = helperPluginUtils.declare(api => { | ||
var _api$assumption, _api$assumption2; | ||
var index = declare(api => { | ||
api.assertVersion(7); | ||
const noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : false; | ||
const pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false; | ||
const noDocumentAll = api.assumption("noDocumentAll") ?? false; | ||
const pureGetters = api.assumption("pureGetters") ?? false; | ||
return { | ||
@@ -59,3 +54,3 @@ name: "bugfix-v8-spread-parameters-in-optional-chaining", | ||
if (shouldTransform(path)) { | ||
pluginTransformOptionalChaining.transform(path, { | ||
transform(path, { | ||
noDocumentAll, | ||
@@ -70,3 +65,3 @@ pureGetters | ||
exports["default"] = index; | ||
export { index as default }; | ||
//# sourceMappingURL=index.js.map |
@@ -1,14 +0,8 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.shouldTransform = shouldTransform; | ||
var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers"); | ||
var _core = require("@babel/core"); | ||
import { skipTransparentExprWrappers } from "@babel/helper-skip-transparent-expression-wrappers"; | ||
import { types as t } from "@babel/core"; | ||
function matchAffectedArguments(argumentNodes) { | ||
const spreadIndex = argumentNodes.findIndex(node => _core.types.isSpreadElement(node)); | ||
const spreadIndex = argumentNodes.findIndex(node => t.isSpreadElement(node)); | ||
return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1; | ||
} | ||
function shouldTransform(path) { | ||
export function shouldTransform(path) { | ||
let optionalPath = path; | ||
@@ -19,6 +13,6 @@ const chains = []; | ||
chains.push(optionalPath.node); | ||
optionalPath = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(optionalPath.get("object")); | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("object")); | ||
} else if (optionalPath.isOptionalCallExpression()) { | ||
chains.push(optionalPath.node); | ||
optionalPath = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(optionalPath.get("callee")); | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("callee")); | ||
} else { | ||
@@ -30,3 +24,3 @@ break; | ||
const node = chains[i]; | ||
if (_core.types.isOptionalCallExpression(node) && matchAffectedArguments(node.arguments)) { | ||
if (t.isOptionalCallExpression(node) && matchAffectedArguments(node.arguments)) { | ||
if (node.optional) { | ||
@@ -36,3 +30,3 @@ return true; | ||
const callee = chains[i + 1]; | ||
if (_core.types.isOptionalMemberExpression(callee, { | ||
if (t.isOptionalMemberExpression(callee, { | ||
optional: true | ||
@@ -39,0 +33,0 @@ })) { |
{ | ||
"name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", | ||
"version": "7.22.5", | ||
"version": "8.0.0-alpha.0", | ||
"description": "Transform optional chaining operators to workaround https://crbug.com/v8/11558", | ||
@@ -25,19 +25,19 @@ "repository": { | ||
"dependencies": { | ||
"@babel/helper-plugin-utils": "^7.22.5", | ||
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", | ||
"@babel/plugin-transform-optional-chaining": "^7.22.5" | ||
"@babel/helper-plugin-utils": "^8.0.0-alpha.0", | ||
"@babel/helper-skip-transparent-expression-wrappers": "^8.0.0-alpha.0", | ||
"@babel/plugin-transform-optional-chaining": "^8.0.0-alpha.0" | ||
}, | ||
"peerDependencies": { | ||
"@babel/core": "^7.13.0" | ||
"@babel/core": "^8.0.0-alpha.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.22.5", | ||
"@babel/helper-plugin-test-runner": "^7.22.5", | ||
"@babel/traverse": "^7.22.5" | ||
"@babel/core": "^8.0.0-alpha.0", | ||
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.0", | ||
"@babel/traverse": "^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" | ||
"type": "module" | ||
} |
@@ -5,3 +5,3 @@ # @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining | ||
See our website [@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining](https://babeljs.io/docs/en/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining) for more information. | ||
See our website [@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining](https://babeljs.io/docs/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining) for more information. | ||
@@ -8,0 +8,0 @@ ## Install |
Sorry, the diff of this file is not supported yet
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
Yes
NaN15033
-4.92%95
-7.77%1
Infinity%+ Added
+ Added
+ 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
- Removed
- Removed
Updated
Updated