Socket
Socket
Sign inDemoInstall

@babel/plugin-proposal-optional-chaining

Package Overview
Dependencies
Maintainers
4
Versions
70
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/plugin-proposal-optional-chaining - npm Package Compare versions

Comparing version 7.21.4-esm.2 to 7.21.4-esm.3

77

lib/index.js

@@ -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

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