chore(deps): update dependency esbuild to v0.27.1 #2699

Merged
group_2759636_bot_1c34751f7eccad09e089ac15ee7bd902 merged 1 commits from renovate/esbuild-0.x into main 2025-12-04 07:34:16 +00:00
group_2759636_bot_1c34751f7eccad09e089ac15ee7bd902 commented 2025-12-03 21:06:23 +00:00 (Migrated from gitlab.com)

This MR contains the following updates:

Package Change Age Confidence
esbuild 0.27.0 -> 0.27.1 age confidence

Release Notes

evanw/esbuild (esbuild)

v0.27.1

Compare Source

  • Fix bundler bug with var nested inside if (#​4348)

    This release fixes a bug with the bundler that happens when importing an ES module using require (which causes it to be wrapped) and there's a top-level var inside an if statement without being wrapped in a { ... } block (and a few other conditions). The bundling transform needed to hoist these var declarations outside of the lazy ES module wrapper for correctness. See the issue for details.

  • Fix minifier bug with for inside try inside label (#​4351)

    This fixes an old regression from version v0.21.4. Some code was introduced to move the label inside the try statement to address a problem with transforming labeled for await loops to avoid the await (the transformation involves converting the for await loop into a for loop and wrapping it in a try statement). However, it introduces problems for cross-compiled JVM code that uses all three of these features heavily. This release restricts this transform to only apply to for loops that esbuild itself generates internally as part of the for await transform. Here is an example of some affected code:

    // Original code
    d: {
      e: {
        try {
          while (1) { break d }
        } catch { break e; }
      }
    }
    
    // Old output (with --minify)
    a:try{e:for(;;)break a}catch{break e}
    
    // New output (with --minify)
    a:e:try{for(;;)break a}catch{break e}
    
  • Inline IIFEs containing a single expression (#​4354)

    Previously inlining of IIFEs (immediately-invoked function expressions) only worked if the body contained a single return statement. Now it should also work if the body contains a single expression statement instead:

    // Original code
    const foo = () => {
      const cb = () => {
        console.log(x())
      }
      return cb()
    }
    
    // Old output (with --minify)
    const foo=()=>(()=>{console.log(x())})();
    
    // New output (with --minify)
    const foo=()=>{console.log(x())};
    
  • The minifier now strips empty finally clauses (#​4353)

    This improvement means that finally clauses containing dead code can potentially cause the associated try statement to be removed from the output entirely in minified builds:

    // Original code
    function foo(callback) {
      if (DEBUG) stack.push(callback.name);
      try {
        callback();
      } finally {
        if (DEBUG) stack.pop();
      }
    }
    
    // Old output (with --minify --define:DEBUG=false)
    function foo(a){try{a()}finally{}}
    
    // New output (with --minify --define:DEBUG=false)
    function foo(a){a()}
    
  • Allow tree-shaking of the Symbol constructor

    With this release, calling Symbol is now considered to be side-effect free when the argument is known to be a primitive value. This means esbuild can now tree-shake module-level symbol variables:

    // Original code
    const a = Symbol('foo')
    const b = Symbol(bar)
    
    // Old output (with --tree-shaking=true)
    const a = Symbol("foo");
    const b = Symbol(bar);
    
    // New output (with --tree-shaking=true)
    const b = Symbol(bar);
    

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 has been generated by Renovate Bot.

This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [esbuild](https://github.com/evanw/esbuild) | [`0.27.0` -> `0.27.1`](https://renovatebot.com/diffs/npm/esbuild/0.27.0/0.27.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.27.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.27.0/0.27.1?slim=true) | --- ### Release Notes <details> <summary>evanw/esbuild (esbuild)</summary> ### [`v0.27.1`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0271) [Compare Source](https://github.com/evanw/esbuild/compare/v0.27.0...v0.27.1) - Fix bundler bug with `var` nested inside `if` ([#&#8203;4348](https://github.com/evanw/esbuild/issues/4348)) This release fixes a bug with the bundler that happens when importing an ES module using `require` (which causes it to be wrapped) and there's a top-level `var` inside an `if` statement without being wrapped in a `{ ... }` block (and a few other conditions). The bundling transform needed to hoist these `var` declarations outside of the lazy ES module wrapper for correctness. See the issue for details. - Fix minifier bug with `for` inside `try` inside label ([#&#8203;4351](https://github.com/evanw/esbuild/issues/4351)) This fixes an old regression from [version v0.21.4](https://github.com/evanw/esbuild/releases/v0.21.4). Some code was introduced to move the label inside the `try` statement to address a problem with transforming labeled `for await` loops to avoid the `await` (the transformation involves converting the `for await` loop into a `for` loop and wrapping it in a `try` statement). However, it introduces problems for cross-compiled JVM code that uses all three of these features heavily. This release restricts this transform to only apply to `for` loops that esbuild itself generates internally as part of the `for await` transform. Here is an example of some affected code: ```js // Original code d: { e: { try { while (1) { break d } } catch { break e; } } } // Old output (with --minify) a:try{e:for(;;)break a}catch{break e} // New output (with --minify) a:e:try{for(;;)break a}catch{break e} ``` - Inline IIFEs containing a single expression ([#&#8203;4354](https://github.com/evanw/esbuild/issues/4354)) Previously inlining of IIFEs (immediately-invoked function expressions) only worked if the body contained a single `return` statement. Now it should also work if the body contains a single expression statement instead: ```js // Original code const foo = () => { const cb = () => { console.log(x()) } return cb() } // Old output (with --minify) const foo=()=>(()=>{console.log(x())})(); // New output (with --minify) const foo=()=>{console.log(x())}; ``` - The minifier now strips empty `finally` clauses ([#&#8203;4353](https://github.com/evanw/esbuild/issues/4353)) This improvement means that `finally` clauses containing dead code can potentially cause the associated `try` statement to be removed from the output entirely in minified builds: ```js // Original code function foo(callback) { if (DEBUG) stack.push(callback.name); try { callback(); } finally { if (DEBUG) stack.pop(); } } // Old output (with --minify --define:DEBUG=false) function foo(a){try{a()}finally{}} // New output (with --minify --define:DEBUG=false) function foo(a){a()} ``` - Allow tree-shaking of the `Symbol` constructor With this release, calling `Symbol` is now considered to be side-effect free when the argument is known to be a primitive value. This means esbuild can now tree-shake module-level symbol variables: ```js // Original code const a = Symbol('foo') const b = Symbol(bar) // Old output (with --tree-shaking=true) const a = Symbol("foo"); const b = Symbol(bar); // New output (with --tree-shaking=true) const b = Symbol(bar); ``` </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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zMy4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzMuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
group_2759636_bot_1c34751f7eccad09e089ac15ee7bd902 commented 2025-12-03 21:06:26 +00:00 (Migrated from gitlab.com)

restored source branch renovate/esbuild-0.x

restored source branch `renovate/esbuild-0.x`
group_2759636_bot_1c34751f7eccad09e089ac15ee7bd902 commented 2025-12-03 21:06:28 +00:00 (Migrated from gitlab.com)

mentioned in issue #49

mentioned in issue #49
argoyle (Migrated from gitlab.com) merged commit 812ea12873 into main 2025-12-04 07:34:16 +00:00
argoyle commented 2025-12-04 07:34:17 +00:00 (Migrated from gitlab.com)

mentioned in commit 812ea12873

mentioned in commit 812ea1287393fef7a29de515e76c0f9e694267c5
Sign in to join this conversation.