Socket
Socket
Sign inDemoInstall

@babel/helper-create-class-features-plugin

Package Overview
Dependencies
Maintainers
6
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/helper-create-class-features-plugin - npm Package Compare versions

Comparing version 7.15.0 to 7.15.4

108

lib/fields.js

@@ -154,2 +154,12 @@ "use strict";

});
function unshadow(name, scope, innerBinding) {
while ((_scope = scope) != null && _scope.hasBinding(name) && !scope.bindingIdentifierEquals(name, innerBinding)) {
var _scope;
scope.rename(name);
scope = scope.parent;
}
}
const privateInVisitor = privateNameVisitorFactory({

@@ -174,2 +184,3 @@ BinaryExpression(path) {

if (redeclared && redeclared.includes(name)) return;
unshadow(this.classRef.name, path.scope, this.innerBinding);

@@ -233,3 +244,4 @@ if (privateFieldsAsProperties) {

privateNamesMap,
file
file,
innerBinding
} = this;

@@ -251,2 +263,3 @@ const {

const helperName = isMethod && !isAccessor ? "classStaticPrivateMethodGet" : "classStaticPrivateFieldSpecGet";
unshadow(classRef.name, member.scope, innerBinding);
return _core.types.callExpression(file.addHelper(helperName), [this.receiver(member), _core.types.cloneNode(classRef), _core.types.cloneNode(id)]);

@@ -398,3 +411,4 @@ }

privateFieldsAsProperties,
noDocumentAll
noDocumentAll,
innerBinding
}, state) {

@@ -409,3 +423,4 @@ if (!privateNamesMap.size) return;

}, handler, {
noDocumentAll
noDocumentAll,
innerBinding
}));

@@ -416,3 +431,4 @@ body.traverse(privateInVisitor, {

file: state,
privateFieldsAsProperties
privateFieldsAsProperties,
innerBinding
});

@@ -436,3 +452,3 @@ }

function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap) {
function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap, state) {
const {

@@ -442,8 +458,21 @@ id

const value = prop.node.value || prop.scope.buildUndefinedNode();
return _core.template.statement.ast`${_core.types.cloneNode(id)}.set(${ref}, {
// configurable is always false for private elements
// enumerable is always false for private elements
writable: true,
value: ${value},
})`;
{
if (!state.availableHelper("classPrivateFieldInitSpec")) {
return _core.template.statement.ast`${_core.types.cloneNode(id)}.set(${ref}, {
// configurable is always false for private elements
// enumerable is always false for private elements
writable: true,
value: ${value},
})`;
}
}
const helper = state.addHelper("classPrivateFieldInitSpec");
return _core.template.statement.ast`${helper}(
${_core.types.thisExpression()},
${_core.types.cloneNode(id)},
{
writable: true,
value: ${value}
},
)`;
}

@@ -528,6 +557,5 @@

function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap) {
function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap, state) {
const privateName = privateNamesMap.get(prop.node.key.id.name);
const {
id,
getId,

@@ -541,6 +569,21 @@ setId,

if (isAccessor) {
privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
initAdded: true
}));
return _core.template.statement.ast`
return buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state);
}
return buildPrivateInstanceMethodInitalization(ref, prop, privateNamesMap, state);
}
function buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state) {
const privateName = privateNamesMap.get(prop.node.key.id.name);
const {
id,
getId,
setId
} = privateName;
privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
initAdded: true
}));
{
if (!state.availableHelper("classPrivateFieldInitSpec")) {
return _core.template.statement.ast`
${id}.set(${ref}, {

@@ -551,5 +594,30 @@ get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},

`;
}
}
const helper = state.addHelper("classPrivateFieldInitSpec");
return _core.template.statement.ast`${helper}(
${_core.types.thisExpression()},
${_core.types.cloneNode(id)},
{
get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
},
)`;
}
return _core.template.statement.ast`${id}.add(${ref})`;
function buildPrivateInstanceMethodInitalization(ref, prop, privateNamesMap, state) {
const privateName = privateNamesMap.get(prop.node.key.id.name);
const {
id
} = privateName;
{
if (!state.availableHelper("classPrivateMethodInitSpec")) {
return _core.template.statement.ast`${id}.add(${ref})`;
}
}
const helper = state.addHelper("classPrivateMethodInitSpec");
return _core.template.statement.ast`${helper}(
${_core.types.thisExpression()},
${_core.types.cloneNode(id)}
)`;
}

@@ -776,3 +844,3 @@

case isInstance && isPrivate && isField && !privateFieldsAsProperties:
instanceNodes.push(buildPrivateInstanceFieldInitSpec(_core.types.thisExpression(), prop, privateNamesMap));
instanceNodes.push(buildPrivateInstanceFieldInitSpec(_core.types.thisExpression(), prop, privateNamesMap, state));
break;

@@ -786,3 +854,3 @@

case isInstance && isPrivate && isMethod && !privateFieldsAsProperties:
instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(_core.types.thisExpression(), prop, privateNamesMap));
instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(_core.types.thisExpression(), prop, privateNamesMap, state));
pureStaticNodes.push(buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties));

@@ -789,0 +857,0 @@ break;

5

lib/index.js

@@ -40,3 +40,3 @@ "use strict";

const version = "7.15.0".split(".").reduce((v, x) => v * 1e5 + +x, 0);
const version = "7.15.4".split(".").reduce((v, x) => v * 1e5 + +x, 0);
const versionKey = "@babel/plugin-class-features/version";

@@ -164,3 +164,4 @@

privateFieldsAsProperties: privateFieldsAsProperties != null ? privateFieldsAsProperties : loose,
noDocumentAll
noDocumentAll,
innerBinding
}, state);

@@ -167,0 +168,0 @@ let keysNodes, staticNodes, instanceNodes, pureStaticNodes, wrapClass;

{
"name": "@babel/helper-create-class-features-plugin",
"version": "7.15.0",
"version": "7.15.4",
"author": "The Babel Team (https://babel.dev/team)",

@@ -21,8 +21,8 @@ "license": "MIT",

"dependencies": {
"@babel/helper-annotate-as-pure": "^7.14.5",
"@babel/helper-function-name": "^7.14.5",
"@babel/helper-member-expression-to-functions": "^7.15.0",
"@babel/helper-optimise-call-expression": "^7.14.5",
"@babel/helper-replace-supers": "^7.15.0",
"@babel/helper-split-export-declaration": "^7.14.5"
"@babel/helper-annotate-as-pure": "^7.15.4",
"@babel/helper-function-name": "^7.15.4",
"@babel/helper-member-expression-to-functions": "^7.15.4",
"@babel/helper-optimise-call-expression": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4"
},

@@ -33,5 +33,6 @@ "peerDependencies": {

"devDependencies": {
"@babel/core": "7.15.0",
"@babel/core": "7.15.4",
"@babel/helper-plugin-test-runner": "7.14.5",
"@babel/preset-env": "7.15.0"
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/preset-env": "7.15.4"
},

@@ -38,0 +39,0 @@ "engines": {

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