This repository has been archived by the owner on Sep 28, 2023. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.14.29
->0.14.31
Release Notes
evanw/esbuild
v0.14.31
Compare Source
Add support for parsing "optional variance annotations" from TypeScript 4.7 (#2102)
The upcoming version of TypeScript now lets you specify
in
and/orout
on certain type parameters (specifically only on a type alias, an interface declaration, or a class declaration). These modifiers control type paramemter covariance and contravariance:With this release, esbuild can now parse these new type parameter modifiers. This feature was contributed by @magic-akari.
Improve support for
super()
constructor calls in nested locations (#2134)In JavaScript, derived classes must call
super()
somewhere in theconstructor
method before being able to accessthis
. Class public instance fields, class private instance fields, and TypeScript constructor parameter properties can all potentially cause code which usesthis
to be inserted into the constructor body, which must be inserted after thesuper()
call. To make these insertions straightforward to implement, the TypeScript compiler doesn't allow callingsuper()
somewhere other than in a root-level statement in the constructor body in these cases.Previously esbuild's class transformations only worked correctly when
super()
was called in a root-level statement in the constructor body, just like the TypeScript compiler. But with this release, esbuild should now generate correct code as long as the call tosuper()
appears anywhere in the constructor body:Add support for the new
@container
CSS rule (#2127)This release adds support for
@container
in CSS files. This means esbuild will now pretty-print and minify these rules better since it now better understands the internal structure of these rules:This was contributed by @yisibl.
Avoid CSS cascade-dependent keywords in the
font-family
property (#2135)In CSS,
initial
,inherit
, andunset
are CSS-wide keywords which means they have special behavior when they are specified as a property value. For example, whilefont-family: 'Arial'
(as a string) andfont-family: Arial
(as an identifier) are the same,font-family: 'inherit'
(as a string) uses the font family namedinherit
butfont-family: inherit
(as an identifier) inherits the font family from the parent element. This means esbuild must not unquote these CSS-wide keywords (anddefault
, which is also reserved) during minification to avoid changing the meaning of the minified CSS.The current draft of the new CSS Cascading and Inheritance Level 5 specification adds another concept called cascade-dependent keywords of which there are two:
revert
andrevert-layer
. This release of esbuild guards against unquoting these additional keywords as well to avoid accidentally breaking pages that use a font with the same name:This fix was contributed by @yisibl.
v0.14.30
Compare Source
Change the context of TypeScript parameter decorators (#2147)
While TypeScript parameter decorators are expressions, they are not evaluated where they exist in the code. They are moved to after the class declaration and evaluated there instead. Specifically this TypeScript code:
becomes this JavaScript code:
This has several consequences:
Whether
await
is allowed inside a decorator expression or not depends on whether the class declaration itself is in anasync
context or not. With this release, you can now useawait
inside a decorator expression when the class declaration is either inside anasync
function or is at the top-level of an ES module and top-level await is supported. Note that the TypeScript compiler currently has a bug regarding this edge case: Parameter decorators use incorrect async/await context, generated code has syntax error microsoft/TypeScript#48509.Also while TypeScript currently allows
await
to be used like this inasync
functions, it doesn't currently allowyield
to be used like this in generator functions. It's not yet clear whether this behavior withyield
is a bug or by design, so I haven't made any changes to esbuild's handling ofyield
inside decorator expressions in this release.Since the scope of a decorator expression is the scope enclosing the class declaration, they cannot access private identifiers. Previously this was incorrectly allowed but with this release, esbuild no longer allows this. Note that the TypeScript compiler currently has a bug regarding this edge case: Decorators broken with private fields, generated code has syntax error microsoft/TypeScript#48515.
Since the scope of a decorator expression is the scope enclosing the class declaration, identifiers inside parameter decorator expressions should never be resolved to a parameter of the enclosing method. Previously this could happen, which was a bug with esbuild. This bug no longer happens in this release.
Specifically previous versions of esbuild generated the following incorrect JavaScript (notice the use of
arg2
):This release now generates the following correct JavaScript (notice the use of
arg
):Fix some obscure edge cases with
super
property accessThis release fixes the following obscure problems with
super
when targeting an older JavaScript environment such as--target=es6
:The compiler could previously crash when a lowered
async
arrow function contained a class with a field initializer that used asuper
property access:The compiler could previously generate incorrect code when a lowered
async
method of a derived class contained a nested class with a computed class member involving asuper
property access on the derived class:The compiler could previously generate incorrect code when a default-exported class contained a
super
property access inside a lowered static private class field:Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.