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

Improve source map generation #14967

Merged
merged 11 commits into from Sep 29, 2022
Merged

Conversation

liuxingbaoyu
Copy link
Member

@liuxingbaoyu liuxingbaoyu commented Sep 22, 2022

Q                       A
Fixed Issues? Fixes https://twitter.com/kdy1dev/status/1572480517634924544
Patch: Bug Fix?
Major: Breaking Change? ?
Minor: New Feature?
Tests Added + Pass?
Documentation PR Link
Any Dependency Changes?
License MIT

Please follow the commit one by one to review.

I'm not sure I fully understand the old code, but from the results, the improvement is obvious.
before
after

There are still some issues, input-source-map-multiple-output-sources-complete-replace and several other source map merge test exceptions.
I don't understand why this is and I'd be grateful if anyone could provide guidance!

@babel-bot
Copy link
Collaborator

babel-bot commented Sep 22, 2022

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

this._sourcePosition.filename = originalFilename;
this._sourcePosition.identifierName = originalIdentifierName;
this._disallowedPop.objectReusable = true;
sourcePosition.identifierName =
Copy link
Member

Choose a reason for hiding this comment

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

Can this be unified with _normalizePosition? Seems like we just need to add lineOffset and columnOffset params.

@@ -36,13 +36,13 @@ export function BlockStatement(this: Printer, node: t.BlockStatement) {
this.printSequence(node.body, node, { indent: true });
this.removeTrailingNewline();

this.source("end", node.loc);
this.sourceWithOffset("end", node.loc, 0, -1);
Copy link
Member

Choose a reason for hiding this comment

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

This is to mark the close of the block, but we may add a newline directly below, which'll screw up the marking. I think we need to do this right before the rightBrace() call.

I think we could even extract this out of the if/else, and perform this after printing the brace?

@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
Copy link
Member

Choose a reason for hiding this comment

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

This change is fine. The ; is no longer mapped to a source location, which really don't matter.

@@ -1,15 +1,13 @@
{
"version": 3,
"mappings": "AAAC,KCAD;ACAA,K",
"mappings": "AAAC,KAAG;ACAJ,KAAG",
Copy link
Member

Choose a reason for hiding this comment

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

This change is fine. The ; is mapped to the bar.js file (which fully replaces the input.tsx in the plugin) instead of the input.tsx file. Because nothing refers to the input.tsx file, it's removed from sourcesContent.

@@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "AAAC,KCAD;;AACA,SAASA,GAAT,CAAaC,GAAb,EAAwB;EACpB,MAAM,IAAIC,KAAJ,CAAU,cAAV,CAAN;AACH",
"mappings": "AAAC,KAAG;;ACCJ,SAASA,GAAG,CAACC,GAAW;EACpB,MAAM,IAAIC,KAAK,CAAC,cAAc,CAAC;AACnC",
Copy link
Member

Choose a reason for hiding this comment

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

Changes are fine. Same reasoning with the ; pointing to the same file as the expression.

@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
Copy link
Member

Choose a reason for hiding this comment

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

Same ; change.

@@ -1,13 +1,11 @@
{
"version": 3,
"mappings": "AAAC,KCAD",
"mappings": "AAAC,KAAG",
Copy link
Member

Choose a reason for hiding this comment

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

Same ; change.

@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
Copy link
Member

Choose a reason for hiding this comment

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

Same ; change.

@@ -10,5 +10,5 @@
"sourcesContent": [
"#!env node\n\nconsole.log(\"Hello, world!\");"
],
"version": 3
}
"mappings": "AAAA;AAEAA,OAAO,CAACC,GAAG,CAAC,eAAe,CAAC"
Copy link
Member

Choose a reason for hiding this comment

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

The better maps the ( and ), and includes the same ; change.

@liuxingbaoyu
Copy link
Member Author

Wow! Amazing review, this is extremely helpful! thank you!

@liuxingbaoyu liuxingbaoyu marked this pull request as ready for review September 22, 2022 18:55
@@ -36,15 +36,11 @@ export function BlockStatement(this: Printer, node: t.BlockStatement) {
this.printSequence(node.body, node, { indent: true });
this.removeTrailingNewline();

this.sourceWithOffset("end", node.loc, 0, -1);

if (!this.endsWith(charCodes.lineFeed)) this.newline();
Copy link
Member

Choose a reason for hiding this comment

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

Can you add a test case for this? This should work as an input.

@nicolo-ribaudo
Copy link
Member

@jridgewell What tools do you use to review these changes?

@jridgewell
Copy link
Member

The same https://evanw.github.io/source-map-visualization/ from OP to see visually. I also read the source map to see the segment changes (you might use https://github.com/jridgewell/sourcemap-codec to decode them if you're not familiar with VLQ)

@JLHwung JLHwung added PR: Polish 💅 A type of pull request used for our changelog categories area: sourcemaps labels Sep 26, 2022
Copy link
Contributor

@JLHwung JLHwung left a comment

Choose a reason for hiding this comment

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

For reviewers: the before / after links provided by OP is visualization of a sourcemap generated by running Babel without any transform. In this case, an ideal sourcemap will mirror every token from input to output.

Take this snippet as an example:

export function enable() {}

Before this PR, Babel maps function to function() and enable( to enable. This PR adds more sourcemap segments so that function, enable, ( and ) all correctly map to the output (theirselves respectively).

@liuxingbaoyu Great job! It would be sweet if you can convey such info in the PR description.

@@ -32,6 +30,8 @@ export function ObjectExpression(this: Printer, node: t.ObjectExpression) {
this.space();
}

this.sourceWithOffset("end", node.loc, 0, -1);
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you check if we need the same fix for record expression?

}

this.sourceWithOffset("end", node.loc, 0, -1);
this.rightBrace();
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you also check if we need the same fix for ClassBody, StaticBlock and ModuleExpression?

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Sep 27, 2022

Oh, you found additional improvements!
Actually at first I was mainly to fix the problem mentioned in https://twitter.com/robpalmer2/status/1572487542108463105.
Anyway, ,, ), } pointing to the wrong location is not good, and tsc is not like that.

image
image
image

Later during the fix I found out that this seems to be intentional, maybe to reduce the size of the source map or fix a bug or something, I'm not sure, but I think it shouldn't be necessary for now.
#3183
#3463

To be honest, I don't know what the expectations were when sourcemap was designed, and I even learned that tenser will output something like func(, but since we have expressed it as func, ( in the generated code , then there should be no problem matching them up.

image

@ehoogeveen-medweb
Copy link
Contributor

To be honest, I don't know what the expectations were when sourcemap was designed, and I even learned that tenser will output something like func(, but since we have expressed it as func, ( in the generated code , then there should be no problem matching them up.

I'm a bit confused by your example: Since the keyword function exists in both the input and the output, shouldn't function map to function instead of the ( here?

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Sep 27, 2022

To be honest, I don't know what the expectations were when sourcemap was designed, and I even learned that tenser will output something like func(, but since we have expressed it as func, ( in the generated code , then there should be no problem matching them up.

I'm a bit confused by your example: Since the keyword function exists in both the input and the output, shouldn't function map to function instead of the ( here?

Are you referring to the content of the screenshot? That was the previous behavior (function was normal, but ( was also mapped to function), now it looks like this.
image

@nicolo-ribaudo
Copy link
Member

@robpalme fyi 🙂

@@ -847,7 +847,7 @@ suites.forEach(function (testSuite) {
} else {
const result = run();

if (options.sourceMaps) {
if (options.sourceMaps || options.sourceMap) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: the sourceMap option is synonym of sourceMaps. Since we recommend sourceMaps option in the doc, can you replace the test options using sourceMap?

Copy link
Member Author

Choose a reason for hiding this comment

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

For some reason another place goes wrong when I use sourceMaps, so I've left it out for the sake of convenience, but since you mentioned this, I'll look at it later

@JLHwung JLHwung added PR: Bug Fix 🐛 A type of pull request used for our changelog categories and removed PR: Polish 💅 A type of pull request used for our changelog categories labels Sep 27, 2022
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.

Good job!

@@ -19,4 +19,5 @@ class A {

private [cm]()

{}}
{}
Copy link
Member

Choose a reason for hiding this comment

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

Whops 😬

Copy link
Member Author

Choose a reason for hiding this comment

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

I also thought it was a throwback when I first saw it, but on closer inspection it wasn't.😃

image
image

@nicolo-ribaudo
Copy link
Member

The CI failure is ok; Jest will have to update it after we release this PR.

@nicolo-ribaudo
Copy link
Member

Have all the comments of #14967 (review) been resolved?

@liuxingbaoyu
Copy link
Member Author

Seems yes, but please wait a minute, I found a possibly simple performance optimization, let me try it out.

Comment on lines -446 to 418
_normalizePosition(prop: "start" | "end", loc: Loc, targetObj: SourcePos) {
_normalizePosition(
prop: "start" | "end",
loc: Loc,
lineOffset: number,
columnOffset: number,
) {
const pos = loc[prop];
const target = this._sourcePosition;

targetObj.identifierName =
target.identifierName =
(prop === "start" && loc.identifierName) || undefined;
if (pos) {
targetObj.line = pos.line;
targetObj.column = pos.column;
targetObj.filename = loc.filename;
} else {
targetObj.line = null;
targetObj.column = null;
targetObj.filename = null;
target.line = pos.line + lineOffset;
target.column = pos.column + columnOffset;
target.filename = loc.filename;
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

It will only be set to null if loc!=null && loc[prop]==null, which seems unnecessary.

@nicolo-ribaudo
Copy link
Member

Bye bye ✔️ on main

@nicolo-ribaudo nicolo-ribaudo changed the title fix: Improve source map generation Improve source map generation Sep 29, 2022
@nicolo-ribaudo nicolo-ribaudo merged commit 4f4b450 into babel:main Sep 29, 2022
@nicolo-ribaudo
Copy link
Member

Maybe this should be Polish?

@SimenB
Copy link
Contributor

SimenB commented Oct 3, 2022

Bye bye ✔️ on main

Feel free to ping me when you make a release 🙂

@nicolo-ribaudo
Copy link
Member

Yes! I'm waiting to merge another PR that causes changes in the same files, then I'll release :)

@nicolo-ribaudo nicolo-ribaudo added PR: Polish 💅 A type of pull request used for our changelog categories and removed PR: Bug Fix 🐛 A type of pull request used for our changelog categories labels Oct 3, 2022
cbush pushed a commit to mongodb/docs-realm that referenced this pull request Nov 30, 2022
<h3>Snyk has created this PR to upgrade multiple dependencies.</h3>
👯‍♂ The following dependencies are linked and will therefore be updated
together.
</br></br>
: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.
</br></br>

 Name         | Versions     | Released on
:-------------|:-------------|:-------------
**@babel/core**</br>from 7.19.6 to 7.20.2 | **1 version** ahead of your
current version | **21 days ago**</br>on 2022-11-04
**@babel/preset-env**</br>from 7.19.4 to 7.20.2 | **1 version** ahead of
your current version | **21 days ago**</br>on 2022-11-04



<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>@babel/core</b></summary>
    <ul>
      <li>
<b>7.20.2</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.20.2">2022-11-04</a></br><h2>v7.20.2
(2022-11-04)</h2>
<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-core</code>,
<code>babel-helper-create-class-features-plugin</code>,
<code>babel-helper-module-transforms</code>,
<code>babel-helper-plugin-utils</code>,
<code>babel-helper-simple-access</code>, <code>babel-node</code>,
<code>babel-plugin-transform-block-scoping</code>,
<code>babel-plugin-transform-classes</code>,
<code>babel-plugin-transform-react-constant-elements</code>,
<code>babel-preset-env</code>, <code>babel-standalone</code>,
<code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15124"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15124/hovercard">#15124</a> fix:
<code>@ babel/node</code> repl and enable
<code>no-use-before-define</code> rule (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15121"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15121/hovercard">#15121</a> fix:
<code>tsSatisfiesExpression</code> check with different duplicated
<code>@ babel/types</code> versions (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15094"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15094/hovercard">#15094</a> fix:
<code>parser</code> typings for plugins (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15118"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15118/hovercard">#15118</a>
Improve printing of [no LineTerminator here] with comments (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-plugin-proposal-decorators</code>,
<code>babel-plugin-proposal-object-rest-spread</code>,
<code>babel-plugin-transform-jscript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15113"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15113/hovercard">#15113</a> fix:
wrap anonymous class expression within statement (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-destructuring</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15104"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15104/hovercard">#15104</a> fix:
Destructuring exceptions <code>for ( let { } = 0 ; 0 ; ) </code> (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 3</h4>
<ul>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</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>
</ul>
      </li>
      <li>
<b>7.19.6</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.19.6">2022-10-20</a></br><h2>v7.19.6
(2022-10-20)</h2>
<p>Thanks <a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lomirus/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lomirus">@ lomirus</a> for your
first PR!</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-plugin-proposal-decorators</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15059"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15059/hovercard">#15059</a> Ensure
non-static decorators are applied when a class is instantiated. (<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/15062"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15062/hovercard">#15062</a> Fix
parsing of block comments nested in flow comments (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15052"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15052/hovercard">#15052</a> fix:
improve module block program location tracking (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-runtime</code>,
<code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15060"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15060/hovercard">#15060</a> Ensure
<code>@ babel/runtime-corejs3/core-js/*.js</code> can be imported on
Node.js 17+ (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-preset-env</code>, <code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15043"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15043/hovercard">#15043</a> fix:
preserve this for <code>super.*</code> template tags (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</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-generator</code>,
<code>babel-plugin-transform-flow-comments</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15037"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15037/hovercard">#15037</a>
Improve generation of comments without location (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="memo"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4dd.png">📝</g-emoji>
Documentation</h4>
<ul>
<li><code>babel-standalone</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15055"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15055/hovercard">#15055</a> Fix
missing <code>transformSync</code> function name (<a
href="https://snyk.io/redirect/github/lomirus">@ lomirus</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-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15056"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15056/hovercard">#15056</a> Use
<code>startLoc.index</code> instead of carrying around
<code>start</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li>Other
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15035"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15035/hovercard">#15035</a> chore:
Update yarn 3.2.4 (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4><g-emoji class="g-emoji" alias="running_woman"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2640.png">🏃‍♀️</g-emoji>
Performance</h4>
<ul>
<li><code>babel-core</code>, <code>babel-standalone</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15023"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15023/hovercard">#15023</a> Don't
bundle unnecessary plugins in <code>@ babel/standalone</code> (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 4</h4>
<ul>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</a>)</li>
<li>Lomírus (<a href="https://snyk.io/redirect/github/lomirus">@
lomirus</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>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/babel/babel/releases">@babel/core
GitHub release notes</a>
  </details>
  <details>
    <summary>Package name: <b>@babel/preset-env</b></summary>
    <ul>
      <li>
<b>7.20.2</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.20.2">2022-11-04</a></br><h2>v7.20.2
(2022-11-04)</h2>
<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-core</code>,
<code>babel-helper-create-class-features-plugin</code>,
<code>babel-helper-module-transforms</code>,
<code>babel-helper-plugin-utils</code>,
<code>babel-helper-simple-access</code>, <code>babel-node</code>,
<code>babel-plugin-transform-block-scoping</code>,
<code>babel-plugin-transform-classes</code>,
<code>babel-plugin-transform-react-constant-elements</code>,
<code>babel-preset-env</code>, <code>babel-standalone</code>,
<code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15124"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15124/hovercard">#15124</a> fix:
<code>@ babel/node</code> repl and enable
<code>no-use-before-define</code> rule (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-typescript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15121"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15121/hovercard">#15121</a> fix:
<code>tsSatisfiesExpression</code> check with different duplicated
<code>@ babel/types</code> versions (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15094"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15094/hovercard">#15094</a> fix:
<code>parser</code> typings for plugins (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15118"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15118/hovercard">#15118</a>
Improve printing of [no LineTerminator here] with comments (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-plugin-proposal-decorators</code>,
<code>babel-plugin-proposal-object-rest-spread</code>,
<code>babel-plugin-transform-jscript</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15113"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15113/hovercard">#15113</a> fix:
wrap anonymous class expression within statement (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-destructuring</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15104"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15104/hovercard">#15104</a> fix:
Destructuring exceptions <code>for ( let { } = 0 ; 0 ; ) </code> (<a
href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 3</h4>
<ul>
<li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@
JLHwung</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>
</ul>
      </li>
      <li>
<b>7.19.4</b> - <a
href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.19.4">2022-10-10</a></br><h2>v7.19.4
(2022-10-10)</h2>
<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-plugin-transform-block-scoping</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15019"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15019/hovercard">#15019</a> fix:
check constant violation inside loops (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-helpers</code>,
<code>babel-plugin-proposal-destructuring-private</code>,
<code>babel-plugin-proposal-object-rest-spread</code>,
<code>babel-plugin-transform-destructuring</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14985"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14985/hovercard">#14985</a>
Disallow rest object destructuring of null/undefined (<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-react-jsx-development</code>,
<code>babel-plugin-transform-typescript</code>, <code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14109"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14109/hovercard">#14109</a> Fix:
properly scope variables in TSModuleBlock (<a
href="https://snyk.io/redirect/github/The-x-Theorist">@
The-x-Theorist</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-destructuring</code>,
<code>babel-plugin-transform-react-constant-elements</code>,
<code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15027"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15027/hovercard">#15027</a> fix:
mark <code>var</code> declarations in loops as not constant (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-helper-string-parser</code>, <code>babel-parser</code>,
<code>babel-types</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14964"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14964/hovercard">#14964</a> Never
throw for invalid escapes in tagged templates (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-generator</code>, <code>babel-parser</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14980"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14980/hovercard">#14980</a>
Improve module expression parsing/printing (<a
href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li>
</ul>
</li>
<li><code>babel-plugin-transform-destructuring</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14984"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14984/hovercard">#14984</a> Fix
holes handling in optimized array destructuring (<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-cli</code>, <code>babel-core</code>,
<code>babel-generator</code>,
<code>babel-helper-create-class-features-plugin</code>,
<code>babel-helper-fixtures</code>,
<code>babel-helper-simple-access</code>,
<code>babel-helper-transform-fixture-test-runner</code>,
<code>babel-helpers</code>,
<code>babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression</code>,
<code>babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining</code>,
<code>babel-plugin-external-helpers</code>,
<code>babel-plugin-proposal-async-do-expressions</code>,
<code>babel-plugin-proposal-async-generator-functions</code>,
<code>babel-plugin-proposal-class-properties</code>,
<code>babel-plugin-proposal-class-static-block</code>,
<code>babel-plugin-proposal-decorators</code>,
<code>babel-plugin-proposal-destructuring-private</code>,
<code>babel-plugin-proposal-do-expressions</code>,
<code>babel-plugin-proposal-duplicate-named-capturing-groups-regex</code>,
<code>babel-plugin-proposal-dynamic-import</code>,
<code>babel-plugin-proposal-function-bind</code>,
<code>babel-plugin-proposal-function-sent</code>,
<code>babel-plugin-proposal-json-strings</code>,
<code>babel-plugin-proposal-logical-assignment-operators</code>,
<code>babel-plugin-proposal-nullish-coalescing-operator</code>,
<code>babel-plugin-proposal-object-rest-spread</code>,
<code>babel-plugin-proposal-optional-chaining</code>,
<code>babel-plugin-proposal-partial-application</code>,
<code>babel-plugin-proposal-pipeline-operator</code>,
<code>babel-plugin-proposal-private-methods</code>,
<code>babel-plugin-proposal-private-property-in-object</code>,
<code>babel-plugin-proposal-record-and-tuple</code>,
<code>babel-plugin-syntax-typescript</code>,
<code>babel-plugin-transform-arrow-functions</code>,
<code>babel-plugin-transform-async-to-generator</code>,
<code>babel-plugin-transform-block-scoping</code>,
<code>babel-plugin-transform-classes</code>,
<code>babel-plugin-transform-computed-properties</code>,
<code>babel-plugin-transform-destructuring</code>,
<code>babel-plugin-transform-duplicate-keys</code>,
<code>babel-plugin-transform-exponentiation-operator</code>,
<code>babel-plugin-transform-flow-comments</code>,
<code>babel-plugin-transform-flow-strip-types</code>,
<code>babel-plugin-transform-for-of</code>,
<code>babel-plugin-transform-function-name</code>,
<code>babel-plugin-transform-jscript</code>,
<code>babel-plugin-transform-modules-amd</code>,
<code>babel-plugin-transform-modules-commonjs</code>,
<code>babel-plugin-transform-modules-systemjs</code>,
<code>babel-plugin-transform-modules-umd</code>,
<code>babel-plugin-transform-new-target</code>,
<code>babel-plugin-transform-object-super</code>,
<code>babel-plugin-transform-parameters</code>,
<code>babel-plugin-transform-proto-to-assign</code>,
<code>babel-plugin-transform-react-constant-elements</code>,
<code>babel-plugin-transform-react-inline-elements</code>,
<code>babel-plugin-transform-react-jsx-development</code>,
<code>babel-plugin-transform-react-jsx-self</code>,
<code>babel-plugin-transform-react-jsx</code>,
<code>babel-plugin-transform-react-pure-annotations</code>,
<code>babel-plugin-transform-regenerator</code>,
<code>babel-plugin-transform-runtime</code>,
<code>babel-plugin-transform-shorthand-properties</code>,
<code>babel-plugin-transform-spread</code>,
<code>babel-plugin-transform-strict-mode</code>,
<code>babel-plugin-transform-template-literals</code>,
<code>babel-plugin-transform-typeof-symbol</code>,
<code>babel-plugin-transform-typescript</code>,
<code>babel-plugin-transform-unicode-escapes</code>,
<code>babel-preset-env</code>, <code>babel-preset-react</code>,
<code>babel-preset-typescript</code>,
<code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>,
<code>babel-runtime</code>, <code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14979"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14979/hovercard">#14979</a>
Improve comments generation (<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-helper-fixtures</code>,
<code>babel-helper-transform-fixture-test-runner</code>,
<code>babel-plugin-transform-destructuring</code>,
<code>babel-plugin-transform-modules-commonjs</code>,
<code>babel-traverse</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14967"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14967/hovercard">#14967</a>
Improve source map generation (<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>Other
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/15001"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/15001/hovercard">#15001</a> Run
test262 again (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
<li><code>babel-compat-data</code>, <code>babel-preset-env</code>
<ul>
<li><a href="https://snyk.io/redirect/github/babel/babel/pull/14976"
data-hovercard-type="pull_request"
data-hovercard-url="/babel/babel/pull/14976/hovercard">#14976</a>
Internally rename <code>proposal-*</code> to <code>transform-*</code> in
preset-env (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 5</h4>
<ul>
<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>Nicolò Ribaudo (<a
href="https://snyk.io/redirect/github/nicolo-ribaudo">@
nicolo-ribaudo</a>)</li>
<li>Sneh Khatri (<a
href="https://snyk.io/redirect/github/The-x-Theorist">@
The-x-Theorist</a>)</li>
<li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@
liuxingbaoyu</a></li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/babel/babel/releases">@babel/preset-env
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=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJlMmVmY2U2Zi04MDVjLTQwNzMtOWIyMS0wYWIzOGU2NzYzNWUiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImUyZWZjZTZmLTgwNWMtNDA3My05YjIxLTBhYjM4ZTY3NjM1ZSJ9fQ=="
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;pkg&#x3D;@babel/preset-env&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"e2efce6f-805c-4073-9b21-0ab38e67635e","prPublicId":"e2efce6f-805c-4073-9b21-0ab38e67635e","dependencies":[{"name":"@babel/core","from":"7.19.6","to":"7.20.2"},{"name":"@babel/preset-env","from":"7.19.4","to":"7.20.2"}],"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":"2022-11-04T18:51:11.563Z"},"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 Jan 3, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 3, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area: sourcemaps outdated A closed issue/PR that is archived due to age. Recommended to make a new issue pkg: generator PR: Polish 💅 A type of pull request used for our changelog categories
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants