Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Implement privateFieldsAsSymbols assumption for classes #15435

Merged
merged 6 commits into from Feb 20, 2023

Conversation

fwienber
Copy link
Contributor

@fwienber fwienber commented Feb 17, 2023

Issue #15389: When babel-helpers are inlined, classPrivateFieldLooseKey() defines a global variable id and initialized it to zero in every generated file. This can lead to name clashes between #-private members in subclass and superclass, which again leads to incorrect semantics.

It has been discussed to fix this (see my previous PR #15393), but eventually the suggestion was to introduce a new assumption privateFieldsAsSymbols and deprecate (and later remove) the buggy privateFieldsAsProperties.
In the new solution, instead of trying to produce a globally unique private property name string, a Symbol is created. To use the new assumption, in environments where Symbol is not available (Internet Explorer), a polyfill must be included.

Q                       A
Fixed Issues? Fixes #15389
Patch: Bug Fix? No
Major: Breaking Change? No
Minor: New Feature? Yes
Tests Added + Pass? Yes
Documentation PR Link babel/website#2721
Any Dependency Changes? No
License MIT

When babel-helpers are inlined, classPrivateFieldLooseKey()
defines a global variable `id` and initialized it to zero
in every generated file. This can lead to name clashes
between #-private members in subclass and superclass,
which again leads to incorrect semantics.
In babel#15389, it has been discussed to fix this, but
eventually the suggestion was to introduce a new assumption
`privateFieldsAsSymbols` and deprecate (and later remove)
the buggy `privateFieldsAsProperties`.
In the new solution, instead of trying to produce a
globally unique private property name string, a `Symbol`
is created. To use the new assumption, in environments
where `Symbol` is not available (Internet Explorer), a
polyfill must be included.
@babel-bot
Copy link
Collaborator

babel-bot commented Feb 17, 2023

Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/53981/

@liuxingbaoyu liuxingbaoyu added this to the v7.21.0 milestone Feb 17, 2023
@liuxingbaoyu liuxingbaoyu added the PR: New Feature 🚀 A type of pull request used for our changelog categories label Feb 17, 2023
Maybe the cross-package import made the tests
in the PR CI job red?
@fwienber fwienber marked this pull request as ready for review February 17, 2023 16:37
@fwienber
Copy link
Contributor Author

Okay, I seem to have used a wrong type import, which lead to weird CI failures.
But now all tests are green.
Currently, I just duplicated one test that only tests a #-private instance method.
I was wondering whether I have to duplicate all tests that now use privateFieldsAsProperties to also run with privateFieldsAsSymbols. If not, maybe a few more that cover all cases (private instance field/method, static field/method, no name-clash when inheriting) would be nice. Or would we change the existing tests on the Babel 8 branch (if there even is such a thing)?

Copy link
Member

@nicolo-ribaudo nicolo-ribaudo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

I pushed some changes instead of just leaving comments, because we are preparing the next minor release and I'd like to have this PR ready as soon as possible.

  • I improved the type annotation as @JLHwung suggested
  • I added an error if both privateFieldsAsSymbols and privateFieldsAsProperties are enabled at the same time
  • I duplicated all the existing privateFieldsAsProperties tests

@nicolo-ribaudo nicolo-ribaudo changed the title Feature: New Assumption privateFieldsAsSymbols, fixes #15389 feat: Implement privateFieldsAsSymbols assumption for private class elements Feb 18, 2023
} else if (!isStatic) {
init = t.newExpression(
t.identifier(!isMethod || isAccessor ? "WeakMap" : "WeakSet"),
[],
);
annotateAsPure(init);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is like before, but while at it, does new WeakMap() / new WeakSet() really need a PURE annotation?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh actually, it looks like the PURE annotations is also needed for symbols:
Terser playground with minifying let x = /*#__PURE__*/ Symbol("x");let y = Symbol("y");

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this has the same effect as new Symbol("y"), I can see why.

@nicolo-ribaudo nicolo-ribaudo changed the title feat: Implement privateFieldsAsSymbols assumption for private class elements feat: Implement privateFieldsAsSymbols assumption for classes Feb 20, 2023
@nicolo-ribaudo nicolo-ribaudo merged commit 3e60843 into babel:main Feb 20, 2023
cbush pushed a commit to mongodb/docs-realm that referenced this pull request Mar 17, 2023
<h3>Snyk has created this PR to upgrade @babel/core from 7.20.12 to
7.21.0.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **1 version** ahead of your current
version.
- The recommended version was released **24 days ago**, on 2023-02-20.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>@babel/core</b></summary>
    <ul>
      <li>
<b>7.21.0</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.21.0">2023-02-20</a></br><h2>v7.21.0
(2023-02-20)</h2>
<p>Thanks <a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/azizghuloum/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/azizghuloum">@ azizghuloum</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/ehoogeveen-medweb/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>, <a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/fwienber/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/fwienber">@ fwienber</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Lioness100/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Lioness100">@ Lioness100</a> for
your first PRs!</p>
<h4><g-emoji class="g-emoji" alias="rocket"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f680.png">🚀</g-emoji>
New Feature</h4>
<ul>
<li><code>babel-core</code>,
<code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-class-properties</code>,
<code>babel-plugin-proposal-private-methods</code>,
<code>babel-plugin-proposal-private-property-in-object</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15435"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15435/hovercard">#15435</a> feat:
Implement <code>privateFieldsAsSymbols</code> assumption for classes (<a
href="https://snyk.io/redirect/github/fwienber">@ fwienber</a>)</li>
</ul>
</li>
<li><code>babel-helper-create-regexp-features-plugin</code>,
<code>babel-plugin-proposal-regexp-modifiers</code>,
<code>babel-standalone</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15226"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15226/hovercard">#15226</a> feat:
Support regexp modifiers proposal (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-cli</code>, <code>babel-core</code>,
<code>babel-generator</code>,
<code>babel-plugin-transform-destructuring</code>,
<code>babel-plugin-transform-modules-commonjs</code>,
<code>babel-plugin-transform-react-jsx</code>,
<code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15022"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15022/hovercard">#15022</a> feat:
Generate sourcemaps of friendly call frames (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>, <code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15384"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15384/hovercard">#15384</a> [ts]
Support <code>const</code> modifier in type parameters (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>, <code>babel-helpers</code>,
<code>babel-parser</code>,
<code>babel-plugin-proposal-decorators</code>,
<code>babel-plugin-syntax-decorators</code>,
<code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>,
<code>babel-runtime</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15405"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15405/hovercard">#15405</a>
Implement decorators as presented at <code>2023-01</code> TC39 meeting
(<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15114"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15114/hovercard">#15114</a> Parser
option to allow <code>new.target</code> outside functions (<a
href="https://snyk.io/redirect/github/overlookmotel">@
overlookmotel</a>)</li>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15320"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15320/hovercard">#15320</a> Add
<code>annexb: false</code> parser option to disable Annex B (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15283"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15283/hovercard">#15283</a> feat:
Support <code>.cts</code> as configuration file (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>, <code>babel-parser</code>,
<code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15381"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15381/hovercard">#15381</a> [ts]
Support <code>export type * from</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="bug"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji>
Bug Fix</h4>
<ul>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15379"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15379/hovercard">#15379</a>
[ts5.0] Better inlining of constants in enums (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15366"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15366/hovercard">#15366</a>
handling circular/shared structures in deep-clone (<a
href="https://snyk.io/redirect/github/azizghuloum">@
azizghuloum</a>)</li>
</ul>
</li>
<li><code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-class-properties</code>,
<code>babel-plugin-proposal-class-static-block</code>,
<code>babel-plugin-proposal-private-methods</code>,
<code>babel-plugin-transform-classes</code>,
<code>babel-plugin-transform-new-target</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15406"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15406/hovercard">#15406</a>
Preserve class elements comments in class transform (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>,
<code>babel-plugin-transform-flow-comments</code>,
<code>babel-plugin-transform-flow-strip-types</code>,
<code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15414"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15414/hovercard">#15414</a> [ts]
Fix restrictions for optional parameters (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="nail_care"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji>
Polish</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15400"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15400/hovercard">#15400</a>
polish: improve "<code>await</code> as identifier" error in modules (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="house"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji>
Internal</h4>
<ul>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15137"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15137/hovercard">#15137</a>
Improve CJS compat with ESM-based <code>@ babel/core</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="microscope"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f52c.png">🔬</g-emoji>
Output optimization</h4>
<ul>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15418"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15418/hovercard">#15418</a> [ts]
Handle exponentiation operator in constant folding (<a
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 11</h4>
<ul>
<li>Abdulaziz Ghuloum (<a
href="https://snyk.io/redirect/github/azizghuloum">@
azizghuloum</a>)</li>
<li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@
babel-bot</a>)</li>
<li>Emanuel Hoogeveen (<a
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>)</li>
<li>Frank Wienberg (<a href="https://snyk.io/redirect/github/fwienber">@
fwienber</a>)</li>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</a>)</li>
<li>Mateusz Burzyński (<a
href="https://snyk.io/redirect/github/Andarist">@ Andarist</a>)</li>
<li>Nicolò Ribaudo (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li><a href="https://snyk.io/redirect/github/Lioness100">@
Lioness100</a></li>
<li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a></li>
<li><a href="https://snyk.io/redirect/github/overlookmotel">@
overlookmotel</a></li>
<li>fisker Cheung (<a href="https://snyk.io/redirect/github/fisker">@
fisker</a>)</li>
</ul>
      </li>
      <li>
<b>7.20.12</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.20.12">2023-01-04</a></br><h2>v7.20.12
(2023-01-04)</h2>
<p>Thanks <a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/cross19xx/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/cross19xx">@ cross19xx</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/JBYoshi/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/JBYoshi">@ JBYoshi</a> and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/nmn/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/nmn">@ nmn</a> for your first
PRs!</p>
<h4><g-emoji class="g-emoji" alias="bug"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji>
Bug Fix</h4>
<ul>
<li><code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15224"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15224/hovercard">#15224</a> Fix
<code>TaggedTemplateLiteral</code> evaluation (<a
href="https://snyk.io/redirect/github/nmn">@ nmn</a>)</li>
</ul>
</li>
<li><code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-class-properties</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15312"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15312/hovercard">#15312</a> fix:
<code>delete this</code> in static class properties initialization (<a
href="https://snyk.io/redirect/github/SuperSodaSea">@
SuperSodaSea</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="nail_care"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji>
Polish</h4>
<ul>
<li><code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15313"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15313/hovercard">#15313</a>
Implement support for evaluating computed properties. (<a
href="https://snyk.io/redirect/github/JBYoshi">@ JBYoshi</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 5</h4>
<ul>
<li>Jonathan Browne (<a href="https://snyk.io/redirect/github/JBYoshi">@
JBYoshi</a>)</li>
<li>Kenneth Kwakye-Gyamfi (<a
href="https://snyk.io/redirect/github/cross19xx">@ cross19xx</a>)</li>
<li>Naman Goel (<a href="https://snyk.io/redirect/github/nmn">@
nmn</a>)</li>
<li>Nicolò Ribaudo (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li>Tianlan Zhou (<a
href="https://snyk.io/redirect/github/SuperSodaSea">@
SuperSodaSea</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/babel/babel/releases">@babel/core
GitHub release notes</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiIxMjFlNDk2Mi01NjQ2LTRjNzEtYmY1My02ZTg1MWE1YzNiMTciLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjEyMWU0OTYyLTU2NDYtNGM3MS1iZjUzLTZlODUxYTVjM2IxNyJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?pkg&#x3D;@babel/core&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"121e4962-5646-4c71-bf53-6e851a5c3b17","prPublicId":"121e4962-5646-4c71-bf53-6e851a5c3b17","dependencies":[{"name":"@babel/core","from":"7.20.12","to":"7.21.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"852e6e4f-be96-45c8-b370-1060f5ebee55","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2023-02-20T15:31:22.823Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
scudette added a commit to Velocidex/velociraptor that referenced this pull request Apr 5, 2023
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade @babel/core
from 7.21.0 to 7.21.3.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **1 version** ahead of your current
version.
- The recommended version was released **22 days ago**, on 2023-03-14.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>@babel/core</b></summary>
    <ul>
      <li>
<b>7.21.3</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.21.3">2023-03-14</a></br><h2>v7.21.3
(2023-03-14)</h2>
<p>Thanks <a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/amoeller/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/amoeller">@ amoeller</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Harpica/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Harpica">@ Harpica</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/nzakas/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/nzakas">@ nzakas</a> for your
first PRs!</p>
<h4><g-emoji class="g-emoji" alias="eyeglasses"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f453.png">👓</g-emoji>
Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15479"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15479/hovercard">#15479</a>
disallow mixins/implements in flow interface (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="bug"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji>
Bug Fix</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15423"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15423/hovercard">#15423</a> [ts]
Allow keywords in tuple labels (<a
href="https://snyk.io/redirect/github/Harpica">@ Harpica</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15489"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15489/hovercard">#15489</a>
Register <code>var</code> decls generated by <code>import ... =</code>
TS transform (<a href="https://snyk.io/redirect/github/amoeller">@
amoeller</a>)</li>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15494"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15494/hovercard">#15494</a> fix:
Consider <code>export { type foo }</code> as type-only usage (<a
href="https://snyk.io/redirect/github/magic-akari">@
magic-akari</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="nail_care"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji>
Polish</h4>
<ul>
<li><code>babel-traverse</code>, <code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15484"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15484/hovercard">#15484</a> Skip
node deprecation warnings when used by an old <code>@ babel</code>
package (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15480"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15480/hovercard">#15480</a> chore:
Improve <code>jsonCompatibleStrings</code> deprecation (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="house"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji>
Internal</h4>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15465"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15465/hovercard">#15465</a> Add
ESLint-readable package name (<a
href="https://snyk.io/redirect/github/nzakas">@ nzakas</a>)</li>
</ul>
<h4><g-emoji class="g-emoji" alias="microscope"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f52c.png">🔬</g-emoji>
Output optimization</h4>
<ul>
<li><code>babel-plugin-transform-typescript</code>,
<code>babel-preset-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15467"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15467/hovercard">#15467</a>
Optimize TS enums output (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 8</h4>
<ul>
<li>Alexandra Kadykova (<a
href="https://snyk.io/redirect/github/Harpica">@ Harpica</a>)</li>
<li>Anders Møller (<a href="https://snyk.io/redirect/github/amoeller">@
amoeller</a>)</li>
<li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@
babel-bot</a>)</li>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</a>)</li>
<li>Nicholas C. Zakas (<a
href="https://snyk.io/redirect/github/nzakas">@ nzakas</a>)</li>
<li>Nicolò Ribaudo (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a></li>
<li>magic-akari (<a href="https://snyk.io/redirect/github/magic-akari">@
magic-akari</a>)</li>
</ul>
      </li>
      <li>
<b>7.21.0</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.21.0">2023-02-20</a></br><h2>v7.21.0
(2023-02-20)</h2>
<p>Thanks <a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/azizghuloum/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/azizghuloum">@ azizghuloum</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/ehoogeveen-medweb/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>, <a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/fwienber/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/fwienber">@ fwienber</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Lioness100/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Lioness100">@ Lioness100</a> for
your first PRs!</p>
<h4><g-emoji class="g-emoji" alias="rocket"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f680.png">🚀</g-emoji>
New Feature</h4>
<ul>
<li><code>babel-core</code>,
<code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-class-properties</code>,
<code>babel-plugin-proposal-private-methods</code>,
<code>babel-plugin-proposal-private-property-in-object</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15435"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15435/hovercard">#15435</a> feat:
Implement <code>privateFieldsAsSymbols</code> assumption for classes (<a
href="https://snyk.io/redirect/github/fwienber">@ fwienber</a>)</li>
</ul>
</li>
<li><code>babel-helper-create-regexp-features-plugin</code>,
<code>babel-plugin-proposal-regexp-modifiers</code>,
<code>babel-standalone</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15226"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15226/hovercard">#15226</a> feat:
Support regexp modifiers proposal (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-cli</code>, <code>babel-core</code>,
<code>babel-generator</code>,
<code>babel-plugin-transform-destructuring</code>,
<code>babel-plugin-transform-modules-commonjs</code>,
<code>babel-plugin-transform-react-jsx</code>,
<code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15022"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15022/hovercard">#15022</a> feat:
Generate sourcemaps of friendly call frames (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>, <code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15384"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15384/hovercard">#15384</a> [ts]
Support <code>const</code> modifier in type parameters (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>, <code>babel-helpers</code>,
<code>babel-parser</code>,
<code>babel-plugin-proposal-decorators</code>,
<code>babel-plugin-syntax-decorators</code>,
<code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>,
<code>babel-runtime</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15405"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15405/hovercard">#15405</a>
Implement decorators as presented at <code>2023-01</code> TC39 meeting
(<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15114"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15114/hovercard">#15114</a> Parser
option to allow <code>new.target</code> outside functions (<a
href="https://snyk.io/redirect/github/overlookmotel">@
overlookmotel</a>)</li>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15320"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15320/hovercard">#15320</a> Add
<code>annexb: false</code> parser option to disable Annex B (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15283"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15283/hovercard">#15283</a> feat:
Support <code>.cts</code> as configuration file (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>, <code>babel-parser</code>,
<code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15381"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15381/hovercard">#15381</a> [ts]
Support <code>export type * from</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="bug"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji>
Bug Fix</h4>
<ul>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15379"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15379/hovercard">#15379</a>
[ts5.0] Better inlining of constants in enums (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15366"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15366/hovercard">#15366</a>
handling circular/shared structures in deep-clone (<a
href="https://snyk.io/redirect/github/azizghuloum">@
azizghuloum</a>)</li>
</ul>
</li>
<li><code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-class-properties</code>,
<code>babel-plugin-proposal-class-static-block</code>,
<code>babel-plugin-proposal-private-methods</code>,
<code>babel-plugin-transform-classes</code>,
<code>babel-plugin-transform-new-target</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15406"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15406/hovercard">#15406</a>
Preserve class elements comments in class transform (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>,
<code>babel-plugin-transform-flow-comments</code>,
<code>babel-plugin-transform-flow-strip-types</code>,
<code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15414"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15414/hovercard">#15414</a> [ts]
Fix restrictions for optional parameters (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="nail_care"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji>
Polish</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15400"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15400/hovercard">#15400</a>
polish: improve "<code>await</code> as identifier" error in modules (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="house"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji>
Internal</h4>
<ul>
<li><code>babel-core</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15137"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15137/hovercard">#15137</a>
Improve CJS compat with ESM-based <code>@ babel/core</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="microscope"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f52c.png">🔬</g-emoji>
Output optimization</h4>
<ul>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15418"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15418/hovercard">#15418</a> [ts]
Handle exponentiation operator in constant folding (<a
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 11</h4>
<ul>
<li>Abdulaziz Ghuloum (<a
href="https://snyk.io/redirect/github/azizghuloum">@
azizghuloum</a>)</li>
<li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@
babel-bot</a>)</li>
<li>Emanuel Hoogeveen (<a
href="https://snyk.io/redirect/github/ehoogeveen-medweb">@
ehoogeveen-medweb</a>)</li>
<li>Frank Wienberg (<a href="https://snyk.io/redirect/github/fwienber">@
fwienber</a>)</li>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</a>)</li>
<li>Mateusz Burzyński (<a
href="https://snyk.io/redirect/github/Andarist">@ Andarist</a>)</li>
<li>Nicolò Ribaudo (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li><a href="https://snyk.io/redirect/github/Lioness100">@
Lioness100</a></li>
<li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a></li>
<li><a href="https://snyk.io/redirect/github/overlookmotel">@
overlookmotel</a></li>
<li>fisker Cheung (<a href="https://snyk.io/redirect/github/fisker">@
fisker</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/babel/babel/releases">@babel/core
GitHub release notes</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiI4ZDVkNTAxNi0zZGY0LTRhN2QtOGEwZC1mMGYyZDUyMTg4YTgiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjhkNWQ1MDE2LTNkZjQtNGE3ZC04YTBkLWYwZjJkNTIxODhhOCJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/scudette/project/76f4d127-566b-42ef-86f4-bdcbc92b90b4?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/scudette/project/76f4d127-566b-42ef-86f4-bdcbc92b90b4/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/scudette/project/76f4d127-566b-42ef-86f4-bdcbc92b90b4/settings/integration?pkg&#x3D;@babel/core&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"8d5d5016-3df4-4a7d-8a0d-f0f2d52188a8","prPublicId":"8d5d5016-3df4-4a7d-8a0d-f0f2d52188a8","dependencies":[{"name":"@babel/core","from":"7.21.0","to":"7.21.3"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/scudette/project/76f4d127-566b-42ef-86f4-bdcbc92b90b4?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"76f4d127-566b-42ef-86f4-bdcbc92b90b4","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2023-03-14T14:59:44.759Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
@github-actions github-actions bot added the outdated A closed issue/PR that is archived due to age. Recommended to make a new issue label May 23, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
outdated A closed issue/PR that is archived due to age. Recommended to make a new issue PR: New Feature 🚀 A type of pull request used for our changelog categories
Projects
None yet
5 participants