@babel/helper-create-class-features-plugin
Advanced tools
Comparing version 7.15.0 to 7.15.4
@@ -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; |
@@ -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": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
51821
1306
4