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
[ts5.0] Better inlining of constants in enums #15379
[ts5.0] Better inlining of constants in enums #15379
Conversation
Values[Values["Second"] = 11] = "Second"; | ||
Values[Values["Third"] = 12] = "Third"; | ||
})(Values || (Values = {})); | ||
var Routes; // "/data/invoices" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An incorrect comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can mark the inner comment c
as a trailing comment of the enum member c
here:
babel/packages/babel-parser/src/parser/comments.ts
Lines 165 to 168 in 41aac8b
if (this.input.charCodeAt(commentStart - 1) === charCodes.comma) { | |
// If a commentWhitespace follows a comma and the containingNode allows | |
// list structures with trailing comma, merge it to the trailingComment | |
// of the last non-null list element |
But for comment a
and b
, Babel parser does not differentiate the provided example with
enum A {
a,
// a
b,
// b
c
}
so I am afraid there aren't much we can do here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Yes, I found that too while doing this.
The babel parser does this even for plain objects.
This is expected, but not ideal, and I haven't figured out how to do it better, as it might mean a breaking change to the parser.
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/53956/ |
(function (Values) { | ||
Values[Values["First"] = 10] = "First"; | ||
Values[Values["Second"] = 11] = "Second"; | ||
Values[Values["Third"] = 12] = "Third"; | ||
})(Values || (Values = {})); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also want to optimize the enum layout.
Since the snapshot changes a lot, I will put it in another PR.
Now I aligned the inline behavior to ts5.0, but there is a known issue where it won't work when |
value = t.numericLiteral(constValue); | ||
return { | ||
data: seen, | ||
nodes: path.get("members").map(memberPath => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this is not an array of nodes, could we use another name? Like enumValues
@@ -1,10 +1,12 @@ | |||
import { template } from "@babel/core"; | |||
import { template, types } from "@babel/core"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: does types as t
work? Or does it conflict?
} | ||
return value; | ||
} | ||
case "TemplateLiteral": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the difference between the code in this case
and just using path.evaluate()
? It seems to me that this code doesn't access the ENUMS
weakmap, so they should be equivalent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The main inconsistency comes from evaluateIdentifier
, and overall, path.evaluate()
will be more aggressive, while ts will be safer. However I guess ts officially supported const var
should always work fine.
function evaluateIdentifier(path: NodePath) { | ||
if (path.isIdentifier()) { | ||
const binding = path.scope.getBinding(path.node.name); | ||
if (binding?.kind === "const") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to check if the binding is const
? If there are constantViolations
, .evaluate()
already returns a non-confident result.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ts will only inline const
variables, and .evaluate()
will treat unassigned variables as confident.
Originally I was doing this to avoid potential bugs due to variable reference information anomalies, as our scope information is often unreliable, but now I'm not sure if this is necessary.
This would avoid #15379 (comment) if inlining all unassigned variables, but would be somewhat inconsistent with ts.
I can't make a choice, what do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the behavior of inlining all the variables different at runtime from TS? If not, we can inline all of them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes.
https://www.typescriptlang.org/play?declaration=false&isolatedModules=true&ts=5.0.0-dev.20230130#code/MYewdgzgLgBAQgQwgUwGoIDYFdkwLwwCMADANwCwAUKJLAAoBOyAZgJYAe+MARAPQAmCKAm4Vq4aDGRgsAWxjpsyCDADeVGJpgAxVg0kFEKRTgA0m3ryLENWgMrIa-c1tdvLRQrc0AVABZ6-G7Brh6EAExUAL5UNJLScjAASiBYUMpq3jB0CAxQKgQABgAkqowsHFG8AA65+YUu7lZ8gsI1dRDcWQCSYABuIKzAGUWl5WzsVaz9g8MQhRbNAkIIvNMDQ8pdlDGUGMiwRmiYOOFcJGJxsAnyJspn6pSuuvqwhkjHSuEuYTZP9o5wM4QsEwl5-r4AgwgiDQVYItEgA
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's the PR in the ts repository.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I lean towards always inlining them anyway, since the only observable difference is for code where TS would report an error anyway (i.e. when all the enum members must have an initializer but some don't), but let's also see what @JLHwung thinks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also found another inconsistency, I opened microsoft/TypeScript#52510.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @nicolo-ribaudo. Generally the transform plugin should assume the AST is correct, otherwise there would have been a parsing error. And in this case Babel parser should ensure that we don't have enum members without initializers.
9d45aba
to
648e63a
Compare
Now this PR is very similar to ts, except we will inline some "seemingly constant" variables. I ended up using |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
648e63a
to
2de2f5d
Compare
2de2f5d
to
b13f9da
Compare
<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=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?utm_source=github&utm_medium=referral&page=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=@babel/core&utm_source=github&utm_medium=referral&page=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>
<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=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/scudette/project/76f4d127-566b-42ef-86f4-bdcbc92b90b4/settings/integration?utm_source=github&utm_medium=referral&page=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=@babel/core&utm_source=github&utm_medium=referral&page=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>
microsoft/TypeScript#50528