-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
Conversation
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 = |
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.
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); |
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.
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", |
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.
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", |
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.
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", |
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.
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", |
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.
Same ;
change.
@@ -1,13 +1,11 @@ | |||
{ | |||
"version": 3, | |||
"mappings": "AAAC,KCAD", | |||
"mappings": "AAAC,KAAG", |
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.
Same ;
change.
@@ -1,7 +1,11 @@ | |||
{ | |||
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB", | |||
"version": 3, | |||
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC", |
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.
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" |
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 better maps the (
and )
, and includes the same ;
change.
Wow! Amazing review, this is extremely helpful! thank you! |
3b24750
to
d90f6ec
Compare
@@ -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(); |
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.
Can you add a test case for this? This should work as an input.
4a80406
to
28cc7de
Compare
packages/babel-generator/test/fixtures/sourcemaps/arrow-function-compact/options.json
Show resolved
Hide resolved
@jridgewell What tools do you use to review these changes? |
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) |
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.
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); |
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.
Can you check if we need the same fix for record expression?
this.token(endToken); |
} | ||
|
||
this.sourceWithOffset("end", node.loc, 0, -1); | ||
this.rightBrace(); |
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.
Can you also check if we need the same fix for ClassBody
, StaticBlock
and ModuleExpression
?
Oh, you found additional improvements! 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. To be honest, I don't know what the expectations were when sourcemap was designed, and I even learned that |
I'm a bit confused by your example: Since the keyword |
@robpalme fyi 🙂 |
@@ -847,7 +847,7 @@ suites.forEach(function (testSuite) { | |||
} else { | |||
const result = run(); | |||
|
|||
if (options.sourceMaps) { | |||
if (options.sourceMaps || options.sourceMap) { |
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: the sourceMap
option is synonym of sourceMaps
. Since we recommend sourceMaps
option in the doc, can you replace the test options using sourceMap
?
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.
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
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.
Good job!
@@ -19,4 +19,5 @@ class A { | |||
|
|||
private [cm]() | |||
|
|||
{}} | |||
{} |
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.
Whops 😬
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 CI failure is ok; Jest will have to update it after we release this PR. |
Have all the comments of #14967 (review) been resolved? |
Seems yes, but please wait a minute, I found a possibly simple performance optimization, let me try it out. |
_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; | ||
} | ||
} |
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.
It will only be set to null if loc!=null && loc[prop]==null
, which seems unnecessary.
Bye bye ✔️ on main |
Maybe this should be Polish? |
Feel free to ping me when you make a release 🙂 |
Yes! I'm waiting to merge another PR that causes changes in the same files, then I'll release :) |
<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=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&pkg=@babel/preset-env&utm_source=github&utm_medium=referral&page=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>
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!