Socket
Socket
Sign inDemoInstall

@babel/plugin-transform-classes

Package Overview
Dependencies
58
Maintainers
4
Versions
96
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

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

39

lib/index.js

@@ -1,12 +0,18 @@

import { declare } from "@babel/helper-plugin-utils";
import { isRequired } from "@babel/helper-compilation-targets";
import annotateAsPure from "@babel/helper-annotate-as-pure";
import nameFunction from "@babel/helper-function-name";
import splitExportDeclaration from "@babel/helper-split-export-declaration";
import { types as t } from "@babel/core";
import globals from "globals";
import transformClass from "./transformClass.js";
const getBuiltinClasses = category => Object.keys(globals[category]).filter(name => /^[A-Z]/.test(name));
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _helperPluginUtils = require("@babel/helper-plugin-utils");
var _helperCompilationTargets = require("@babel/helper-compilation-targets");
var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
var _helperFunctionName = require("@babel/helper-function-name");
var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration");
var _core = require("@babel/core");
var _globals = require("globals");
var _transformClass = require("./transformClass");
const getBuiltinClasses = category => Object.keys(_globals[category]).filter(name => /^[A-Z]/.test(name));
const builtinClasses = new Set([...getBuiltinClasses("builtin"), ...getBuiltinClasses("browser")]);
export default declare((api, options) => {
var _default = (0, _helperPluginUtils.declare)((api, options) => {
var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;

@@ -21,3 +27,3 @@ api.assertVersion(7);

const noClassCalls = (_api$assumption4 = api.assumption("noClassCalls")) != null ? _api$assumption4 : loose;
const supportUnicodeId = !isRequired("transform-unicode-escapes", api.targets());
const supportUnicodeId = !(0, _helperCompilationTargets.isRequired)("transform-unicode-escapes", api.targets());
const VISITED = new WeakSet();

@@ -29,3 +35,3 @@ return {

if (!path.get("declaration").isClassDeclaration()) return;
splitExportDeclaration(path);
(0, _helperSplitExportDeclaration.default)(path);
},

@@ -37,3 +43,3 @@ ClassDeclaration(path) {

const ref = node.id || path.scope.generateUidIdentifier("class");
path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(ref, t.toExpression(node))]));
path.replaceWith(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(ref, _core.types.toExpression(node))]));
},

@@ -45,3 +51,3 @@ ClassExpression(path, state) {

if (VISITED.has(node)) return;
const inferred = nameFunction(path, undefined, supportUnicodeId);
const inferred = (0, _helperFunctionName.default)(path, undefined, supportUnicodeId);
if (inferred && inferred !== node) {

@@ -52,3 +58,3 @@ path.replaceWith(inferred);

VISITED.add(node);
const [replacedPath] = path.replaceWith(transformClass(path, state.file, builtinClasses, loose, {
const [replacedPath] = path.replaceWith((0, _transformClass.default)(path, state.file, builtinClasses, loose, {
setClassMethods,

@@ -60,3 +66,3 @@ constantSuper,

if (replacedPath.isCallExpression()) {
annotateAsPure(replacedPath);
(0, _helperAnnotateAsPure.default)(replacedPath);
const callee = replacedPath.get("callee");

@@ -71,3 +77,4 @@ if (callee.isArrowFunctionExpression()) {

});
exports.default = _default;
//# sourceMappingURL=index.js.map

@@ -1,3 +0,9 @@

import { template, types as t } from "@babel/core";
const helper = template.statement`
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = addCreateSuperHelper;
var _core = require("@babel/core");
const helper = _core.template.statement`
function CREATE_SUPER(Derived) {

@@ -43,5 +49,5 @@ function isNativeReflectConstruct() {

const helperIDs = new WeakMap();
export default function addCreateSuperHelper(file) {
function addCreateSuperHelper(file) {
if (helperIDs.has(file)) {
return (t.cloneNode || t.clone)(helperIDs.get(file));
return (_core.types.cloneNode || _core.types.clone)(helperIDs.get(file));
}

@@ -60,5 +66,5 @@ try {

file.scope.registerDeclaration(file.path.get("body.0"));
return t.cloneNode(id);
return _core.types.cloneNode(id);
}
//# sourceMappingURL=inline-createSuper-helpers.js.map

@@ -1,14 +0,20 @@

import nameFunction from "@babel/helper-function-name";
import ReplaceSupers from "@babel/helper-replace-supers";
import environmentVisitor from "@babel/helper-environment-visitor";
import optimiseCall from "@babel/helper-optimise-call-expression";
import { traverse, template, types as t } from "@babel/core";
import annotateAsPure from "@babel/helper-annotate-as-pure";
import addCreateSuperHelper from "./inline-createSuper-helpers.js";
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = transformClass;
var _helperFunctionName = require("@babel/helper-function-name");
var _helperReplaceSupers = require("@babel/helper-replace-supers");
var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor");
var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
var _core = require("@babel/core");
var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
var _inlineCreateSuperHelpers = require("./inline-createSuper-helpers");
function buildConstructor(classRef, constructorBody, node) {
const func = t.functionDeclaration(t.cloneNode(classRef), [], constructorBody);
t.inherits(func, node);
const func = _core.types.functionDeclaration(_core.types.cloneNode(classRef), [], constructorBody);
_core.types.inherits(func, node);
return func;
}
export default function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) {
function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) {
const classState = {

@@ -56,3 +62,3 @@ parent: undefined,

};
const findThisesVisitor = traverse.visitors.merge([environmentVisitor, {
const findThisesVisitor = _core.traverse.visitors.merge([_helperEnvironmentVisitor.default, {
ThisExpression(path) {

@@ -63,3 +69,3 @@ classState.superThises.push(path);

function createClassHelper(args) {
return t.callExpression(classState.file.addHelper("createClass"), args);
return _core.types.callExpression(classState.file.addHelper("createClass"), args);
}

@@ -76,3 +82,3 @@ function maybeCreateConstructor() {

if (classState.isDerived) {
const constructor = template.expression.ast`
const constructor = _core.template.expression.ast`
(function () {

@@ -86,5 +92,5 @@ super(...arguments);

params = [];
body = t.blockStatement([]);
body = _core.types.blockStatement([]);
}
classState.path.get("body").unshiftContainer("body", t.classMethod("constructor", t.identifier("constructor"), params, body));
classState.path.get("body").unshiftContainer("body", _core.types.classMethod("constructor", _core.types.identifier("constructor"), params, body));
}

@@ -102,4 +108,4 @@ function buildBody() {

constructorBody.body.push(...userConstructor.body.body);
t.inherits(construct, userConstructor);
t.inherits(constructorBody, userConstructor.body);
_core.types.inherits(construct, userConstructor);
_core.types.inherits(constructorBody, userConstructor.body);
}

@@ -118,5 +124,5 @@ pushDescriptors();

}
if (t.isClassMethod(node)) {
if (_core.types.isClassMethod(node)) {
const isConstructor = node.kind === "constructor";
const replaceSupers = new ReplaceSupers({
const replaceSupers = new _helperReplaceSupers.default({
methodPath: path,

@@ -131,3 +137,3 @@ objectRef: classState.classRef,

const superReturns = [];
path.traverse(traverse.visitors.merge([environmentVisitor, {
path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, {
ReturnStatement(path) {

@@ -159,6 +165,6 @@ if (!path.getFunctionParent().isArrowFunctionExpression()) {

props[placement] = classState.methods[placement].list.map(desc => {
const obj = t.objectExpression([t.objectProperty(t.identifier("key"), desc.key)]);
const obj = _core.types.objectExpression([_core.types.objectProperty(_core.types.identifier("key"), desc.key)]);
for (const kind of ["get", "set", "value"]) {
if (desc[kind] != null) {
obj.properties.push(t.objectProperty(t.identifier(kind), desc[kind]));
obj.properties.push(_core.types.objectProperty(_core.types.identifier(kind), desc[kind]));
}

@@ -171,9 +177,9 @@ }

if (props.instance || props.static) {
let args = [t.cloneNode(classState.classRef), props.instance ? t.arrayExpression(props.instance) : t.nullLiteral(), props.static ? t.arrayExpression(props.static) : t.nullLiteral()];
let args = [_core.types.cloneNode(classState.classRef), props.instance ? _core.types.arrayExpression(props.instance) : _core.types.nullLiteral(), props.static ? _core.types.arrayExpression(props.static) : _core.types.nullLiteral()];
let lastNonNullIndex = 0;
for (let i = 0; i < args.length; i++) {
if (!t.isNullLiteral(args[i])) lastNonNullIndex = i;
if (!_core.types.isNullLiteral(args[i])) lastNonNullIndex = i;
}
args = args.slice(0, lastNonNullIndex + 1);
body.push(t.expressionStatement(createClassHelper(args)));
body.push(_core.types.expressionStatement(createClassHelper(args)));
classState.pushedCreateClass = true;

@@ -186,22 +192,22 @@ }

if (assumptions.superIsCallableConstructor) {
bareSuperNode.arguments.unshift(t.thisExpression());
if (bareSuperNode.arguments.length === 2 && t.isSpreadElement(bareSuperNode.arguments[1]) && t.isIdentifier(bareSuperNode.arguments[1].argument, {
bareSuperNode.arguments.unshift(_core.types.thisExpression());
if (bareSuperNode.arguments.length === 2 && _core.types.isSpreadElement(bareSuperNode.arguments[1]) && _core.types.isIdentifier(bareSuperNode.arguments[1].argument, {
name: "arguments"
})) {
bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;
bareSuperNode.callee = t.memberExpression(t.cloneNode(superRef), t.identifier("apply"));
bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("apply"));
} else {
bareSuperNode.callee = t.memberExpression(t.cloneNode(superRef), t.identifier("call"));
bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("call"));
}
call = t.logicalExpression("||", bareSuperNode, t.thisExpression());
call = _core.types.logicalExpression("||", bareSuperNode, _core.types.thisExpression());
} else {
call = optimiseCall(t.cloneNode(classState.superFnId), t.thisExpression(), bareSuperNode.arguments, false);
call = (0, _helperOptimiseCallExpression.default)(_core.types.cloneNode(classState.superFnId), _core.types.thisExpression(), bareSuperNode.arguments, false);
}
if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
if (classState.superThises.length) {
call = t.assignmentExpression("=", thisRef(), call);
call = _core.types.assignmentExpression("=", thisRef(), call);
}
bareSuper.parentPath.replaceWith(t.returnStatement(call));
bareSuper.parentPath.replaceWith(_core.types.returnStatement(call));
} else {
bareSuper.replaceWith(t.assignmentExpression("=", thisRef(), call));
bareSuper.replaceWith(_core.types.assignmentExpression("=", thisRef(), call));
}

@@ -216,3 +222,3 @@ }

const ref = path.scope.generateDeclaredUidIdentifier("this");
thisRef = () => t.cloneNode(ref);
thisRef = () => _core.types.cloneNode(ref);
return ref;

@@ -231,6 +237,6 @@ };

}
thisPath.replaceWith(t.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]));
thisPath.replaceWith(_core.types.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]));
}
const bareSupers = [];
path.traverse(traverse.visitors.merge([environmentVisitor, {
path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, {
Super(path) {

@@ -266,4 +272,4 @@ const {

wrapReturn = returnArg => {
const thisExpr = t.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]);
return returnArg ? t.logicalExpression("||", returnArg, thisExpr) : thisExpr;
const thisExpr = _core.types.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]);
return returnArg ? _core.types.logicalExpression("||", returnArg, thisExpr) : thisExpr;
};

@@ -276,3 +282,3 @@ } else {

}
return t.callExpression(classState.file.addHelper("possibleConstructorReturn"), returnParams);
return _core.types.callExpression(classState.file.addHelper("possibleConstructorReturn"), returnParams);
};

@@ -282,3 +288,3 @@ }

if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {
body.pushContainer("body", t.returnStatement(guaranteedSuperBeforeFinish ? thisRef() : wrapReturn()));
body.pushContainer("body", _core.types.returnStatement(guaranteedSuperBeforeFinish ? thisRef() : wrapReturn()));
}

@@ -297,8 +303,8 @@ for (const returnPath of classState.superReturns) {

const descKey = node.kind === "method" ? "value" : node.kind;
const key = t.isNumericLiteral(node.key) || t.isBigIntLiteral(node.key) ? t.stringLiteral(String(node.key.value)) : t.toComputedKey(node);
let fn = t.toExpression(node);
if (t.isStringLiteral(key)) {
const key = _core.types.isNumericLiteral(node.key) || _core.types.isBigIntLiteral(node.key) ? _core.types.stringLiteral(String(node.key.value)) : _core.types.toComputedKey(node);
let fn = _core.types.toExpression(node);
if (_core.types.isStringLiteral(key)) {
if (node.kind === "method") {
var _nameFunction;
fn = (_nameFunction = nameFunction({
fn = (_nameFunction = (0, _helperFunctionName.default)({
id: key,

@@ -342,9 +348,9 @@ node: node,

}
const methodName = t.memberExpression(t.cloneNode(classRef), node.key, node.computed || t.isLiteral(node.key));
let func = t.functionExpression(null, node.params, node.body, node.generator, node.async);
t.inherits(func, node);
const key = t.toComputedKey(node, node.key);
if (t.isStringLiteral(key)) {
const methodName = _core.types.memberExpression(_core.types.cloneNode(classRef), node.key, node.computed || _core.types.isLiteral(node.key));
let func = _core.types.functionExpression(null, node.params, node.body, node.generator, node.async);
_core.types.inherits(func, node);
const key = _core.types.toComputedKey(node, node.key);
if (_core.types.isStringLiteral(key)) {
var _nameFunction2;
func = (_nameFunction2 = nameFunction({
func = (_nameFunction2 = (0, _helperFunctionName.default)({
node: func,

@@ -355,4 +361,4 @@ id: key,

}
const expr = t.expressionStatement(t.assignmentExpression("=", methodName, func));
t.inheritsComments(expr, node);
const expr = _core.types.expressionStatement(_core.types.assignmentExpression("=", methodName, func));
_core.types.inheritsComments(expr, node);
classState.body.push(expr);

@@ -368,4 +374,4 @@ return true;

});
const classProto = t.memberExpression(classState.classRef, t.identifier("prototype"));
const protoDeclaration = t.variableDeclaration("var", [t.variableDeclarator(classState.protoAlias, classProto)]);
const classProto = _core.types.memberExpression(classState.classRef, _core.types.identifier("prototype"));
const protoDeclaration = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(classState.protoAlias, classProto)]);
classState.body.push(protoDeclaration);

@@ -384,5 +390,5 @@ }

} = classState;
t.inheritsComments(construct, method);
_core.types.inheritsComments(construct, method);
construct.params = method.params;
t.inherits(construct.body, method.body);
_core.types.inherits(construct.body, method.body);
construct.body.directives = method.body.directives;

@@ -408,5 +414,5 @@ pushConstructorToBody();

if (!assumptions.superIsCallableConstructor) {
classState.body.unshift(t.variableDeclaration("var", [t.variableDeclarator(superFnId, t.callExpression(addCreateSuperHelper(classState.file), [t.cloneNode(classState.classRef)]))]));
classState.body.unshift(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(superFnId, _core.types.callExpression((0, _inlineCreateSuperHelpers.default)(classState.file), [_core.types.cloneNode(classState.classRef)]))]));
}
classState.body.unshift(t.expressionStatement(t.callExpression(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [t.cloneNode(classState.classRef), t.cloneNode(classState.superName)])));
classState.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [_core.types.cloneNode(classState.classRef), _core.types.cloneNode(classState.superName)])));
}

@@ -420,3 +426,3 @@ function extractDynamicKeys() {

for (const elem of node.body.body) {
if (!t.isClassMethod(elem) || !elem.computed) continue;
if (!_core.types.isClassMethod(elem) || !elem.computed) continue;
if (scope.isPure(elem.key, true)) continue;

@@ -436,6 +442,6 @@ const id = scope.generateUidIdentifierBasedOnNode(elem.key);

if (classState.isDerived) {
let arg = t.cloneNode(superName);
let arg = _core.types.cloneNode(superName);
if (classState.extendsNative) {
arg = t.callExpression(classState.file.addHelper("wrapNativeSuper"), [arg]);
annotateAsPure(arg);
arg = _core.types.callExpression(classState.file.addHelper("wrapNativeSuper"), [arg]);
(0, _helperAnnotateAsPure.default)(arg);
}

@@ -446,7 +452,7 @@ const param = classState.scope.generateUidIdentifierBasedOnNode(superName);

setState({
superName: t.cloneNode(param)
superName: _core.types.cloneNode(param)
});
}
for (const [name, value] of dynamicKeys) {
closureParams.push(t.identifier(name));
closureParams.push(_core.types.identifier(name));
closureArgs.push(value);

@@ -470,9 +476,9 @@ }

classId: classState.node.id,
classRef: classState.node.id ? t.identifier(classState.node.id.name) : classState.scope.generateUidIdentifier("class"),
classRef: classState.node.id ? _core.types.identifier(classState.node.id.name) : classState.scope.generateUidIdentifier("class"),
superName: classState.node.superClass,
isDerived: !!classState.node.superClass,
constructorBody: t.blockStatement([])
constructorBody: _core.types.blockStatement([])
});
setState({
extendsNative: t.isIdentifier(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true)
extendsNative: _core.types.isIdentifier(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true)
});

@@ -497,3 +503,3 @@ const {

if (!assumptions.noClassCalls) {
constructorBody.body.unshift(t.expressionStatement(t.callExpression(classState.file.addHelper("classCallCheck"), [t.thisExpression(), t.cloneNode(classState.classRef)])));
constructorBody.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper("classCallCheck"), [_core.types.thisExpression(), _core.types.cloneNode(classState.classRef)])));
}

@@ -504,3 +510,3 @@ const isStrict = path.isInStrictMode();

for (const param of classState.construct.params) {
if (!t.isIdentifier(param)) {
if (!_core.types.isIdentifier(param)) {
constructorOnly = false;

@@ -513,15 +519,15 @@ break;

if (!isStrict) {
directives.push(t.directive(t.directiveLiteral("use strict")));
directives.push(_core.types.directive(_core.types.directiveLiteral("use strict")));
}
if (constructorOnly) {
const expr = t.toExpression(body[0]);
const expr = _core.types.toExpression(body[0]);
return classState.isLoose ? expr : createClassHelper([expr]);
}
let returnArg = t.cloneNode(classState.classRef);
let returnArg = _core.types.cloneNode(classState.classRef);
if (!classState.pushedCreateClass && !classState.isLoose) {
returnArg = createClassHelper([returnArg]);
}
body.push(t.returnStatement(returnArg));
const container = t.arrowFunctionExpression(closureParams, t.blockStatement(body, directives));
return t.callExpression(container, closureArgs);
body.push(_core.types.returnStatement(returnArg));
const container = _core.types.arrowFunctionExpression(closureParams, _core.types.blockStatement(body, directives));
return _core.types.callExpression(container, closureArgs);
}

@@ -528,0 +534,0 @@ return classTransformer(path, file, builtinClasses, isLoose);

{
"name": "@babel/plugin-transform-classes",
"version": "7.21.4-esm.2",
"version": "7.21.4-esm.3",
"description": "Compile ES2015 classes to ES5",

@@ -17,10 +17,10 @@ "repository": {

"dependencies": {
"@babel/helper-annotate-as-pure": "7.21.4-esm.2",
"@babel/helper-compilation-targets": "7.21.4-esm.2",
"@babel/helper-environment-visitor": "7.21.4-esm.2",
"@babel/helper-function-name": "7.21.4-esm.2",
"@babel/helper-optimise-call-expression": "7.21.4-esm.2",
"@babel/helper-plugin-utils": "7.21.4-esm.2",
"@babel/helper-replace-supers": "7.21.4-esm.2",
"@babel/helper-split-export-declaration": "7.21.4-esm.2",
"@babel/helper-annotate-as-pure": "7.21.4-esm.3",
"@babel/helper-compilation-targets": "7.21.4-esm.3",
"@babel/helper-environment-visitor": "7.21.4-esm.3",
"@babel/helper-function-name": "7.21.4-esm.3",
"@babel/helper-optimise-call-expression": "7.21.4-esm.3",
"@babel/helper-plugin-utils": "7.21.4-esm.3",
"@babel/helper-replace-supers": "7.21.4-esm.3",
"@babel/helper-split-export-declaration": "7.21.4-esm.3",
"globals": "^11.1.0"

@@ -35,5 +35,5 @@ },

"devDependencies": {
"@babel/core": "7.21.4-esm.2",
"@babel/helper-plugin-test-runner": "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/traverse": "7.21.4-esm.3"
},

@@ -40,0 +40,0 @@ "engines": {

Sorry, the diff of this file is not supported yet

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc