Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat: Generate sourcemaps of friendly call frames #15022

Merged
merged 14 commits into from Feb 18, 2023

Conversation

liuxingbaoyu
Copy link
Member

@liuxingbaoyu liuxingbaoyu commented Oct 5, 2022

Q                       A
Fixed Issues? Fixes #14907, Fixes #14635, Fixes #5408
Patch: Bug Fix?
Major: Breaking Change?
Minor: New Feature?
Tests Added + Pass?
Documentation PR Link babel/website#2720
Any Dependency Changes?
License MIT

There is a small performance optimization, since indentation will never have an identifier Name.
I've only updated some of the necessary tests, because a rebase is definitely required before merging.

@liuxingbaoyu liuxingbaoyu added PR: Polish 💅 A type of pull request used for our changelog categories pkg: generator area: sourcemaps labels Oct 5, 2022
@babel-bot
Copy link
Collaborator

babel-bot commented Oct 5, 2022

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

Copy link
Member

@jridgewell jridgewell left a comment

Choose a reason for hiding this comment

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

Can we have minimal tests for (some of):

  • Function decl with id

  • Function decl without id (default export)

  • Method with identifier name

  • Method with computed identifier name

  • Method with computed string name

  • Function expression

  • Function expression as property

  • Arrow function and no params

  • Arrow function and 1 param without quotes

  • Arrow function and 1 param with quotes

  • Arrow function and multiple params

  • Arrow function as property

withIdentifierName(identifierName: string, cb: () => void): void {
const pos = this._buf._sourcePosition;
pos.identifierName = identifierName;
cb();
Copy link
Member

Choose a reason for hiding this comment

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

These closure allocations are probably more expensive that the property access, no? Could we just queue the name, and have it unset after making the next mark?

@liuxingbaoyu
Copy link
Member Author

Is it such a test? The result is as follows, I'm not sure if the method needs to do anything.

link

Comment on lines +8 to +7
[fn]: function () {},
["fn"]: function () {},
Copy link
Member

Choose a reason for hiding this comment

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

Technically, we can mark this one as fn

Comment on lines 18 to 24
() => {};

x => {};

x => {};

(x, y, z) => {};
Copy link
Member

Choose a reason for hiding this comment

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

These should be var x = … form, since we could mark the arrows with names (but only if it has a ().

@liuxingbaoyu
Copy link
Member Author

Directly generated looks fine, not sure how it goes when merging source maps, probably not so good.

@jridgewell
Copy link
Member

not sure how it goes when merging source maps, probably not so good.

Merging will will take the original's name if it exists, but will take the generated's name if it does not. Should be fine.

nicolo-ribaudo
nicolo-ribaudo previously approved these changes Oct 6, 2022
@@ -23,7 +22,7 @@ type QueueItem = {
repeat: number;
line: number | undefined;
column: number | undefined;
identifierName: string | undefined;
identifierName: undefined; // Not used, it always undefined.
Copy link
Member

Choose a reason for hiding this comment

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

Can't we just delete it if it's always undefined?

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 pass it as Loc and ts will complain, plus I personally tend to keep the object shape.

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 6, 2022

What if the input source map has no identifier name for (?
But this should be rare, babel is always in front of the minimization.

@jridgewell
Copy link
Member

What if the input source map has no identifier name for (?

It falls back to the generated sourcemap's name.

@liuxingbaoyu
Copy link
Member Author

Will this lead to inconsistencies? If the input source map has identifier names for function names, but not for (, it might end up generating different names, which is a bit confusing. I can't think of a good way to fix this though.

@jridgewell
Copy link
Member

Yes, that's a possibility. If the identifier is marked in the sourcemap with a name, and the ( is not, then the identifier will be mapped to the original name but the ( will be mapped to the generated name.

This might mean we should not create a mark for the (, and instead allow the identifier's segment to span both the identifier and the (. That will work for stack frames, and merging won't see the ( mark explicitly, only the identifier. Because of that, the merged output won't have a ( mark, which again works fine for stack frames.

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 6, 2022

For vars and methods though, this might not look good, like ["fn"]: function () {}, maybe moving the source merge from core to generator would be better for this problem.

Or we could pass the source map to the generator to get the identifier names, but not sure how that would affect performance.

@nicolo-ribaudo
Copy link
Member

How do the devtools look like in these cases?

  • Original source map without identfier name for (, behavior before this PR
  • Original source map without identfier name for (, behavior with this PR
  • Original source map with identfier name for (, behavior with this PR

@jridgewell
Copy link
Member

For vars and methods though, this might not look good, like ["fn"]: function () {}, maybe moving the source merge from core to generator would be better for this problem.

That's a great idea. It'll actually help with memory, because we don't need to create a full sourcemap just to throw it away during merge. We can perform the lookups for original source/line/column/name before marking our map, making it just a single map.

How do the devtools look like in these cases?

Devtools don't handle multiple source maps of a single file, so "original" is confusing here. There's only the map that's liked via sourceMappingUrl comment, and it uses whatever identifier name is provided for the current mapping.

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 10, 2022

I'm trying to do what I said above, but I'm running into some issues.

https://github.com/babel/babel/blob/main/packages/babel-core/src/transformation/file/merge-map.ts#L4-L48
Here we removed sourceRoot, I'm not sure what to do in TraceMap.

packages\babel-cli\test\fixtures\babel\filename-sourcemap --out-file --source-maps inline\out-files\script2.js In this test, the previous behavior seems to be according to the input sourcemap to create the fragment, and now it's based on what's generated after, which looks fine to me, but I'm not sure.(#14209 (review) looks like it was introduced here)

input
before output
after output1

As above, what should we do with what cannot be found in the input source map? I'm completely clueless about the scenario when code is an object. Currently I'm adding the input code to the sourcemap as well, what could be wrong?
microsoft/vscode-js-debug#1419
Also I'm using a fragment as an identifier in this PR, it seems that if we map as per the input source map, the code of this PR won't work as expected.

I'm submitting what I've already done, any guidance would be greatly appreciated!

Copy link
Member

@jridgewell jridgewell left a comment

Choose a reason for hiding this comment

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

Here we removed sourceRoot, I'm not sure what to do in TraceMap.

We don't need to do anything special. Because the GenMapping holds it separate, it'll just work.

In this test, the previous behavior seems to be according to the input sourcemap to create the fragment, and now it's based on what's generated after, which looks fine to me, but I'm not sure.(#14209 (review) looks like it was introduced here)

The new output is fine. The input's map only has 4 (badly placed) mappings. The old behavior during merging would only keep mappings that could map directly into one of those 4 locations, and then perform deduplication with contiguous segments that point to the same.

Eg, arr.map, there should be 3 mappings (arr, ., map). With the old code, we performed a lookup and they all pointed to the same segment. There's no point in having 3 mappings to that same position, so we ignored the latter.

This is only a problem because the input map was poorly generated (I don't actually know where it came from). If the input is high-fidelity, then this would have given better results before.

As above, what should we do with what cannot be found in the input source map? I'm completely clueless about the scenario when code is an object. Currently I'm adding the input code to the sourcemap as well, what could be wrong?

I mentioned this during one of the inline comments.

Also I'm using a fragment as an identifier in this PR, it seems that if we map as per the input source map, the code of this PR won't work as expected.

Fragment?

@@ -327,6 +331,12 @@ class Printer {
this._buf._sourcePosition.identifierName = identifierName;
}

getIdentifierName(pos: Pos): string | null {
if (this._inputMap && pos) {
return originalPositionFor(this._inputMap, pos).name;
Copy link
Member

Choose a reason for hiding this comment

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

Can't we just leave this till the mark call? We're already performing the originalPositionFor call there. I think we can just store the name name we think, then prioritize the original's name during mark. I think we could store the loc?

packages/babel-generator/src/buffer.ts Outdated Show resolved Hide resolved
if (id) {
if (id.type === "Identifier") {
name =
this.getIdentifierName(id.loc?.start) ||
Copy link
Member

Choose a reason for hiding this comment

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

I think these calls are unnecessary. The ( won't map to the identifier name. Could we instead store the loc?

packages/babel-generator/src/source-map.ts Outdated Show resolved Hide resolved
Comment on lines 136 to 147
if (!original) {
original = {
line: line,
column: column,
};
}
Copy link
Member

Choose a reason for hiding this comment

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

There are two paths to hit this:

  1. The original mapping is not contained the input map.
  2. There's no input map.

I think we should only do this for 2). For 1), if the original mapping couldn't be found, then that means that this position is sourceless, and can't point to a real location. So, it's just generated, not original.

See also, Terser's behavior

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 15, 2022

Thanks for your review, very helpful!

Also I'm using a fragment as an identifier in this PR, it seems that if we map as per the input source map, the code of this PR won't work as expected.

Fragment?

I use computeColumnSpans in source-map to calculate the generated identifier code text length.
It's going to go wrong in the before output case.
image
The x identifier name is mapped to the entire generated expression.
When the debugger renames an identifier it treats the entire expression as one identifier, which is not expected.
Is this form of source map common? I'm not sure if I should use computeColumnSpans.

Copy link
Member

@jridgewell jridgewell left a comment

Choose a reason for hiding this comment

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

When the debugger renames an identifier it treats the entire expression as one identifier, which is not expected.

This is because the input sourcemap is very low fidelity. A good input map would have given proper outputs. The input var foo = () => 4 has no relation with the output arr.map(…), they share nothing that could reasonably be mapped. Honestly, the output here looks entirely generated, and there isn't anywhere for the map to point to in the original. It should probably be empty.

Is this form of source map common? I'm not sure if I should use computeColumnSpans.

I don't implement it for my packages because I've never needed it. And it's not guaranteed to work to work the way you want. The only information available in a sourcemap are the segment positions. This essentially gives you the range that a segment covers by looking at the generated column of the next segment in the map, but who knows what that segment represents?

Eg, esbuild's output would have a foo = range, and not a foo. Terser would give foo=.

The easiest sourcemaps to generate just mark the beginnings of identifiers, and completely ignore any syntax. The debugging experience will be better with } and now the ( marked. But really, nothing else is strictly necessary. So there's no guarantee that the whitespace/syntax/X directly following an identifier name will be marked.

if (this._inputMap) {
if (identifierNamePos) {
const name = originalPositionFor(this._inputMap, {
line,
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't this be using identifierNamePos.line?

Copy link
Member Author

Choose a reason for hiding this comment

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

Oops this is a bug.


source = originalMapping.source;

if (source && originalMapping.line != null) {
Copy link
Member

Choose a reason for hiding this comment

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

I think source implies originalMapping.line != null and vice-versa.

column,
}).name;
if (name) {
identifierName = name;
Copy link
Member

Choose a reason for hiding this comment

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

Nit: If we're prioritizing the below lookup's name, we can skip this if that one found a name.

Copy link
Member Author

Choose a reason for hiding this comment

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

But the original position of the parentheses will be pointed to the identifier, what do you think of this?

Copy link
Member

Choose a reason for hiding this comment

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

I'm not suggesting we take the original line/column from this lookup, but that we skip this lookup entirely.

// This is the lookup for this mark
const originalMapping = originalPositionFor(this._inputMap, {
  line,
  column,
});

if (originalMapping.name) {
  // If the we found a name, nothing else needs to be done
  // Maybe we're marking a `(` and the input map already had a name attached there,
  // or we're marking a `(` and the sourcemap spanned a `foo(`,
  // or we're marking an identifier, etc.
  identifierName = originalMapping.name;
} else if (identifierNamePos) {
  // We're trying to mark a `(` (as that's the only thing that provides
  // an identifierNamePos currently), and we the AST had an identifier attached.
  // Lookup it's original name.
  const originalIdentifierMapping = originalPositionFor(this._inputMap, identifierNamePos);
  if (originalIdentifierMapping.name) {
    identifierName = originalIdentifierMapping.name;
  }
} else {
  // noop, just use the passed in identifierName
}

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's all really great! I also left these amazing comments in the code.

}

// Fast path for multi-line
if (maybeNewline && identifierNamePos && this._map?._inputMap) {
Copy link
Member

Choose a reason for hiding this comment

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

What's this block used for?

Copy link
Member Author

Choose a reason for hiding this comment

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

We'll call _mark on each line, so we can avoid having to look up the original identifier name multiple times, maybe always search here?

Copy link
Member

Choose a reason for hiding this comment

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

Oh, we shouldn't mark a name for the start of a line. We can just pass nulls for the while loop

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 15, 2022

Thank you so much for this information!

It looks like reality is a little bit bad.
microsoft/vscode-js-debug#1383
I had this problem initially, vscode-js-debug was using a regular expression to extract identifiers in the generated code.
Our enum couldn't be previewed in debug because . was not included in the regular expression. (flags.xxxxx).
So I modified the logic to extract the identifier based on a span (or mapping?) based on babel's source map.
Here I'm assuming a span (or mapping?) with an identifier name that can point the start and end to an identifier in the originalgenerated code.
It looks wrong now, which is kind of bad, there doesn't seem to be a better way to extract the identifier in the generated code without parsing the AST.

@jridgewell
Copy link
Member

jridgewell commented Oct 15, 2022

It looks wrong now, which is kind of bad, there doesn't seem to be a better way to extract the identifier in the generated code without parsing the AST.

In general, no, there's not a better way to do this. But in this very specific case, we could fix babel's output. It looks like we're generating a single marking at the of _ and another marking at the ) following, making the range span the entire _scopeflags.SCOPE_FUNCTION. But really, _scopeflags. is generated code and shouldn't be marked.

Actually, we try to mark the generated _scopeflags, ., SCOPE_FUNCTION, all pointing to the same source position. gen-mapping's maybeAddMapping will coalesce these into a single segment spanning all of them. So we could switch back to the regular addMapping, and keep all 3 markings (so the regex would identify the _scopeflags -> SCOPE_FUNCTION rename, and SCOPE_FUNCTION -> SCOPE_FUNCTION). Or, we could mark the _scopeflags, . as generated code (don't call t.inherits, so that they don't have a .loc).

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Oct 15, 2022

Thanks for your advice!
Sorry, maybe this topic is not so closely related to babel, just related or something I came across while debugging babel.

I'm not sure what the real logic of vscode-js-debug is, as far as I can guess:
It will go through all mappings and extract the ones with mapping.name, and get the generated code, rename it.
For example SCOPE_FUNCTION->_scopeflags.SCOPE_FUNCTION.
It finds that the _scopeflags.SCOPE_FUNCTION mapping has an identifier name SCOPE_FUNCTION, and then renames SCOPE_FUNCTION with _scopeflags.SCOPE_FUNCTION with scope promotion.
Previously it would do a regular expression match against _scopeflags.SCOPE_FUNCTION, extracting an identifier from it. This should be done to filter output like esbuild (a mapping of generated code has other tokens or spaces after the identifier).
So it extracts _scopeflags, which leads to renaming SCOPE_FUNCTION in the source code to _scopeflags, which cannot be previewed normally.
(SCOPE_FUNCTION->_scopeflags)

I opened a PR microsoft/vscode-js-debug#1419 to use the start and end of the mapping of the entire generated code.
This works great for babel's output, but in this PR I found that the output for esbuild is wrong, accidentally including other tokens or spaces.
So I'm wondering if there is any way to fix this.
This doesn't seem to be specified in the specification of the source map, and matching by regex is a bit inaccurate, which is a little bad.

I'm currently thinking that maybe it's possible to determine if the source map, like babel, always treats the identifier as a single mapping without any other characters, by checking for tokens or spaces in all the generated code mappings.

@liuxingbaoyu liuxingbaoyu self-assigned this Nov 9, 2022
@nicolo-ribaudo
Copy link
Member

The failures in the E2E Jest tests are ok, it's diff about the generated source maps. I will merge this PR as the last one before releasing, to avoid having CI red while merging all the others.

@liuxingbaoyu liuxingbaoyu changed the title feat: generate sourcemaps of friendly call frames feat: Generate sourcemaps of friendly call frames Feb 18, 2023
@stefcameron
Copy link

After upgrading to @babel/core@7.21.0, I'm seeing error stacks like this when using devtool: eval-source-map in my Webpack config (which was fine in 7.20.12):

ERROR in ../packages/tour/DOCS.mdx
Module build failed (from ../node_modules/babel-loader/lib/index.js):
TypeError: /packages/tour/DOCS.mdx: Cannot read properties of undefined (reading '0')
    at new SourceMap (/node_modules/@babel/generator/lib/source-map.js:29:99)
    at new Generator (/node_modules/@babel/generator/lib/index.js:13:35)
    at generate (/node_modules/@babel/generator/lib/index.js:88:15)
    at generateCode (/node_modules/@babel/core/lib/transformation/file/generate.js:47:39)
    at run (/node_modules/@babel/core/lib/transformation/index.js:39:33)
    at run.next (<anonymous>)
    at transform (/node_modules/@babel/core/lib/transform.js:22:41)
    at transform.next (<anonymous>)
    at step (/node_modules/gensync/index.js:261:32)
    at /node_modules/gensync/index.js:273:13
    at async.call.result.err.err (/node_modules/gensync/index.js:223:11)
 @ ./src/app/pages/pages.js 103:36-119
 @ ./src/app/components/App.js 25:0-46 311:35-47 313:27-39
 @ ./src/index.js 13:0-43 67:23-26

That seems to map to this bit of code in source-map.js (from node_modules):

      if (resolvedSources.length) {
        for (let i = 0; i < resolvedSources.length; i++) {
          (0, _genMapping.setSourceContent)(map, resolvedSources[i], this._inputMap.sourcesContent[i]);  // <- this line
        }
      }

If I remove the devtool configuration, the exception goes away (I presume, since the build is no longer generating source maps). My build system is quite complex; I'll try to provide more details if necessary.

@liuxingbaoyu
Copy link
Member Author

@stefcameron Thank you for your report! Can you show opts.inputSourceMap?
image

@stefcameron
Copy link

@liuxingbaoyu You're welcome! Here is one sample for opts.inputSourceMap:

{
  "version": 3,
  "sources": [
    "/packages/core/DOCS.mdx"
  ],
  "names": [
    "props",
    "components",
    "corePkgPropDefs",
    "propBoxModes",
    "EXPORT",
    "coreDomExportDefs",
    "coreLayerExportDefs",
    "coreStyleExportDefs",
    "coreUtilExportDefs",
    "coreExportDefs"
  ],
  "mappings": ";;OACO,YAAY;OACZ,eAAe;QAEb,SAAS,mBAAoB;OAA6B,qBAAqB;OACX,oBAAoB;OACtB,uBAAuB;OACjB,yBAAyB;OACrB,yBAAyB;OACzB,wBAAwB;;;;;;;;;;;;kBAGzFA,MAAMC;;;gBAEvB;;;gBAEC;;gBAEJ;;gBAEA;;;;;;;;oBAYgB;cACNC;;;gBAGN;;gBAEJ;;;oBAIgB;YACRC,aAAaC;cACXC;;;gBAGN;;gBAEJ;;;oBAIgB;YACRF,aAAaC;cACXE;;;gBAGN;;gBAEJ;;;oBAIgB;YACRH,aAAaC;cACXG;;;gBAGN;;iBAEJ;;kBAA6B;UAA4B;;gBAEzD;;;oBAIgB;YACRJ,aAAaC;cACXI;;;gBAGN;;gBAEJ;;;oBAIgB;YACRL,aAAaC;cACXK;;;gBAGP;;kBAEoBT,MAAMC",
  "file": "/packages/core/DOCS.mdx"
}

@EvHaus
Copy link

EvHaus commented Feb 21, 2023

I'm seeing the same issue as @stefcameron with the rehype-video dependency:

TypeError: /myproject/node_modules/rehype-video/lib/index.js: Cannot read properties of undefined (reading '0')

      10 | import rehypeRaw from 'rehype-raw';
      11 | import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
    > 12 | import rehypeVideo from 'rehype-video';
         | ^
      13 | import remarkBreaks from 'remark-breaks';
      14 | import remarkGemoji from 'remark-gemoji';
      15 | import remarkGfm from 'remark-gfm';

      at new SourceMap (../../node_modules/@babel/core/node_modules/@babel/generator/src/source-map.ts:61:42)
      at new Generator (../../node_modules/@babel/core/node_modules/@babel/generator/src/index.ts:24:35)
      at generate (../../node_modules/@babel/core/node_modules/@babel/generator/src/index.ts:271:15)
      at generateCode (../../node_modules/@babel/core/src/transformation/file/generate.ts:35:22)
      at run (../../node_modules/@babel/core/src/transformation/index.ts:59:48)
          at run.next (<anonymous>)
      at transform (../../node_modules/@babel/core/src/transform.ts:29:20)
          at transform.next (<anonymous>)
      at evaluateSync (../../node_modules/gensync/index.js:251:28)
      at sync (../../node_modules/gensync/index.js:89:14)
      at fn (../../node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:97:14)
      at transformSync (../../node_modules/@babel/core/src/transform.ts:66:52)
      at ScriptTransformer.transformSource (../../node_modules/@jest/transform/build/ScriptTransformer.js:519:31)
      at ScriptTransformer._transformAndBuildScript (../../node_modules/@jest/transform/build/ScriptTransformer.js:648:40)
      at ScriptTransformer.transform (../../node_modules/@jest/transform/build/ScriptTransformer.js:700:19)
      at Object.require (src/Markdown.tsx:12:1)
      at Object.require (src/index.ts:1:1)
      at Object.require (__tests__/comments.test.tsx:3:1)

Given that this is an npm dependency, I think it should be easy to reproduce.

Looking at the code for rehype-video I'm not sure what the problem is.

@liuxingbaoyu
Copy link
Member Author

liuxingbaoyu commented Feb 21, 2023

@EvHaus This is fixed, just need to update babel!
#15444 (comment)!

@stefcameron
Copy link

@EvHaus #15444 was opened, and then appears to be fixed with #15445, will be published in Babel v7.21.1

cbush pushed a commit to mongodb/docs-realm that referenced this pull request Mar 17, 2023
<h3>Snyk has created this PR to upgrade @babel/core from 7.20.12 to
7.21.0.</h3>

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

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


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

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

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

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

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

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

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

---------

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

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

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


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

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

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

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

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

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

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

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Comment on lines +64 to +68
# Temporarily ignore this test that is failing due to source maps changes in
# Babel 7.21.0.
# Re-enable it once Jest updates their snapshots to the latest Babel version.
rm -f packages/jest-transform/src/__tests__/ScriptTransformer.test.ts
rm -f packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap
Copy link
Contributor

@SimenB SimenB Apr 14, 2023

Choose a reason for hiding this comment

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

@nicolo-ribaudo incoming via jestjs/jest#14073, FWIW

(feel free to ping me whenever these change - happy to be quick to update in Jest as needed 🙂 )

@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 Jul 15, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jul 15, 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: New Feature 🚀 A type of pull request used for our changelog categories
Projects
None yet
8 participants