Socket
Socket
Sign inDemoInstall

@babel/plugin-proposal-optional-chaining

Package Overview
Dependencies
2
Maintainers
6
Versions
70
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 7.0.0-beta.42 to 7.0.0-beta.43

104

lib/index.js
"use strict";
exports.__esModule = true;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _helperPluginUtils = require("@babel/helper-plugin-utils");
function _helperPluginUtils() {
const data = require("@babel/helper-plugin-utils");
var _pluginSyntaxOptionalChaining = _interopRequireDefault(require("@babel/plugin-syntax-optional-chaining"));
_helperPluginUtils = function () {
return data;
};
var _core = require("@babel/core");
return data;
}
function _pluginSyntaxOptionalChaining() {
const data = _interopRequireDefault(require("@babel/plugin-syntax-optional-chaining"));
_pluginSyntaxOptionalChaining = function () {
return data;
};
return data;
}
function _core() {
const data = require("@babel/core");
_core = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = (0, _helperPluginUtils.declare)(function (api, options) {
var _default = (0, _helperPluginUtils().declare)((api, options) => {
api.assertVersion(7);
var _options$loose = options.loose,
loose = _options$loose === void 0 ? false : _options$loose;
const {
loose = false
} = options;
function optional(path, replacementPath) {
var scope = path.scope;
var optionals = [];
var objectPath = path;
const {
scope
} = path;
const optionals = [];
let objectPath = path;
while (objectPath.isOptionalMemberExpression() || objectPath.isOptionalCallExpression()) {
var _objectPath = objectPath,
node = _objectPath.node;
const {
node
} = objectPath;

@@ -41,12 +71,12 @@ if (node.optional) {

for (var i = optionals.length - 1; i >= 0; i--) {
var _node = optionals[i];
_node.optional = false;
for (let i = optionals.length - 1; i >= 0; i--) {
const node = optionals[i];
node.optional = false;
var isCall = _core.types.isCallExpression(_node);
const isCall = _core().types.isCallExpression(node);
var replaceKey = isCall ? "callee" : "object";
var chain = _node[replaceKey];
var ref = void 0;
var check = void 0;
const replaceKey = isCall ? "callee" : "object";
const chain = node[replaceKey];
let ref;
let check;

@@ -59,4 +89,4 @@ if (loose && isCall) {

if (ref) {
check = _core.types.assignmentExpression("=", _core.types.cloneNode(ref), chain);
_node[replaceKey] = ref;
check = _core().types.assignmentExpression("=", _core().types.cloneNode(ref), chain);
node[replaceKey] = ref;
} else {

@@ -67,11 +97,13 @@ check = ref = chain;

if (isCall && _core.types.isMemberExpression(chain)) {
if (isCall && _core().types.isMemberExpression(chain)) {
if (loose) {
_node.callee = chain;
node.callee = chain;
} else {
var object = chain.object;
var context = scope.maybeGenerateMemoised(object);
const {
object
} = chain;
let context = scope.maybeGenerateMemoised(object);
if (context) {
chain.object = _core.types.assignmentExpression("=", context, object);
chain.object = _core().types.assignmentExpression("=", context, object);
} else {

@@ -81,9 +113,8 @@ context = object;

_node.arguments.unshift(_core.types.cloneNode(context));
_node.callee = _core.types.memberExpression(_node.callee, _core.types.identifier("call"));
node.arguments.unshift(_core().types.cloneNode(context));
node.callee = _core().types.memberExpression(node.callee, _core().types.identifier("call"));
}
}
replacementPath.replaceWith(_core.types.conditionalExpression(loose ? _core.types.binaryExpression("==", _core.types.cloneNode(check), _core.types.nullLiteral()) : _core.types.logicalExpression("||", _core.types.binaryExpression("===", _core.types.cloneNode(check), _core.types.nullLiteral()), _core.types.binaryExpression("===", _core.types.cloneNode(ref), scope.buildUndefinedNode())), scope.buildUndefinedNode(), replacementPath.node));
replacementPath.replaceWith(_core().types.conditionalExpression(loose ? _core().types.binaryExpression("==", _core().types.cloneNode(check), _core().types.nullLiteral()) : _core().types.logicalExpression("||", _core().types.binaryExpression("===", _core().types.cloneNode(check), _core().types.nullLiteral()), _core().types.binaryExpression("===", _core().types.cloneNode(ref), scope.buildUndefinedNode())), scope.buildUndefinedNode(), replacementPath.node));
replacementPath = replacementPath.get("alternate");

@@ -94,4 +125,6 @@ }

function findReplacementPath(path) {
return path.find(function (path) {
var parentPath = path.parentPath;
return path.find(path => {
const {
parentPath
} = path;

@@ -117,5 +150,5 @@ if (path.key == "object" && parentPath.isOptionalMemberExpression()) {

return {
inherits: _pluginSyntaxOptionalChaining.default,
inherits: _pluginSyntaxOptionalChaining().default,
visitor: {
"OptionalCallExpression|OptionalMemberExpression": function OptionalCallExpressionOptionalMemberExpression(path) {
"OptionalCallExpression|OptionalMemberExpression"(path) {
if (!path.node.optional) {

@@ -127,2 +160,3 @@ return;

}
}

@@ -129,0 +163,0 @@ };

{
"name": "@babel/plugin-proposal-optional-chaining",
"version": "7.0.0-beta.42",
"version": "7.0.0-beta.43",
"description": "Transform optional chaining operators into a series of nil checks",

@@ -12,12 +12,12 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-proposal-optional-chaining",

"dependencies": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
"@babel/plugin-syntax-optional-chaining": "7.0.0-beta.42"
"@babel/helper-plugin-utils": "7.0.0-beta.43",
"@babel/plugin-syntax-optional-chaining": "7.0.0-beta.43"
},
"peerDependencies": {
"@babel/core": "7.0.0-beta.42"
"@babel/core": "7.0.0-beta.43"
},
"devDependencies": {
"@babel/core": "7.0.0-beta.42",
"@babel/helper-plugin-test-runner": "7.0.0-beta.42"
"@babel/core": "7.0.0-beta.43",
"@babel/helper-plugin-test-runner": "7.0.0-beta.43"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc