chore(deps): update dependency esbuild to v0.14.22 #1549

Merged
konrad merged 1 commits from renovate/esbuild-0.x into main 2022-02-17 11:16:15 +00:00
Member

This PR contains the following updates:

Package Type Update Change
esbuild devDependencies patch 0.14.21 -> 0.14.22

Release Notes

evanw/esbuild

v0.14.22

Compare Source

  • Preserve whitespace for token lists that look like CSS variable declarations (#​2020)

    Previously esbuild removed the whitespace after the CSS variable declaration in the following CSS:

    /* Original input */
    @​supports (--foo: ){html{background:green}}
    
    /* Previous output */
    @​supports (--foo:){html{background:green}}
    

    However, that broke rendering in Chrome as it caused Chrome to ignore the entire rule. This did not break rendering in Firefox and Safari, so there's a browser bug either with Chrome or with both Firefox and Safari. In any case, esbuild now preserves whitespace after the CSS variable declaration in this case.

  • Ignore legal comments when merging adjacent duplicate CSS rules (#​2016)

    This release now generates more compact minified CSS when there are legal comments in between two adjacent rules with identical content:

    /* Original code */
    a { color: red }
    /* @​preserve */
    b { color: red }
    
    /* Old output (with --minify) */
    a{color:red}/* @​preserve */b{color:red}
    
    /* New output (with --minify) */
    a,b{color:red}/* @​preserve */
    
  • Block onResolve and onLoad until onStart ends (#​1967)

    This release changes the semantics of the onStart callback. All onStart callbacks from all plugins are run concurrently so that a slow plugin doesn't hold up the entire build. That's still the case. However, previously the only thing waiting for the onStart callbacks to finish was the end of the build. This meant that onResolve and/or onLoad callbacks could sometimes run before onStart had finished. This was by design but violated user expectations. With this release, all onStart callbacks must finish before any onResolve and/or onLoad callbacks are run.

  • Add a self-referential default export to the JS API (#​1897)

    Some people try to use esbuild's API using import esbuild from 'esbuild' instead of import * as esbuild from 'esbuild' (i.e. using a default import instead of a namespace import). There is no default export so that wasn't ever intended to work. But it would work sometimes depending on which tools you used and how they were configured so some people still wrote code this way. This release tries to make that work by adding a self-referential default export that is equal to esbuild's module namespace object.

    More detail: The published package for esbuild's JS API is in CommonJS format, although the source code for esbuild's JS API is in ESM format. The original ESM code for esbuild's JS API has no export named default so using a default import like this doesn't work with Babel-compatible toolchains (since they respect the semantics of the original ESM code). However, it happens to work with node-compatible toolchains because node's implementation of importing CommonJS from ESM broke compatibility with existing conventions and automatically creates a default export which is set to module.exports. This is an unfortunate compatibility headache because it means the default import only works sometimes. This release tries to fix this by explicitly creating a self-referential default export. It now doesn't matter if you do esbuild.build(), esbuild.default.build(), or esbuild.default.default.build() because they should all do the same thing. Hopefully this means people don't have to deal with this problem anymore.

  • Handle write errors when esbuild's child process is killed (#​2007)

    If you type Ctrl+C in a terminal when a script that uses esbuild's JS library is running, esbuild's child process may be killed before the parent process. In that case calls to the write() syscall may fail with an EPIPE error. Previously this resulted in an uncaught exception because esbuild didn't handle this case. Starting with this release, esbuild should now catch these errors and redirect them into a general The service was stopped error which should be returned from whatever top-level API calls were in progress.

  • Better error message when browser WASM bugs are present (#​1863)

    Safari's WebAssembly implementation appears to be broken somehow, at least when running esbuild. Sometimes this manifests as a stack overflow and sometimes as a Go panic. Previously a Go panic resulted in the error message Can't find variable: fs but this should now result in the Go panic being printed to the console. Using esbuild's WebAssembly library in Safari is still broken but now there's a more helpful error message.

    More detail: When Go panics, it prints a stack trace to stderr (i.e. file descriptor 2). Go's WebAssembly shim calls out to node's fs.writeSync() function to do this, and it converts calls to fs.writeSync() into calls to console.log() in the browser by providing a shim for fs. However, Go's shim code stores the shim on window.fs in the browser. This is undesirable because it pollutes the global scope and leads to brittle code that can break if other code also uses window.fs. To avoid this, esbuild shadows the global object by wrapping Go's shim. But that broke bare references to fs since the shim is no longer stored on window.fs. This release now stores the shim in a local variable named fs so that bare references to fs work correctly.

  • Undo incorrect dead-code elimination with destructuring (#​1183)

    Previously esbuild eliminated these statements as dead code if tree-shaking was enabled:

    let [a] = {}
    let { b } = null
    

    This is incorrect because both of these lines will throw an error when evaluated. With this release, esbuild now preserves these statements even when tree shaking is enabled.

  • Update to Go 1.17.7

    The version of the Go compiler used to compile esbuild has been upgraded from Go 1.17.6 to Go 1.17.7, which contains a few compiler and security bug fixes.


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.


  • If you want to rebase/retry this PR, check this box.

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [esbuild](https://github.com/evanw/esbuild) | devDependencies | patch | [`0.14.21` -> `0.14.22`](https://renovatebot.com/diffs/npm/esbuild/0.14.21/0.14.22) | --- ### Release Notes <details> <summary>evanw/esbuild</summary> ### [`v0.14.22`](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md#&#8203;01422) [Compare Source](https://github.com/evanw/esbuild/compare/v0.14.21...v0.14.22) - Preserve whitespace for token lists that look like CSS variable declarations ([#&#8203;2020](https://github.com/evanw/esbuild/issues/2020)) Previously esbuild removed the whitespace after the CSS variable declaration in the following CSS: ```css /* Original input */ @&#8203;supports (--foo: ){html{background:green}} /* Previous output */ @&#8203;supports (--foo:){html{background:green}} ``` However, that broke rendering in Chrome as it caused Chrome to ignore the entire rule. This did not break rendering in Firefox and Safari, so there's a browser bug either with Chrome or with both Firefox and Safari. In any case, esbuild now preserves whitespace after the CSS variable declaration in this case. - Ignore legal comments when merging adjacent duplicate CSS rules ([#&#8203;2016](https://github.com/evanw/esbuild/issues/2016)) This release now generates more compact minified CSS when there are legal comments in between two adjacent rules with identical content: ```css /* Original code */ a { color: red } /* @&#8203;preserve */ b { color: red } /* Old output (with --minify) */ a{color:red}/* @&#8203;preserve */b{color:red} /* New output (with --minify) */ a,b{color:red}/* @&#8203;preserve */ ``` - Block `onResolve` and `onLoad` until `onStart` ends ([#&#8203;1967](https://github.com/evanw/esbuild/issues/1967)) This release changes the semantics of the `onStart` callback. All `onStart` callbacks from all plugins are run concurrently so that a slow plugin doesn't hold up the entire build. That's still the case. However, previously the only thing waiting for the `onStart` callbacks to finish was the end of the build. This meant that `onResolve` and/or `onLoad` callbacks could sometimes run before `onStart` had finished. This was by design but violated user expectations. With this release, all `onStart` callbacks must finish before any `onResolve` and/or `onLoad` callbacks are run. - Add a self-referential `default` export to the JS API ([#&#8203;1897](https://github.com/evanw/esbuild/issues/1897)) Some people try to use esbuild's API using `import esbuild from 'esbuild'` instead of `import * as esbuild from 'esbuild'` (i.e. using a default import instead of a namespace import). There is no `default` export so that wasn't ever intended to work. But it would work sometimes depending on which tools you used and how they were configured so some people still wrote code this way. This release tries to make that work by adding a self-referential `default` export that is equal to esbuild's module namespace object. More detail: The published package for esbuild's JS API is in CommonJS format, although the source code for esbuild's JS API is in ESM format. The original ESM code for esbuild's JS API has no export named `default` so using a default import like this doesn't work with Babel-compatible toolchains (since they respect the semantics of the original ESM code). However, it happens to work with node-compatible toolchains because node's implementation of importing CommonJS from ESM broke compatibility with existing conventions and automatically creates a `default` export which is set to `module.exports`. This is an unfortunate compatibility headache because it means the `default` import only works sometimes. This release tries to fix this by explicitly creating a self-referential `default` export. It now doesn't matter if you do `esbuild.build()`, `esbuild.default.build()`, or `esbuild.default.default.build()` because they should all do the same thing. Hopefully this means people don't have to deal with this problem anymore. - Handle `write` errors when esbuild's child process is killed ([#&#8203;2007](https://github.com/evanw/esbuild/issues/2007)) If you type Ctrl+C in a terminal when a script that uses esbuild's JS library is running, esbuild's child process may be killed before the parent process. In that case calls to the `write()` syscall may fail with an `EPIPE` error. Previously this resulted in an uncaught exception because esbuild didn't handle this case. Starting with this release, esbuild should now catch these errors and redirect them into a general `The service was stopped` error which should be returned from whatever top-level API calls were in progress. - Better error message when browser WASM bugs are present ([#&#8203;1863](https://github.com/evanw/esbuild/issues/1863)) Safari's WebAssembly implementation appears to be broken somehow, at least when running esbuild. Sometimes this manifests as a stack overflow and sometimes as a Go panic. Previously a Go panic resulted in the error message `Can't find variable: fs` but this should now result in the Go panic being printed to the console. Using esbuild's WebAssembly library in Safari is still broken but now there's a more helpful error message. More detail: When Go panics, it prints a stack trace to stderr (i.e. file descriptor 2). Go's WebAssembly shim calls out to node's `fs.writeSync()` function to do this, and it converts calls to `fs.writeSync()` into calls to `console.log()` in the browser by providing a shim for `fs`. However, Go's shim code stores the shim on `window.fs` in the browser. This is undesirable because it pollutes the global scope and leads to brittle code that can break if other code also uses `window.fs`. To avoid this, esbuild shadows the global object by wrapping Go's shim. But that broke bare references to `fs` since the shim is no longer stored on `window.fs`. This release now stores the shim in a local variable named `fs` so that bare references to `fs` work correctly. - Undo incorrect dead-code elimination with destructuring ([#&#8203;1183](https://github.com/evanw/esbuild/issues/1183)) Previously esbuild eliminated these statements as dead code if tree-shaking was enabled: ```js let [a] = {} let { b } = null ``` This is incorrect because both of these lines will throw an error when evaluated. With this release, esbuild now preserves these statements even when tree shaking is enabled. - Update to Go 1.17.7 The version of the Go compiler used to compile esbuild has been upgraded from Go 1.17.6 to Go 1.17.7, which contains a few [compiler and security bug fixes](https://github.com/golang/go/issues?q=milestone%3AGo1.17.7+label%3ACherryPickApproved). </details> --- ### 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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box. --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
renovate added the
dependencies
label 2022-02-17 08:06:05 +00:00
Member

Hi renovate!

Thank you for creating a PR!

I've deployed the changes of this PR on a preview environment under this URL: https://1549-renovate-esbuild-0-x--vikunja-frontend-preview.netlify.app

You can use this url to view the changes live and test them out.
You will need to manually connect this to an api running somehwere. The easiest to use is https://try.vikunja.io/.

Have a nice day!

Beep boop, I'm a bot.

Hi renovate! Thank you for creating a PR! I've deployed the changes of this PR on a preview environment under this URL: https://1549-renovate-esbuild-0-x--vikunja-frontend-preview.netlify.app You can use this url to view the changes live and test them out. You will need to manually connect this to an api running somehwere. The easiest to use is https://try.vikunja.io/. Have a nice day! > Beep boop, I'm a bot.
dpschen approved these changes 2022-02-17 09:27:58 +00:00
renovate force-pushed renovate/esbuild-0.x from 1a6c571aa0 to 39e452a2a2 2022-02-17 10:03:10 +00:00 Compare
konrad merged commit 2c6ba1fa89 into main 2022-02-17 11:16:15 +00:00
konrad deleted branch renovate/esbuild-0.x 2022-02-17 11:16:15 +00:00
This repo is archived. You cannot comment on pull requests.
No description provided.