This release fixes a panic due to a null pointer that could happen when esbuild inlines a doubly-nested identity function and the final result is empty. It was fixed by emitting the value undefined in this case, which avoids the panic. This case must be rare since it hasn't come up until now. Here is an example of code that previously triggered the panic (which only happened when minifying):
When transforming nested CSS to non-nested CSS, esbuild is supposed to filter out pseudo-elements such as ::placeholder for correctness. The CSS nesting specification says the following:
The nesting selector cannot represent pseudo-elements (identical to the behavior of the ':is()' pseudo-class). We’d like to relax this restriction, but need to do so simultaneously for both ':is()' and '&', since they’re intentionally built on the same underlying mechanisms.
However, it seems like this behavior is different for nested at-rules such as @supports, which do work with pseudo-elements. So this release modifies esbuild's behavior to now take that into account:
/* Original code */::placeholder{color:red;body&{color:green}@​supports(color:blue){color:blue}}/* Old output (with --supported:nesting=false) */::placeholder{color:red;}body:is(){color:green;}@​supports(color:blue){{color:blue;}}/* New output (with --supported:nesting=false) */::placeholder{color:red;}body:is(){color:green;}@​supports(color:blue){::placeholder{color:blue;}}
Configuration
📅Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕Ignore: Close this MR and you won't be reminded about this update again.
If you want to rebase/retry this MR, check this box
This MR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [esbuild](https://github.com/evanw/esbuild) | [`0.25.9` -> `0.25.10`](https://renovatebot.com/diffs/npm/esbuild/0.25.9/0.25.10) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>evanw/esbuild (esbuild)</summary>
### [`v0.25.10`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#02510)
[Compare Source](https://github.com/evanw/esbuild/compare/v0.25.9...v0.25.10)
- Fix a panic in a minification edge case ([#​4287](https://github.com/evanw/esbuild/issues/4287))
This release fixes a panic due to a null pointer that could happen when esbuild inlines a doubly-nested identity function and the final result is empty. It was fixed by emitting the value `undefined` in this case, which avoids the panic. This case must be rare since it hasn't come up until now. Here is an example of code that previously triggered the panic (which only happened when minifying):
```js
function identity(x) { return x }
identity({ y: identity(123) })
```
- Fix `@supports` nested inside pseudo-element ([#​4265](https://github.com/evanw/esbuild/issues/4265))
When transforming nested CSS to non-nested CSS, esbuild is supposed to filter out pseudo-elements such as `::placeholder` for correctness. The [CSS nesting specification](https://www.w3.org/TR/css-nesting-1/) says the following:
> The nesting selector cannot represent pseudo-elements (identical to the behavior of the ':is()' pseudo-class). We’d like to relax this restriction, but need to do so simultaneously for both ':is()' and '&', since they’re intentionally built on the same underlying mechanisms.
However, it seems like this behavior is different for nested at-rules such as `@supports`, which do work with pseudo-elements. So this release modifies esbuild's behavior to now take that into account:
```css
/* Original code */
::placeholder {
color: red;
body & { color: green }
@​supports (color: blue) { color: blue }
}
/* Old output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@​supports (color: blue) {
{
color: blue;
}
}
/* New output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@​supports (color: blue) {
::placeholder {
color: blue;
}
}
```
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMTYuMyIsInVwZGF0ZWRJblZlciI6IjQxLjExNi4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This MR contains the following updates:
0.25.9->0.25.10Release Notes
evanw/esbuild (esbuild)
v0.25.10Compare Source
Fix a panic in a minification edge case (#4287)
This release fixes a panic due to a null pointer that could happen when esbuild inlines a doubly-nested identity function and the final result is empty. It was fixed by emitting the value
undefinedin this case, which avoids the panic. This case must be rare since it hasn't come up until now. Here is an example of code that previously triggered the panic (which only happened when minifying):Fix
@supportsnested inside pseudo-element (#4265)When transforming nested CSS to non-nested CSS, esbuild is supposed to filter out pseudo-elements such as
::placeholderfor correctness. The CSS nesting specification says the following:However, it seems like this behavior is different for nested at-rules such as
@supports, which do work with pseudo-elements. So this release modifies esbuild's behavior to now take that into account:Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this MR and you won't be reminded about this update again.
This MR has been generated by Renovate Bot.
mentioned in issue #49
mentioned in commit
d00b8d59e8