-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose details of module resolution #555
Comments
This seems similar to these other comments of yours: #527 (comment) and #527 (comment). I'm guessing the simplest way to solve for these and your other use cases would be to provide a way to hook into the file system abstraction itself. Luckily esbuild already has a file system abstraction internally, which is used for esbuild's default on-resolve behavior. That would come with a speed penalty of course, but you're already aware of that. Hooking into the file system itself is a pretty advanced use case. I want to be thoughtful about how this is added or even if this should be added at all given that it's an advanced use case. For example, it's not clear to me if this use case is more of a "singleton" where it makes sense for there to just be one file system intercept or if there should be multiple ones for different purposes. Let's keep this issue open to track the possibility of replacing the file system. For the record, the use cases you've brought up so far that are related to file system access are:
It's good that you're already aware of the subtlety that path resolution can be affected even if none of the input files from the previous build have changed. That case is easy to miss. There are other cases in addition to new |
I am also interested in emulating a file system in the browser. Right now, only natural files can be virtualized via the Suggestion: Offer internal files, such as Files touched by esbuild should ideally be added to |
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.13 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>See full diff in <a href="https://github.com/evanw/esbuild/compare/v0.17.13...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.13&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.12 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.12...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.12&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
…sreimann.safeds.vscode (#442) Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.11 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.11...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.11&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[//]: # (dependabot-start)⚠️ **Dependabot is rebasing this PR**⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.10 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.10...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.10&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.11 to 0.17.14. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ :is(div, p) :is(.warning, .error) { </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.17.14</h2> <ul> <li> <p>Allow the TypeScript 5.0 <code>const</code> modifier in object type declarations (<a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>)</p> <p>The new TypeScript 5.0 <code>const</code> modifier was added to esbuild in version 0.17.5, and works with classes, functions, and arrow expressions. However, support for it wasn't added to object type declarations (e.g. interfaces) due to an oversight. This release adds support for these cases, so the following TypeScript 5.0 code can now be built with esbuild:</p> <pre lang="ts"><code>interface Foo { <const T>(): T } type Bar = { new <const T>(): T } </code></pre> </li> <li> <p>Implement preliminary lowering for CSS nesting (<a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>)</p> <p>Chrome has <a href="https://developer.chrome.com/articles/css-nesting/">implemented the new CSS nesting specification</a> in version 112, which is currently in beta but will become stable very soon. So CSS nesting is now a part of the web platform!</p> <p>This release of esbuild can now transform nested CSS syntax into non-nested CSS syntax for older browsers. The transformation relies on the <code>:is()</code> pseudo-class in many cases, so the transformation is only guaranteed to work when targeting browsers that support <code>:is()</code> (e.g. Chrome 88+). You'll need to set esbuild's <a href="https://esbuild.github.io/api/#target"><code>target</code></a> to the browsers you intend to support to tell esbuild to do this transformation. You will get a warning if you use CSS nesting syntax with a <code>target</code> which includes older browsers that don't support <code>:is()</code>.</p> <p>The lowering transformation looks like this:</p> <pre lang="css"><code>/* Original input */ a.btn { color: [#333](evanw/esbuild#333); &:hover { color: [#444](evanw/esbuild#444) } &:active { color: [#555](evanw/esbuild#555) } } <p>/* New output (with --target=chrome88) */ a.btn { color: <a href="https://redirect.github.com/evanw/esbuild/issues/333">#333</a>; } a.btn:hover { color: <a href="https://redirect.github.com/evanw/esbuild/issues/444">#444</a>; } a.btn:active { color: <a href="https://redirect.github.com/evanw/esbuild/issues/555">#555</a>; } </code></pre></p> <p>More complex cases may generate the <code>:is()</code> pseudo-class:</p> <pre lang="css"><code>/* Original input */ div, p { .warning, .error { padding: 20px; } } <p>/* New output (with --target=chrome88) */ </code></pre></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/b2b897870564a6b8e8bc802a140c55bf602de31b"><code>b2b8978</code></a> publish 0.17.14 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/079eca4992344201185864c9282221c917c9a3d5"><code>079eca4</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3021">#3021</a>: add support for <code>const</code> in object types</li> <li><a href="https://github.com/evanw/esbuild/commit/72c837935d74ab1f421c0d96e9d1ce1052438737"><code>72c8379</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/1945">#1945</a>: initial lowering code for css nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/96e09b40f73b29aaf4f419d45f603ee1353be800"><code>96e09b4</code></a> cannot inline no-op nesting with pseudo-elements</li> <li><a href="https://github.com/evanw/esbuild/commit/cd62fa131daecaf8eb4b4bb032331158b2b2d8db"><code>cd62fa1</code></a> minify: remove unnecessary <code>&</code> selectors</li> <li><a href="https://github.com/evanw/esbuild/commit/0546cf7a8cb1d89409e4634bdb3b5d6c65e0a6c5"><code>0546cf7</code></a> css combinator can be a single byte</li> <li><a href="https://github.com/evanw/esbuild/commit/39c39620829dad7f871e32090d4273ed4fdc0ae2"><code>39c3962</code></a> minify: removes duplicates from CSS selector lists</li> <li><a href="https://github.com/evanw/esbuild/commit/8362c373289da762f5636691fc070f630678607c"><code>8362c37</code></a> Chrome 112+ can now use CSS nesting</li> <li><a href="https://github.com/evanw/esbuild/commit/366b632dec741af6f199ef2931b2f0936a9ff822"><code>366b632</code></a> <a href="https://redirect.github.com/evanw/esbuild/issues/2940">#2940</a>: switch to <code>node-compat-table</code> for node data</li> <li><a href="https://github.com/evanw/esbuild/commit/daf372df0bea9109b89ddf3bf1703eb5daef4d52"><code>daf372d</code></a> run <code>make compat-table</code> again</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.17.11...v0.17.14">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=esbuild&package-manager=npm_and_yarn&previous-version=0.17.11&new-version=0.17.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Now that
incremental
mode landed, I'm interested in implementing a sort of hybrid ofnodemon
andesbuild
. I've hacked together an MVP that works very well for my use case.However, it occurs to me that to generalize the solution, it would be important to be able to introspect which files are relevant to a given build. While we already have all the info about source files, two groups of files would be helpful to also see:
package.json
files consulted in performing resolutions. Changes to these may invalidate parts of the build so an intelligent watcher would observe these for changes. Of course, a 100% bullet-proof solution would also need to observe certain directories where the absence of files with certain patterns likenode_modules/<bare_module_target>
orpackage.json
might also invalidate resolutions that traversed up the filesystem.tsconfig.json
files consulted in performing resolutions and in configuring build settings. Similarly to the former, a watching process would want to watch the correct set of these to re-trigger incremental builds.General solution idea
I've built a (much less ambitious or complete) bundler called Velcro that was designed to run as a service and to run in various js environments. Part of the design of Velcro involved defining a minimal set of operations that can define a module resolution interface across different conceptual stores (memory, fs, cdn like unpkg or even a collection of monaco-editor
Model
s). Since reads to these could be potentially expensive, the idea was to think about caching and invalidation from the beginning.To address this, the Velcro Resolver tracks a collection of path / access types that would invalidate the outcome of any of the cached operations. For example, if the resolver checks for the existence of
file.ts
before findingfile.js
via the default extensions setting, the creation offile.ts
would invalidate that resolution.Consumers of the Resolver, such as the Bundler receive the invalidation records for each operation and can remember these. When an event occurs that may invalidate something, all of the invalidations are pre-calculated. We just need to loop through what we have already tracked and delete records as well as tell the Resolver to delete its own: like this.
Anyway, all this to say that it would be interesting to think of how consumers of
esbuild
might be able to obtain some visibility into these resolution details so that they can be intelligent about when they trigger rebuilds. In general a naive watch pattern will work well enough but as soon as we get into weird directory structures and inter-linkingtsconfig.json
files, having this metadata would be almost essential.The text was updated successfully, but these errors were encountered: