-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Improve source map generation #14967
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
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.
| 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?
| { | ||
| "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.
| { | ||
| "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.
| { | ||
| "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.
| { | ||
| "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.
| { | ||
| "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.
| { | ||
| "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.
| ], | ||
| "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
|
|
||
| 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) |
JLHwung
left a 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.
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.
| 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 🙂 |
| 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
nicolo-ribaudo
left a 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.
Good job!
| 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. |
|
|
||
| /** | ||
| * Allow printers to disable the default location-reset behavior of the | ||
| * sourcemap output, so that certain printers can be sure that the | ||
| * "end" location that they set is actually treated as the end position. | ||
| */ | ||
| _disallowPop(prop: "start" | "end", loc: Loc) { | ||
| if (!loc) return; | ||
|
|
||
| const disallowedPop = this._disallowedPop; | ||
|
|
||
| this._normalizePosition(prop, loc, disallowedPop); | ||
|
|
||
| disallowedPop.objectReusable = false; | ||
| } | ||
|
|
||
| _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 <[email protected]>







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-replaceand several other source map merge test exceptions.I don't understand why this is and I'd be grateful if anyone could provide guidance!