Socket
Socket
Sign inDemoInstall

@babel/plugin-transform-object-rest-spread

Package Overview
Dependencies
Maintainers
4
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/plugin-transform-object-rest-spread - npm Package Compare versions

Comparing version 7.22.5 to 8.0.0-alpha.0

153

lib/index.js

@@ -1,16 +0,8 @@

'use strict';
import { declare } from '@babel/helper-plugin-utils';
import syntaxObjectRestSpread from '@babel/plugin-syntax-object-rest-spread';
import { types } from '@babel/core';
import { convertFunctionParams } from '@babel/plugin-transform-parameters';
import { isRequired } from '@babel/helper-compilation-targets';
import compatData from '@babel/compat-data/corejs2-built-ins';
Object.defineProperty(exports, '__esModule', { value: true });
var helperPluginUtils = require('@babel/helper-plugin-utils');
var syntaxObjectRestSpread = require('@babel/plugin-syntax-object-rest-spread');
var core = require('@babel/core');
var pluginTransformParameters = require('@babel/plugin-transform-parameters');
var helperCompilationTargets = require('@babel/helper-compilation-targets');
var compatData = require('@babel/compat-data/corejs2-built-ins');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var compatData__default = /*#__PURE__*/_interopDefaultLegacy(compatData);
const {

@@ -23,3 +15,3 @@ isObjectProperty: isObjectProperty$1,

isIdentifier
} = core.types;
} = types;
function shouldStoreRHSInTemporaryVariable(node) {

@@ -54,15 +46,8 @@ if (isArrayPattern(node)) {

isObjectProperty
} = core.types;
{
const node = core.types.identifier("a");
const property = core.types.objectProperty(core.types.identifier("key"), node);
const pattern = core.types.objectPattern([property]);
var ZERO_REFS = core.types.isReferenced(node, property, pattern) ? 1 : 0;
}
var index = helperPluginUtils.declare((api, opts) => {
var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
} = types;
var index = declare((api, opts) => {
api.assertVersion(7);
const targets = api.targets();
const supportsObjectAssign = !helperCompilationTargets.isRequired("es6.object.assign", targets, {
compatData: compatData__default["default"]
const supportsObjectAssign = !isRequired("es6.object.assign", targets, {
compatData
});

@@ -76,8 +61,8 @@ const {

}
const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : loose;
const objectRestNoSymbols = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : loose;
const pureGetters = (_api$assumption3 = api.assumption("pureGetters")) != null ? _api$assumption3 : loose;
const setSpreadProperties = (_api$assumption4 = api.assumption("setSpreadProperties")) != null ? _api$assumption4 : loose;
const ignoreFunctionLength = api.assumption("ignoreFunctionLength") ?? loose;
const objectRestNoSymbols = api.assumption("objectRestNoSymbols") ?? loose;
const pureGetters = api.assumption("pureGetters") ?? loose;
const setSpreadProperties = api.assumption("setSpreadProperties") ?? loose;
function getExtendsHelper(file) {
return useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : file.addHelper("extends");
return useBuiltIns ? types.memberExpression(types.identifier("Object"), types.identifier("assign")) : file.addHelper("extends");
}

@@ -118,3 +103,3 @@ function hasRestElement(path) {

for (const prop of node.properties) {
if (core.types.isSpreadElement(prop)) {
if (types.isSpreadElement(prop)) {
return true;

@@ -131,11 +116,11 @@ }

for (const prop of props) {
if (core.types.isIdentifier(prop.key) && !prop.computed) {
keys.push(core.types.stringLiteral(prop.key.name));
} else if (core.types.isTemplateLiteral(prop.key)) {
keys.push(core.types.cloneNode(prop.key));
if (types.isIdentifier(prop.key) && !prop.computed) {
keys.push(types.stringLiteral(prop.key.name));
} else if (types.isTemplateLiteral(prop.key)) {
keys.push(types.cloneNode(prop.key));
hasTemplateLiteral = true;
} else if (core.types.isLiteral(prop.key)) {
keys.push(core.types.stringLiteral(String(prop.key.value)));
} else if (types.isLiteral(prop.key)) {
keys.push(types.stringLiteral(String(prop.key.value)));
} else {
keys.push(core.types.cloneNode(prop.key));
keys.push(types.cloneNode(prop.key));
allLiteral = false;

@@ -156,5 +141,5 @@ }

const name = scope.generateUidBasedOnNode(key.node);
const declarator = core.types.variableDeclarator(core.types.identifier(name), key.node);
const declarator = types.variableDeclarator(types.identifier(name), key.node);
impureComputedPropertyDeclarators.push(declarator);
key.replaceWith(core.types.identifier(name));
key.replaceWith(types.identifier(name));
}

@@ -168,3 +153,3 @@ }

const bindingParentPath = bindings[bindingName].parentPath;
if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) {
if (path.scope.getBinding(bindingName).references > 0 || !bindingParentPath.isObjectProperty()) {
return;

@@ -178,4 +163,4 @@ }

const last = props[props.length - 1];
core.types.assertRestElement(last.node);
const restElement = core.types.cloneNode(last.node);
types.assertRestElement(last.node);
const restElement = types.cloneNode(last.node);
last.remove();

@@ -189,10 +174,10 @@ const impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope);

if (keys.length === 0) {
return [impureComputedPropertyDeclarators, restElement.argument, core.types.callExpression(getExtendsHelper(file), [core.types.objectExpression([]), core.types.sequenceExpression([core.types.callExpression(file.addHelper("objectDestructuringEmpty"), [core.types.cloneNode(objRef)]), core.types.cloneNode(objRef)])])];
return [impureComputedPropertyDeclarators, restElement.argument, types.callExpression(getExtendsHelper(file), [types.objectExpression([]), types.sequenceExpression([types.callExpression(file.addHelper("objectDestructuringEmpty"), [types.cloneNode(objRef)]), types.cloneNode(objRef)])])];
}
let keyExpression;
if (!allLiteral) {
keyExpression = core.types.callExpression(core.types.memberExpression(core.types.arrayExpression(keys), core.types.identifier("map")), [file.addHelper("toPropertyKey")]);
keyExpression = types.callExpression(types.memberExpression(types.arrayExpression(keys), types.identifier("map")), [file.addHelper("toPropertyKey")]);
} else {
keyExpression = core.types.arrayExpression(keys);
if (!hasTemplateLiteral && !core.types.isProgram(path.scope.block)) {
keyExpression = types.arrayExpression(keys);
if (!hasTemplateLiteral && !types.isProgram(path.scope.block)) {
const program = path.findParent(path => path.isProgram());

@@ -205,6 +190,6 @@ const id = path.scope.generateUidIdentifier("excluded");

});
keyExpression = core.types.cloneNode(id);
keyExpression = types.cloneNode(id);
}
}
return [impureComputedPropertyDeclarators, restElement.argument, core.types.callExpression(file.addHelper(`objectWithoutProperties${objectRestNoSymbols ? "Loose" : ""}`), [core.types.cloneNode(objRef), keyExpression])];
return [impureComputedPropertyDeclarators, restElement.argument, types.callExpression(file.addHelper(`objectWithoutProperties${objectRestNoSymbols ? "Loose" : ""}`), [types.cloneNode(objRef), keyExpression])];
}

@@ -224,3 +209,3 @@ function replaceRestElement(parentPath, paramPath, container) {

const uid = parentPath.scope.generateUidIdentifier("ref");
const declar = core.types.variableDeclaration("let", [core.types.variableDeclarator(paramPath.node, uid)]);
const declar = types.variableDeclaration("let", [types.variableDeclarator(paramPath.node, uid)]);
if (container) {

@@ -232,3 +217,3 @@ container.push(declar);

}
paramPath.replaceWith(core.types.cloneNode(uid));
paramPath.replaceWith(types.cloneNode(uid));
}

@@ -284,3 +269,3 @@ }

const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx);
pluginTransformParameters.convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement);
convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement);
}

@@ -298,6 +283,6 @@ },

}
if (shouldStoreRHSInTemporaryVariable(originalPath.node.id) && !core.types.isIdentifier(originalPath.node.init)) {
if (shouldStoreRHSInTemporaryVariable(originalPath.node.id) && !types.isIdentifier(originalPath.node.init)) {
const initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref");
originalPath.insertBefore(core.types.variableDeclarator(initRef, originalPath.node.init));
originalPath.replaceWith(core.types.variableDeclarator(originalPath.node.id, core.types.cloneNode(initRef)));
originalPath.insertBefore(types.variableDeclarator(initRef, originalPath.node.init));
originalPath.replaceWith(types.variableDeclarator(originalPath.node.id, types.cloneNode(initRef)));
return;

@@ -321,3 +306,3 @@ }

} = prop;
ref = core.types.memberExpression(ref, core.types.cloneNode(node.key), node.computed || core.types.isLiteral(node.key));
ref = types.memberExpression(ref, types.cloneNode(node.key), node.computed || types.isLiteral(node.key));
});

@@ -329,6 +314,6 @@ const objectPatternPath = path.findParent(path => path.isObjectPattern());

}
core.types.assertIdentifier(argument);
types.assertIdentifier(argument);
insertionPath.insertBefore(impureComputedPropertyDeclarators);
insertionPath.insertBefore(impureObjRefComputedDeclarators);
insertionPath = insertionPath.insertAfter(core.types.variableDeclarator(argument, callExpression))[0];
insertionPath = insertionPath.insertAfter(types.variableDeclarator(argument, callExpression))[0];
path.scope.registerBinding(kind, insertionPath);

@@ -347,6 +332,6 @@ if (objectPatternPath.node.properties.length === 0) {

for (const name of Object.keys(path.getOuterBindingIdentifiers(true))) {
specifiers.push(core.types.exportSpecifier(core.types.identifier(name), core.types.identifier(name)));
specifiers.push(types.exportSpecifier(types.identifier(name), types.identifier(name)));
}
path.replaceWith(declaration.node);
path.insertAfter(core.types.exportNamedDeclaration(null, specifiers));
path.insertAfter(types.exportNamedDeclaration(null, specifiers));
},

@@ -362,12 +347,12 @@ CatchClause(path) {

const refName = path.scope.generateUidBasedOnNode(path.node.right, "ref");
nodes.push(core.types.variableDeclaration("var", [core.types.variableDeclarator(core.types.identifier(refName), path.node.right)]));
const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectRest(leftPath, file, core.types.identifier(refName));
nodes.push(types.variableDeclaration("var", [types.variableDeclarator(types.identifier(refName), path.node.right)]));
const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectRest(leftPath, file, types.identifier(refName));
if (impureComputedPropertyDeclarators.length > 0) {
nodes.push(core.types.variableDeclaration("var", impureComputedPropertyDeclarators));
nodes.push(types.variableDeclaration("var", impureComputedPropertyDeclarators));
}
const nodeWithoutSpread = core.types.cloneNode(path.node);
nodeWithoutSpread.right = core.types.identifier(refName);
nodes.push(core.types.expressionStatement(nodeWithoutSpread));
nodes.push(core.types.expressionStatement(core.types.assignmentExpression("=", argument, callExpression)));
nodes.push(core.types.expressionStatement(core.types.identifier(refName)));
const nodeWithoutSpread = types.cloneNode(path.node);
nodeWithoutSpread.right = types.identifier(refName);
nodes.push(types.expressionStatement(nodeWithoutSpread));
nodes.push(types.expressionStatement(types.assignmentExpression("=", argument, callExpression)));
nodes.push(types.expressionStatement(types.identifier(refName)));
path.replaceWithMultiple(nodes);

@@ -386,18 +371,18 @@ }

}
if (!core.types.isVariableDeclaration(left)) {
if (!types.isVariableDeclaration(left)) {
const temp = scope.generateUidIdentifier("ref");
node.left = core.types.variableDeclaration("var", [core.types.variableDeclarator(temp)]);
node.left = types.variableDeclaration("var", [types.variableDeclarator(temp)]);
path.ensureBlock();
const body = path.node.body;
if (body.body.length === 0 && path.isCompletionRecord()) {
body.body.unshift(core.types.expressionStatement(scope.buildUndefinedNode()));
body.body.unshift(types.expressionStatement(scope.buildUndefinedNode()));
}
body.body.unshift(core.types.expressionStatement(core.types.assignmentExpression("=", left, core.types.cloneNode(temp))));
body.body.unshift(types.expressionStatement(types.assignmentExpression("=", left, types.cloneNode(temp))));
} else {
const pattern = left.declarations[0].id;
const key = scope.generateUidIdentifier("ref");
node.left = core.types.variableDeclaration(left.kind, [core.types.variableDeclarator(key, null)]);
node.left = types.variableDeclaration(left.kind, [types.variableDeclarator(key, null)]);
path.ensureBlock();
const body = node.body;
body.body.unshift(core.types.variableDeclaration(node.left.kind, [core.types.variableDeclarator(pattern, core.types.cloneNode(key))]));
body.body.unshift(types.variableDeclaration(node.left.kind, [types.variableDeclarator(pattern, types.cloneNode(key))]));
}

@@ -413,4 +398,4 @@ },

const uid = path.scope.generateUidIdentifier("ref");
objectPatterns.push(core.types.variableDeclarator(objectPattern.node, uid));
objectPattern.replaceWith(core.types.cloneNode(uid));
objectPatterns.push(types.variableDeclarator(objectPattern.node, uid));
objectPattern.replaceWith(types.cloneNode(uid));
path.skip();

@@ -422,3 +407,3 @@ });

const kind = statementNode.type === "VariableDeclaration" ? statementNode.kind : "var";
statementPath.insertAfter(core.types.variableDeclaration(kind, objectPatterns));
statementPath.insertAfter(types.variableDeclaration(kind, objectPatterns));
}

@@ -434,3 +419,3 @@ },

helper = file.addHelper("objectSpread2");
} catch (_unused) {
} catch {
this.file.declarations["objectSpread2"] = null;

@@ -444,6 +429,6 @@ helper = file.addHelper("objectSpread");

const hadProps = props.length > 0;
const obj = core.types.objectExpression(props);
const obj = types.objectExpression(props);
props = [];
if (!exp) {
exp = core.types.callExpression(helper, [obj]);
exp = types.callExpression(helper, [obj]);
return;

@@ -457,6 +442,6 @@ }

}
exp = core.types.callExpression(core.types.cloneNode(helper), [exp, ...(hadProps ? [core.types.objectExpression([]), obj] : [])]);
exp = types.callExpression(types.cloneNode(helper), [exp, ...(hadProps ? [types.objectExpression([]), obj] : [])]);
}
for (const prop of path.node.properties) {
if (core.types.isSpreadElement(prop)) {
if (types.isSpreadElement(prop)) {
make();

@@ -475,3 +460,3 @@ exp.arguments.push(prop.argument);

exports["default"] = index;
export { index as default };
//# sourceMappingURL=index.js.map

@@ -1,8 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = shouldStoreRHSInTemporaryVariable;
var _core = require("@babel/core");
import { types as t } from "@babel/core";
const {

@@ -15,4 +9,4 @@ isObjectProperty,

isIdentifier
} = _core.types;
function shouldStoreRHSInTemporaryVariable(node) {
} = t;
export default function shouldStoreRHSInTemporaryVariable(node) {
if (isArrayPattern(node)) {

@@ -19,0 +13,0 @@ const nonNullElements = node.elements.filter(element => element !== null);

{
"name": "@babel/plugin-transform-object-rest-spread",
"version": "7.22.5",
"version": "8.0.0-alpha.0",
"description": "Compile object rest and spread to ES5",

@@ -20,21 +20,25 @@ "repository": {

"dependencies": {
"@babel/compat-data": "^7.22.5",
"@babel/helper-compilation-targets": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/compat-data": "^8.0.0-alpha.0",
"@babel/helper-compilation-targets": "^8.0.0-alpha.0",
"@babel/helper-plugin-utils": "^8.0.0-alpha.0",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.22.5"
"@babel/plugin-transform-parameters": "^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/parser": "^7.22.5"
"@babel/core": "^8.0.0-alpha.0",
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.0",
"@babel/parser": "^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-object-rest-spread

See our website [@babel/plugin-transform-object-rest-spread](https://babeljs.io/docs/en/babel-plugin-transform-object-rest-spread) for more information.
See our website [@babel/plugin-transform-object-rest-spread](https://babeljs.io/docs/babel-plugin-transform-object-rest-spread) 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

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