@babel/plugin-proposal-optional-chaining
Advanced tools
Comparing version 7.21.4-esm.2 to 7.21.4-esm.3
@@ -1,6 +0,10 @@ | ||
import { declare } from '@babel/helper-plugin-utils'; | ||
import syntaxOptionalChaining from '@babel/plugin-syntax-optional-chaining'; | ||
import { template, types } from '@babel/core'; | ||
import { isTransparentExprWrapper, skipTransparentExprWrappers, skipTransparentExprWrapperNodes } from '@babel/helper-skip-transparent-expression-wrappers'; | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var helperPluginUtils = require('@babel/helper-plugin-utils'); | ||
var syntaxOptionalChaining = require('@babel/plugin-syntax-optional-chaining'); | ||
var core = require('@babel/core'); | ||
var helperSkipTransparentExpressionWrappers = require('@babel/helper-skip-transparent-expression-wrappers'); | ||
function willPathCastToBoolean(path) { | ||
@@ -42,3 +46,3 @@ const maybeWrapped = findOutermostTransparentParent(path); | ||
path.findParent(p => { | ||
if (!isTransparentExprWrapper(p.node)) return true; | ||
if (!helperSkipTransparentExpressionWrappers.isTransparentExprWrapper(p.node)) return true; | ||
maybeWrapped = p; | ||
@@ -51,6 +55,6 @@ }); | ||
ast | ||
} = template.expression; | ||
} = core.template.expression; | ||
function isSimpleMemberExpression(expression) { | ||
expression = skipTransparentExprWrapperNodes(expression); | ||
return types.isIdentifier(expression) || types.isSuper(expression) || types.isMemberExpression(expression) && !expression.computed && isSimpleMemberExpression(expression.object); | ||
expression = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(expression); | ||
return core.types.isIdentifier(expression) || core.types.isSuper(expression) || core.types.isMemberExpression(expression) && !expression.computed && isSimpleMemberExpression(expression.object); | ||
} | ||
@@ -66,3 +70,3 @@ function needsMemoize(path) { | ||
} = optionalPath; | ||
const childPath = skipTransparentExprWrappers(optionalPath.isOptionalMemberExpression() ? optionalPath.get("object") : optionalPath.get("callee")); | ||
const childPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.isOptionalMemberExpression() ? optionalPath.get("object") : optionalPath.get("callee")); | ||
if (node.optional) { | ||
@@ -93,3 +97,3 @@ return !scope.isStatic(childPath.node); | ||
if (scope.path.isPattern() && needsMemoize(optionalPath)) { | ||
path.replaceWith(template.ast`(() => ${path.node})()`); | ||
path.replaceWith(core.template.ast`(() => ${path.node})()`); | ||
return; | ||
@@ -106,6 +110,6 @@ } | ||
optionalPath.node.type = "MemberExpression"; | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("object")); | ||
optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("object")); | ||
} else if (optionalPath.isOptionalCallExpression()) { | ||
optionalPath.node.type = "CallExpression"; | ||
optionalPath = skipTransparentExprWrappers(optionalPath.get("callee")); | ||
optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("callee")); | ||
} | ||
@@ -122,12 +126,12 @@ } | ||
const node = optionals[i]; | ||
const isCall = types.isCallExpression(node); | ||
const isCall = core.types.isCallExpression(node); | ||
const chainWithTypes = isCall ? node.callee : node.object; | ||
const chain = skipTransparentExprWrapperNodes(chainWithTypes); | ||
const chain = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(chainWithTypes); | ||
let ref; | ||
let check; | ||
if (isCall && types.isIdentifier(chain, { | ||
if (isCall && core.types.isIdentifier(chain, { | ||
name: "eval" | ||
})) { | ||
check = ref = chain; | ||
node.callee = types.sequenceExpression([types.numericLiteral(0), ref]); | ||
node.callee = core.types.sequenceExpression([core.types.numericLiteral(0), ref]); | ||
} else if (pureGetters && isCall && isSimpleMemberExpression(chain)) { | ||
@@ -138,3 +142,3 @@ check = ref = node.callee; | ||
if (ref) { | ||
check = types.assignmentExpression("=", types.cloneNode(ref), chainWithTypes); | ||
check = core.types.assignmentExpression("=", core.types.cloneNode(ref), chainWithTypes); | ||
isCall ? node.callee = ref : node.object = ref; | ||
@@ -145,3 +149,3 @@ } else { | ||
} | ||
if (isCall && types.isMemberExpression(chain)) { | ||
if (isCall && core.types.isMemberExpression(chain)) { | ||
if (pureGetters && isSimpleMemberExpression(chain)) { | ||
@@ -154,4 +158,4 @@ node.callee = chainWithTypes; | ||
let context; | ||
if (types.isSuper(object)) { | ||
context = types.thisExpression(); | ||
if (core.types.isSuper(object)) { | ||
context = core.types.thisExpression(); | ||
} else { | ||
@@ -161,3 +165,3 @@ const memoized = scope.maybeGenerateMemoised(object); | ||
context = memoized; | ||
chain.object = types.assignmentExpression("=", memoized, object); | ||
chain.object = core.types.assignmentExpression("=", memoized, object); | ||
} else { | ||
@@ -167,4 +171,4 @@ context = object; | ||
} | ||
node.arguments.unshift(types.cloneNode(context)); | ||
node.callee = types.memberExpression(node.callee, types.identifier("call")); | ||
node.arguments.unshift(core.types.cloneNode(context)); | ||
node.callee = core.types.memberExpression(node.callee, core.types.identifier("call")); | ||
} | ||
@@ -175,3 +179,3 @@ } | ||
var _baseRef; | ||
const object = skipTransparentExprWrapperNodes(replacement.object); | ||
const object = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(replacement.object); | ||
let baseRef; | ||
@@ -181,18 +185,18 @@ if (!pureGetters || !isSimpleMemberExpression(object)) { | ||
if (baseRef) { | ||
replacement.object = types.assignmentExpression("=", baseRef, object); | ||
replacement.object = core.types.assignmentExpression("=", baseRef, object); | ||
} | ||
} | ||
replacement = types.callExpression(types.memberExpression(replacement, types.identifier("bind")), [types.cloneNode((_baseRef = baseRef) != null ? _baseRef : object)]); | ||
replacement = core.types.callExpression(core.types.memberExpression(replacement, core.types.identifier("bind")), [core.types.cloneNode((_baseRef = baseRef) != null ? _baseRef : object)]); | ||
} | ||
if (willReplacementCastToBoolean) { | ||
const nonNullishCheck = noDocumentAll ? ast`${types.cloneNode(check)} != null` : ast` | ||
${types.cloneNode(check)} !== null && ${types.cloneNode(ref)} !== void 0`; | ||
replacementPath.replaceWith(types.logicalExpression("&&", nonNullishCheck, replacement)); | ||
replacementPath = skipTransparentExprWrappers(replacementPath.get("right")); | ||
const nonNullishCheck = noDocumentAll ? ast`${core.types.cloneNode(check)} != null` : ast` | ||
${core.types.cloneNode(check)} !== null && ${core.types.cloneNode(ref)} !== void 0`; | ||
replacementPath.replaceWith(core.types.logicalExpression("&&", nonNullishCheck, replacement)); | ||
replacementPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(replacementPath.get("right")); | ||
} else { | ||
const nullishCheck = noDocumentAll ? ast`${types.cloneNode(check)} == null` : ast` | ||
${types.cloneNode(check)} === null || ${types.cloneNode(ref)} === void 0`; | ||
const nullishCheck = noDocumentAll ? ast`${core.types.cloneNode(check)} == null` : ast` | ||
${core.types.cloneNode(check)} === null || ${core.types.cloneNode(ref)} === void 0`; | ||
const returnValue = isDeleteOperation ? ast`true` : ast`void 0`; | ||
replacementPath.replaceWith(types.conditionalExpression(nullishCheck, returnValue, replacement)); | ||
replacementPath = skipTransparentExprWrappers(replacementPath.get("alternate")); | ||
replacementPath.replaceWith(core.types.conditionalExpression(nullishCheck, returnValue, replacement)); | ||
replacementPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(replacementPath.get("alternate")); | ||
} | ||
@@ -202,3 +206,3 @@ } | ||
var index = declare((api, options) => { | ||
var index = helperPluginUtils.declare((api, options) => { | ||
var _api$assumption, _api$assumption2; | ||
@@ -225,3 +229,4 @@ api.assertVersion(7); | ||
export { index as default, transform }; | ||
exports["default"] = index; | ||
exports.transform = transform; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@babel/plugin-proposal-optional-chaining", | ||
"version": "7.21.4-esm.2", | ||
"version": "7.21.4-esm.3", | ||
"description": "Transform optional chaining operators into a series of nil checks", | ||
@@ -20,4 +20,4 @@ "repository": { | ||
"dependencies": { | ||
"@babel/helper-plugin-utils": "7.21.4-esm.2", | ||
"@babel/helper-skip-transparent-expression-wrappers": "7.21.4-esm.2", | ||
"@babel/helper-plugin-utils": "7.21.4-esm.3", | ||
"@babel/helper-skip-transparent-expression-wrappers": "7.21.4-esm.3", | ||
"@babel/plugin-syntax-optional-chaining": "^7.8.3" | ||
@@ -29,6 +29,6 @@ }, | ||
"devDependencies": { | ||
"@babel/core": "7.21.4-esm.2", | ||
"@babel/helper-plugin-test-runner": "7.21.4-esm.2", | ||
"@babel/plugin-transform-block-scoping": "7.21.4-esm.2", | ||
"@babel/traverse": "7.21.4-esm.2" | ||
"@babel/core": "7.21.4-esm.3", | ||
"@babel/helper-plugin-test-runner": "7.21.4-esm.3", | ||
"@babel/plugin-transform-block-scoping": "7.21.4-esm.3", | ||
"@babel/traverse": "7.21.4-esm.3" | ||
}, | ||
@@ -35,0 +35,0 @@ "engines": { |
Sorry, the diff of this file is not supported yet
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
33407
211
+ Added@babel/helper-plugin-utils@7.21.4-esm.3(transitive)
+ Added@babel/helper-skip-transparent-expression-wrappers@7.21.4-esm.3(transitive)
+ Added@babel/helper-string-parser@7.21.4-esm.3(transitive)
+ Added@babel/helper-validator-identifier@7.21.4-esm.3(transitive)
+ Added@babel/types@7.21.4-esm.3(transitive)
- Removed@babel/helper-plugin-utils@7.21.4-esm.2(transitive)
- Removed@babel/helper-skip-transparent-expression-wrappers@7.21.4-esm.2(transitive)
- Removed@babel/helper-string-parser@7.21.4-esm.2(transitive)
- Removed@babel/helper-validator-identifier@7.21.4-esm.2(transitive)
- Removed@babel/types@7.21.4-esm.2(transitive)
Updated@babel/helper-skip-transparent-expression-wrappers@7.21.4-esm.3