Commit bab5748
authored
chore(deps): update dependency esbuild to v0.28.2 (#156)
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [esbuild](https://redirect.github.com/evanw/esbuild) | [`0.28.1` →
`0.28.2`](https://renovatebot.com/diffs/npm/esbuild/0.28.1/0.28.2) |

|

|
---
### Release Notes
<details>
<summary>evanw/esbuild (esbuild)</summary>
###
[`v0.28.2`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0282)
[Compare
Source](https://redirect.github.com/evanw/esbuild/compare/v0.28.1...v0.28.2)
- Fix tree shaking bug due to TypeScript import alias
([#​4507](https://redirect.github.com/evanw/esbuild/issues/4507))
This release fixes a bug that could cause esbuild to incorrectly
tree-shake imports that are used in a TypeScript type alias under
certain circumstances. Affected code uses a TypeScript-specific `import`
assignment and looks something like this:
```ts
import Base from './dep.js';
import Alias = Base.SomeType;
```
- Fix CSS minification bug involving `&`
([#​4497](https://redirect.github.com/evanw/esbuild/issues/4497))
This release fixes a bug where esbuild's CSS minifier incorrectly
removed a `&` when it was unsafe to do so. Here is an example:
```css
/* Original code */
.a .b {
& .b:not(& .c) {
color: red;
}
}
/* Old output (with --minify) */
.a .b{.b:not(& .c){color:red}}
/* New output (with --minify) */
.a .b{& .b:not(& .c){color:red}}
```
This should match `<span class="a"><span class="b"><span
class="b">yes</span></span></span>` but not `<span class="a"><span
class="b">no</span></span>`. The old output incorrectly matched both.
- Avoid overwriting input files without `--allow-overwrite`
([#​4484](https://redirect.github.com/evanw/esbuild/issues/4484))
For example: `esbuild input.js --outfile=input.js` tells esbuild to
overwrite `input.js` with the output of running esbuild on it. This was
supposed to already be prevented by default, but it accidentally
regressed in version 0.17.0 and apparently didn't have any test
coverage. The error message was being printed but the input file was
still being overwritten. Oops.
This release puts the original behavior back. With this release, esbuild
should now actually avoid overwriting input files unless
`--allow-overwrite` is explicitly present. This is done by not writing
out any files when a build error is encountered.
- Fix incorrect code generated when using top-level await
([#​4498](https://redirect.github.com/evanw/esbuild/issues/4498))
Previously esbuild could generate code containing a syntax error in
complex scenarios involving top-level await used in a dependency cycle.
The problem was a missing `async` on one or more module wrapper
closures. With this release, esbuild now uses a fixed-point iteration
algorithm to correctly annotate all dependencies in the cycle as needing
an `async` module wrapper.
- Fix a minification bug with lowered logical assignment operators
([#​4508](https://redirect.github.com/evanw/esbuild/issues/4508))
This release fixes a bug that could cause esbuild to generate incorrect
code for logical assignment operators when lowering them to an older
target environment. Specifically the lowering process requires
duplicating the left-hand side, but esbuild incorrectly failed to count
the duplicate as a new usage when the left-hand side is an identifier.
That then caused the minifier to believe that the left-hand side was
only used once and could attempt to incorrectly inline an initializer
into the first usage. This bug has now been fixed:
```js
// Original code
function foo() {
let x
bar(x ||= {})
}
// Old output (with --minify-syntax --target=es6)
function foo() {
bar(void 0 || (x = {}));
}
// New output (with --minify-syntax --target=es6)
function foo() {
let x;
bar(x || (x = {}));
}
```
- Fix a potential deadlock when the JavaScript API is used incorrectly
([#​4503](https://redirect.github.com/evanw/esbuild/issues/4503),
[#​4506](https://redirect.github.com/evanw/esbuild/pull/4506))
The JavaScript API runs the native esbuild executable as a long-lived
child process and communicates with it over stdin/stdout/stderr. Each
API request is asynchronous and the executable stays open as long as it
has work to do, which is as long as either stdin is still open (meaning
there may be more API requests) or there are currently requests being
processed.
Previously esbuild's tracking of outstanding API requests missed
decrementing a reference count in an edge case where esbuild's
JavaScript API was used incorrectly and the API request returned an
error. This could in some cases cause esbuild's native executable to
exit with an error message about a deadlock. This release fixes the
reference counting bug.
This fix was submitted by
[@​ZuBB](https://redirect.github.com/ZuBB).
- Handle target collisions
([#​4509](https://redirect.github.com/evanw/esbuild/issues/4509))
It's possible to specify the same target engine multiple times, such as
with `--target=chrome1,chrome99`. This edge case wasn't anticipated and
previously took the last version for the duplicated target engine
instead of the minimum version (so `chrome99` in this case instead of
`chrome1`). With this release, esbuild will now pick the minimum version
between all duplicated target engines.
- Force `.mp3` files to use the `audio/mpeg` MIME type
([#​4485](https://redirect.github.com/evanw/esbuild/issues/4485))
MIME type detection for esbuild's data URLs uses Go's built-in MIME type
detection, which is based on the [MIME sniffing
standard](https://mimesniff.spec.whatwg.org/). This works correctly for
MP3 files that start with the byte sequence `ID3`, which is commonly the
case. However, it's possible to construct valid MP3 files that do not
start with `ID3`, and that perhaps Go's built-in MIME type detection
doesn't implement the "Signature for MP3 without ID3" part of the
algorithm. This results in some `.mp3` files incorrectly using the
`application/octet-stream` MIME type instead of `audio/mpeg`. With this
release, esbuild will now always use the `audio/mpeg` MIME type for
files ending in `.mp3`.
- Add a new TypeScript syntax warning
TypeScript 7 turned some previously-valid TypeScript syntax into a
syntax error because it was confusing. TypeScript 6 accepts `1 + 2 as
number * 3` as valid syntax but confusingly converts it to `(1 + 2) * 3`
instead of the more intuitive conversion to `1 + (2 * 3)`. This syntax
is now an error in TypeScript 7+. With this release, esbuild will now
warn about the use of this syntax:
```ts
▲ [WARNING] Operator "*" should not directly follow a TypeScript type
cast after the "+" operator [confusing-typescript-cast]
example.ts:1:28:
1 │ console.log(1 + 2 as number * 3)
╵ ^
This is a syntax error in newer versions of TypeScript because the type
cast has unintuitive
precedence in this case. Surround the inner expression in parentheses to
silence this warning:
example.ts:1:12:
1 │ console.log(1 + 2 as number * 3)
│ ~~~~~~~~~~~~~~~
╵ ( )
```
See
[microsoft/TypeScript#63527](https://redirect.github.com/microsoft/TypeScript/issues/63527)
for more information.
- Add support for formatting errors for Visual Studio
([#​4460](https://redirect.github.com/evanw/esbuild/issues/4460))
Visual Studio has a specific style that it expects log messages to be in
for them to show up in the UI when esbuild is run as a custom build
step. The current log style that esbuild uses doesn't conform to this
specific style.
With this release, esbuild has a new log style for Visual Studio (and
other tools in the MSBuild ecosystem) that can be enabled with
`--log-style=visualstudio`. Here is an example log message in this
style:
```
$ esbuild example.ts --log-style=visualstudio
/Users/evan/dev/esbuild/example.ts(1,29): warning ES0010: Operator "*"
should not directly follow a TypeScript type cast after the "+" operator
```
This log style is also available via the JS and Go APIs, and can now be
used with the existing `formatMessages` API.
- Fix a bug with CSS gamut mapping
([#​4488](https://redirect.github.com/evanw/esbuild/pull/4488))
Due to a typo, the fallback colors generated for CSS colors outside of
the sRGB gamut weren't correct. This release fixes the generated colors
to use the intended algorithm.
This fix was submitted by
[@​chatman-media](https://redirect.github.com/chatman-media).
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **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.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Lendable/sloth).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>1 parent 0b427ad commit bab5748
1 file changed
Lines changed: 107 additions & 107 deletions
0 commit comments