Bumps the npm-minor-patch group with 13 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
|
[@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom)
| `1.7.6` | `1.8.0` |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.60.0`
| `1.62.1` |
|
[@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit)
| `2.60.1` | `2.70.3` |
|
[@types/bootstrap](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/bootstrap)
| `5.2.10` | `5.2.11` |
| [caniuse-lite](https://github.com/browserslist/caniuse-lite) |
`1.0.30001799` | `1.0.30001809` |
| [dprint](https://github.com/dprint/dprint) | `0.54.0` | `0.56.0` |
| [esbuild](https://github.com/evanw/esbuild) | `0.28.1` | `0.28.2` |
| [prettier](https://github.com/prettier/prettier) | `3.8.3` | `3.9.6` |
| [sass](https://github.com/sass/dart-sass) | `1.99.0` | `1.102.0` |
| [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte)
| `5.55.7` | `5.56.9` |
| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.8` |
`4.7.6` |
| [svelte-preprocess](https://github.com/sveltejs/svelte-preprocess) |
`6.0.3` | `6.0.5` |
| [tsx](https://github.com/privatenumber/tsx) | `4.22.0` | `4.23.12` |
Updates `@floating-ui/dom` from 1.7.6 to 1.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/floating-ui/floating-ui/releases">@floating-ui/dom's
releases</a>.</em></p>
<blockquote>
<h2><code>@floating-ui/dom</code><a
href="https://github.com/1"><code>@1</code></a>.8.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>feat: add <code>'layoutViewport'</code> string option to
<code>rootBoundary</code>. Unlike the visual <code>'viewport'</code>
boundary, it remains stable while pinch-zooming or when a mobile
software keyboard is open, and unlike a manually passed
<code>Rect</code> of the documentElement's client size, it accounts for
space reserved by <code>scrollbar-gutter: stable</code>.</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>fix: remove redundant passive options from scroll listeners</li>
<li>fix: support explicit <code>undefined</code> for optional properties
with <code>exactOptionalPropertyTypes</code></li>
<li>fix(autoUpdate): update immediately instead of waiting for the 1s
<code>layoutShift</code> refresh throttle when the reference moved
during an observer refresh</li>
<li>fix(getClippingRect): correct clipping-ancestor filtering for
fixed-position elements</li>
<li>perf(dom): reduce bundle size and skip redundant per-call work in
positioning utilities</li>
<li>fix(getViewportRect): account for <code>scrollbar-gutter: stable
both-edges</code> reserved space</li>
<li>fix(getViewportRect): don't overflow past a left-side document
scrollbar</li>
<li>fix(platform): don't throw in <code>getClientRects</code> when a
virtual element without a <code>getClientRects</code> method is used
with the <code>inline()</code> middleware</li>
<li>fix(autoUpdate): refresh layout shift observer on root resize</li>
<li>Update dependencies: <code>@floating-ui/core@1.8.0</code>,
<code>@floating-ui/utils@0.2.12</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md">@floating-ui/dom's
changelog</a>.</em></p>
<blockquote>
<h2>1.8.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>feat: add <code>'layoutViewport'</code> string option to
<code>rootBoundary</code>. Unlike the visual <code>'viewport'</code>
boundary, it remains stable while pinch-zooming or when a mobile
software keyboard is open, and unlike a manually passed
<code>Rect</code> of the documentElement's client size, it accounts for
space reserved by <code>scrollbar-gutter: stable</code>.</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>fix: remove redundant passive options from scroll listeners</li>
<li>fix: support explicit <code>undefined</code> for optional properties
with <code>exactOptionalPropertyTypes</code></li>
<li>fix(autoUpdate): update immediately instead of waiting for the 1s
<code>layoutShift</code> refresh throttle when the reference moved
during an observer refresh</li>
<li>fix(getClippingRect): correct clipping-ancestor filtering for
fixed-position elements</li>
<li>perf(dom): reduce bundle size and skip redundant per-call work in
positioning utilities</li>
<li>fix(getViewportRect): account for <code>scrollbar-gutter: stable
both-edges</code> reserved space</li>
<li>fix(getViewportRect): don't overflow past a left-side document
scrollbar</li>
<li>fix(platform): don't throw in <code>getClientRects</code> when a
virtual element without a <code>getClientRects</code> method is used
with the <code>inline()</code> middleware</li>
<li>fix(autoUpdate): refresh layout shift observer on root resize</li>
<li>Update dependencies: <code>@floating-ui/core@1.8.0</code>,
<code>@floating-ui/utils@0.2.12</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="12d9473847"><code>12d9473</code></a>
chore: version packages (<a
href="https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom/issues/3480">#3480</a>)</li>
<li><a
href="ad0a73f1f1"><code>ad0a73f</code></a>
fix(getViewportRect): account for <code>scrollbar-gutter: stable
both-edges</code> reser...</li>
<li><a
href="9887c96799"><code>9887c96</code></a>
fix(types): restore bivariant parameters for optional callbacks</li>
<li><a
href="28bc9c11b0"><code>28bc9c1</code></a>
fix(autoUpdate): avoid duplicate update on window resize</li>
<li><a
href="5976f20ad9"><code>5976f20</code></a>
test(dom): run unit tests in vitest browser mode</li>
<li><a
href="705a03cb8f"><code>705a03c</code></a>
fix(platform): support virtual elements without getClientRects in
inline() (#...</li>
<li><a
href="3785f3b2b9"><code>3785f3b</code></a>
feat: add <code>layoutViewport</code> string option to
<code>rootBoundary</code> (<a
href="https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom/issues/3486">#3486</a>)</li>
<li><a
href="0d0e88ecf5"><code>0d0e88e</code></a>
fix(inline): no-op on empty client rects and detect RTL disjoined line
rects ...</li>
<li><a
href="73c1f762a2"><code>73c1f76</code></a>
fix(types): support <code>exactOptionalPropertyTypes</code> (<a
href="https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom/issues/3456">#3456</a>)</li>
<li><a
href="cd58dd258a"><code>cd58dd2</code></a>
fix(getClippingRect): correct clipping-ancestor filtering for
fixed-position ...</li>
<li>Additional commits viewable in <a
href="https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.8.0/packages/dom">compare
view</a></li>
</ul>
</details>
<br />
Updates `@playwright/test` from 1.60.0 to 1.62.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/microsoft/playwright/releases">@playwright/test's
releases</a>.</em></p>
<blockquote>
<h2>v1.62.1</h2>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/microsoft/playwright/issues/41989">#41989</a>
[Regression]: tsconfig "extends" bare specifier isn't resolved
via node_modules walk-up like tsc (fatal since 1.62)</li>
<li><a
href="https://redirect.github.com/microsoft/playwright/issues/41998">#41998</a>
[Regression]: directory-form tsconfig project references
("path": "../pkg") fail to resolve (fatal since
1.62)</li>
<li><a
href="https://redirect.github.com/microsoft/playwright/issues/41985">#41985</a>
Accessibility snapshot drops button name when text is nested inside
spans with aria-hidden SVG</li>
<li><a
href="https://redirect.github.com/microsoft/playwright/issues/42000">#42000</a>
[Regression]: page.evaluate() arg of a branded primitive type (string
& { brand }) no longer type-checks since 1.62</li>
<li><a
href="https://redirect.github.com/microsoft/playwright/issues/42013">#42013</a>
[BUG]Image-type actionable elements are not presented in the
snapshot.</li>
</ul>
<h2>v1.62.0</h2>
<h2>🧱 New component testing model</h2>
<p><a href="https://playwright.dev/docs/test-components">Component
testing</a> moves to a <strong>stories and galleries</strong> model.
A <strong>story</strong> wraps your component in one specific scenario —
hard-coded props, mock data, providers — and a <strong>gallery</strong>
page that you serve renders stories on demand.
The new <a
href="https://playwright.dev/docs/api/class-fixtures#fixtures-mount">fixtures.mount()</a>
fixture navigates to the gallery, mounts a story by id, and returns a <a
href="https://playwright.dev/docs/api/class-locator">Locator</a> scoped
to the story's root element:</p>
<pre lang="js"><code>test('click should expand', async ({ mount }) =>
{
const component = await mount('components/Expandable/Stateful');
await component.getByRole('button').click();
await expect(component.getByTestId('expanded')).toHaveValue('true');
});
</code></pre>
<p>Pass a story type as a template argument to type-check its props, and
use <code>update(props)</code> / <code>unmount()</code> on the returned
locator to re-render or tear down within a test.</p>
<h2>🛑 Cancel operations with AbortSignal</h2>
<p>Most operations and web-first assertions now accept a
<code>signal</code> option that takes an <a
href="https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal"><code>AbortSignal</code></a>,
letting you cancel long-running actions, navigations, waits, and
assertions:</p>
<pre lang="js"><code>const controller = new AbortController();
setTimeout(() => controller.abort(), 1000);
<p>await page.getByRole('button', { name: 'Submit' }).click({ signal:
controller.signal });
await expect(page.getByText('Done')).toBeVisible({ signal:
controller.signal });
</code></pre></p>
<p>Providing a signal does not disable the default timeout; pass
<code>timeout: 0</code> to disable it.</p>
<h2>🖼️ WebP screenshots</h2>
<p><a
href="https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1">expect(page).toHaveScreenshot()</a>
and <a
href="https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1">expect(locator).toHaveScreenshot()</a>
can now store snapshots in the WebP format — just give the snapshot a
<code>.webp</code> name:</p>
<pre lang="js"><code>// Visual comparisons store the golden snapshot as
lossless WebP.
await expect(page).toHaveScreenshot('homepage.webp');
<p>// Standalone screenshots can trade quality for size with lossy WebP.
await page.screenshot({ path: 'homepage.webp', quality: 50 });
</tr></table>
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="26a9e470a7"><code>26a9e47</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/42043">#42043</a>):
docs: release notes for v1.62 Python, Java, and .NET (<a
href="https://redirect.github.com/microsoft/playwright/issues/4">#4</a>...</li>
<li><a
href="0a81d5d09b"><code>0a81d5d</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/42040">#42040</a>):
docs(release-notes): mention the isolated headless clipb...</li>
<li><a
href="83768264e6"><code>8376826</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/42034">#42034</a>):
fix(aria): keep icon-only clickable elements in ai snaps...</li>
<li><a
href="66c5cc92a6"><code>66c5cc9</code></a>
chore: mark v1.62.1 (<a
href="https://redirect.github.com/microsoft/playwright/issues/42020">#42020</a>)</li>
<li><a
href="9672bc3f2a"><code>9672bc3</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/42009">#42009</a>):
fix(types): support branded primitives in evaluate argum...</li>
<li><a
href="4325804427"><code>4325804</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/41988">#41988</a>):
fix(aria): preserve names from collapsed text contributors</li>
<li><a
href="9632f8ecbc"><code>9632f8e</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/42005">#42005</a>):
fix(tsconfig): do not throw when
"extends"/"references" ...</li>
<li><a
href="e3950d9c14"><code>e3950d9</code></a>
chore: mark v1.62.0 (<a
href="https://redirect.github.com/microsoft/playwright/issues/41981">#41981</a>)</li>
<li><a
href="f07e0f720f"><code>f07e0f7</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/41940">#41940</a>):
docs: release notes for v1.62 (<a
href="https://redirect.github.com/microsoft/playwright/issues/41967">#41967</a>)</li>
<li><a
href="05a306c78f"><code>05a306c</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/41964">#41964</a>):
Revert "feat(routeFromHar): add interceptAPIRequests opt...</li>
<li>Additional commits viewable in <a
href="https://github.com/microsoft/playwright/compare/v1.60.0...v1.62.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `@sveltejs/kit` from 2.60.1 to 2.70.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sveltejs/kit/releases">@sveltejs/kit's
releases</a>.</em></p>
<blockquote>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.70.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: avoid eagerly reading <code>$app/state</code> dependencies
during module initialization (<a
href="b61018d052"><code>b61018d</code></a>)</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.70.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: prevent quadratic backtracking in <code>Accept</code> header
content negotiation (<a
href="https://redirect.github.com/homebase-garage/igeclouds.github.io/pull/1">#1</a>)</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.70.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>docs: update links to hooks documentation (<a
href="https://redirect.github.com/sveltejs/kit/pull/16417">#16417</a>)</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.70.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>feat: move <code>defineEnvVars</code> to
<code>@sveltejs/kit/env</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16378">#16378</a>)</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>fix: enable CSRF protection in builds with a non-production
<code>NODE_ENV</code> value (<a
href="https://redirect.github.com/sveltejs/kit/pull/16313">#16313</a>)</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.69.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: detect destructured <code>load</code> and <code>actions</code>
exports during type generation (<a
href="https://redirect.github.com/sveltejs/kit/pull/16329">#16329</a>)</p>
</li>
<li>
<p>fix: ensure CSS URL references are absolute when
<code>paths.relative</code> is <code>false</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16315">#16315</a>)</p>
</li>
<li>
<p>fix: align MAX_COOKIE_SIZE with RFC 6265bis (<a
href="https://redirect.github.com/sveltejs/kit/pull/16322">#16322</a>)</p>
</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.69.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: set <code>define</code> values on <code>globalThis</code> when
running Vitest (<a
href="https://redirect.github.com/sveltejs/kit/pull/16246">#16246</a>)</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.69.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: prevent prototype pollution when deleting file inputs (<a
href="https://redirect.github.com/sveltejs/kit/pull/16218">#16218</a>)</p>
</li>
<li>
<p>fix: prevent unhandled promise rejection (<a
href="https://redirect.github.com/sveltejs/kit/pull/16219">#16219</a>)</p>
</li>
</ul>
<h2><code>@sveltejs/kit</code><a
href="https://github.com/2"><code>@2</code></a>.69.0</h2>
<h3>Minor Changes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sveltejs/kit/blob/version-3/packages/kit/CHANGELOG.md">@sveltejs/kit's
changelog</a>.</em></p>
<blockquote>
<h2>2.70.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: avoid eagerly reading <code>$app/state</code> dependencies
during module initialization (<a
href="b61018d052"><code>b61018d</code></a>)</li>
</ul>
<h2>2.70.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: prevent quadratic backtracking in <code>Accept</code> header
content negotiation (<a
href="82712fc02c"><code>82712fc</code></a>)</li>
</ul>
<h2>2.70.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>docs: update links to hooks documentation (<a
href="https://redirect.github.com/sveltejs/kit/pull/16417">#16417</a>)</li>
</ul>
<h2>2.70.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>feat: move <code>defineEnvVars</code> to
<code>@sveltejs/kit/env</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16378">#16378</a>)</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>fix: enable CSRF protection in builds with a non-production
<code>NODE_ENV</code> value (<a
href="https://redirect.github.com/sveltejs/kit/pull/16313">#16313</a>)</li>
</ul>
<h2>2.69.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: detect destructured <code>load</code> and <code>actions</code>
exports during type generation (<a
href="https://redirect.github.com/sveltejs/kit/pull/16329">#16329</a>)</p>
</li>
<li>
<p>fix: ensure CSS URL references are absolute when
<code>paths.relative</code> is <code>false</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16315">#16315</a>)</p>
</li>
<li>
<p>fix: align MAX_COOKIE_SIZE with RFC 6265bis (<a
href="https://redirect.github.com/sveltejs/kit/pull/16322">#16322</a>)</p>
</li>
</ul>
<h2>2.69.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: detect destructured <code>load</code> and <code>actions</code>
exports during type generation (<a
href="https://redirect.github.com/sveltejs/kit/pull/16329">#16329</a>)</p>
</li>
<li>
<p>fix: ensure CSS URL references are absolute when
<code>paths.relative</code> is <code>false</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16315">#16315</a>)</p>
</li>
<li>
<p>fix: exclude deleted cookies from <code>cookies.getAll()</code> so it
stays consistent with <code>cookies.get()</code> (<a
href="https://redirect.github.com/sveltejs/kit/pull/16297">#16297</a>)</p>
</li>
<li>
<p>fix: reset failed <code><svelte:boundary></code> on client
navigation so a stale <code>+error.svelte</code> is torn down (<a
href="https://redirect.github.com/sveltejs/kit/pull/16296">#16296</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="39e8e1fbd4"><code>39e8e1f</code></a>
Version Packages (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16771">#16771</a>)</li>
<li><a
href="b61018d052"><code>b61018d</code></a>
fix: avoid eagerly reading <code>$app/state</code> dependencies during
module</li>
<li><a
href="1ad0d437e1"><code>1ad0d43</code></a>
chore: get Vercel split platform tests running (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16666">#16666</a>)</li>
<li><a
href="a297affcec"><code>a297aff</code></a>
Version Packages (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16571">#16571</a>)</li>
<li><a
href="82712fc02c"><code>82712fc</code></a>
Merge commit from fork</li>
<li><a
href="4c2355f9fd"><code>4c2355f</code></a>
Version Packages (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16418">#16418</a>)</li>
<li><a
href="c1665b9cd4"><code>c1665b9</code></a>
docs: update hooks page (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16417">#16417</a>)</li>
<li><a
href="4da36e64aa"><code>4da36e6</code></a>
Version Packages (<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16343">#16343</a>)</li>
<li><a
href="78f28f16f8"><code>78f28f1</code></a>
feat: move <code>defineEnvVars</code> to <code>@sveltejs/kit/env</code>
(<a
href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/16378">#16378</a>)</li>
<li><a
href="ffa0e3b06e"><code>ffa0e3b</code></a>
fix: don't disable CSRF protection in builds with a non-production
NODE_ENV (...</li>
<li>Additional commits viewable in <a
href="https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.70.3/packages/kit">compare
view</a></li>
</ul>
</details>
<br />
Updates `@types/bootstrap` from 5.2.10 to 5.2.11
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/bootstrap">compare
view</a></li>
</ul>
</details>
<br />
Updates `caniuse-lite` from 1.0.30001799 to 1.0.30001809
<details>
<summary>Commits</summary>
<ul>
<li><a
href="369a550d87"><code>369a550</code></a>
Update caniuse-db 1.0.30001809</li>
<li><a
href="92bee19a0d"><code>92bee19</code></a>
Update caniuse-db 1.0.30001807</li>
<li><a
href="ee692af63d"><code>ee692af</code></a>
Allow to use latest caniuse-db</li>
<li><a
href="61386fc378"><code>61386fc</code></a>
Move back to the latest pnpm 11</li>
<li><a
href="3c48481a6e"><code>3c48481</code></a>
Update caniuse-db 1.0.30001806</li>
<li><a
href="cb047fc441"><code>cb047fc</code></a>
Update CI practice</li>
<li><a
href="e6acac858d"><code>e6acac8</code></a>
Temporary fix pnpm issue</li>
<li><a
href="325cd2fffa"><code>325cd2f</code></a>
Update dependencies</li>
<li><a
href="7fa21d2486"><code>7fa21d2</code></a>
Update caniuse-db 1.0.30001805</li>
<li><a
href="973b1119cb"><code>973b111</code></a>
Update caniuse-db 1.0.30001803</li>
<li>Additional commits viewable in <a
href="https://github.com/browserslist/caniuse-lite/compare/1.0.30001799...1.0.30001809">compare
view</a></li>
</ul>
</details>
<br />
Updates `dprint` from 0.54.0 to 0.56.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dprint/dprint/releases">dprint's
releases</a>.</em></p>
<blockquote>
<h2>0.56.0</h2>
<h2>Changes</h2>
<ul>
<li>feat: prefer plugins on the npm registry (<a
href="https://redirect.github.com/dprint/dprint/issues/1215">#1215</a>)</li>
<li>feat: add path completion hints to CLI args (<a
href="https://redirect.github.com/dprint/dprint/issues/1217">#1217</a>)</li>
<li>feat: support formatting directory args (<a
href="https://redirect.github.com/dprint/dprint/issues/1196">#1196</a>)</li>
<li>feat: format explicit paths outside the working directory (<a
href="https://redirect.github.com/dprint/dprint/issues/1204">#1204</a>)</li>
<li>fix: keep a duplicate plugin's checksum when deduping plugin sources
(<a
href="https://redirect.github.com/dprint/dprint/issues/1211">#1211</a>)</li>
<li>fix: don't duplicate a plugin specified in both a config and its
extended config (<a
href="https://redirect.github.com/dprint/dprint/issues/1043">#1043</a>)
(<a
href="https://redirect.github.com/dprint/dprint/issues/1208">#1208</a>)</li>
<li>fix: apply implicit <code>node_modules</code> exclude and unanchored
patterns in rebased scopes (<a
href="https://redirect.github.com/dprint/dprint/issues/1210">#1210</a>)</li>
<li>fix: resolve literal file and directory args without directory
traversal (<a
href="https://redirect.github.com/dprint/dprint/issues/1207">#1207</a>)</li>
<li>fix: handle overflow panic in progress bars (<a
href="https://redirect.github.com/dprint/dprint/issues/1223">#1223</a>)</li>
</ul>
<h2>Install</h2>
<p>Run <code>dprint upgrade</code> or see <a
href="https://dprint.dev/install/">https://dprint.dev/install/</a></p>
<h2>Checksums</h2>
<table>
<thead>
<tr>
<th align="left">Artifact</th>
<th align="left">SHA-256 Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">dprint-x86_64-apple-darwin.zip</td>
<td
align="left">466dd67e15fca266f3749008ef5d23ea7a6c657ef8204257dbb8c23636fc9aca</td>
</tr>
<tr>
<td align="left">dprint-aarch64-apple-darwin.zip</td>
<td
align="left">79f5c80a3ddebb4717a89a25a79ec1c50947d4cef141df243757925cb47d32e1</td>
</tr>
<tr>
<td align="left">dprint-x86_64-pc-windows-msvc.zip</td>
<td
align="left">cbcb0c6fdbb72289e895c3857720eb769046d42069973f38655b6aee16c01c73</td>
</tr>
<tr>
<td align="left">dprint-x86_64-pc-windows-msvc-installer.exe</td>
<td
align="left">795de3adb60187bad989b330f8c8ec03c7a4a69509b1a8d47dc3025266e0158a</td>
</tr>
<tr>
<td align="left">dprint-aarch64-pc-windows-msvc.zip</td>
<td
align="left">c4356e5f9e1b6edce345bd2de902384e3a51e46b0b98775db7011f0996b6b230</td>
</tr>
<tr>
<td align="left">dprint-x86_64-unknown-linux-gnu.zip</td>
<td
align="left">49fe9d970cdbe0f742e18187c221a7a1dd985d35d4fa9bf4740f7a261c08d96c</td>
</tr>
<tr>
<td align="left">dprint-x86_64-unknown-linux-musl.zip</td>
<td
align="left">e958bfa3fec5256e72c2e4e028fa5674e43023eaff80d704ca96827af2eba240</td>
</tr>
<tr>
<td align="left">dprint-aarch64-unknown-linux-gnu.zip</td>
<td
align="left">a0dcf153cce38096f43bdde36fdd32cfd11c2227b6a04c2202fa83573fe517a6</td>
</tr>
<tr>
<td align="left">dprint-aarch64-unknown-linux-musl.zip</td>
<td
align="left">2e7d50e342d9d9d85b811635a04f3d49abdf7ec96d5b346cda932a7c4d42a7ab</td>
</tr>
<tr>
<td align="left">dprint-riscv64gc-unknown-linux-gnu.zip</td>
<td
align="left">c888b0e2f559341a62fa666b1609ec957e609bfc146b5ee0ab7898723ebbe231</td>
</tr>
<tr>
<td align="left">dprint-loongarch64-unknown-linux-gnu.zip</td>
<td
align="left">d86a6d3fc063992d152237885f51053748b60361228d851ca6aeaec65d84fb8e</td>
</tr>
<tr>
<td align="left">dprint-loongarch64-unknown-linux-musl.zip</td>
<td
align="left">d781022e4fbfec13688db1dd3d0fb9da964f6f5cf79b31ffcf5196d364f22cf0</td>
</tr>
<tr>
<td align="left">dprint-powerpc64le-unknown-linux-gnu.zip</td>
<td
align="left">935e117e23650a9874b444a7a6445ec7a8d593778e514f34ebea72dd88180599</td>
</tr>
<tr>
<td align="left">dprint-powerpc64le-unknown-linux-musl.zip</td>
<td
align="left">93d03c5f3b615955c9fce64a4867b8aa5959988646bfebd1bfd74b5618a1f2ed</td>
</tr>
<tr>
<td align="left">dprint-aarch64-linux-android.zip</td>
<td
align="left">718707dcd1637d312d2b430ae6313550bac7f21143d9344cd8fd80bf2ec5bf25</td>
</tr>
<tr>
<td align="left">dprint-x86_64-linux-android.zip</td>
<td
align="left">2b09284549bd96dfa2389d85237da15bacbae9076cdec0e849ec3fb50b804923</td>
</tr>
</tbody>
</table>
<h2>0.55.2</h2>
<h2>Changes</h2>
<ul>
<li>fix: build linux gnu binaries against glibc 2.17 (<a
href="https://redirect.github.com/dprint/dprint/pull/1203">dprint/dprint#1203</a>)</li>
</ul>
<h2>Install</h2>
<p>Run <code>dprint upgrade</code> or see <a
href="https://dprint.dev/install/">https://dprint.dev/install/</a></p>
<h2>Checksums</h2>
<p>|Artifact|SHA-256 Checksum|</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dbabbe9bee"><code>dbabbe9</code></a>
0.56.0</li>
<li><a
href="8ca223e8aa"><code>8ca223e</code></a>
fix: handle overflow panic in progress bars (<a
href="https://redirect.github.com/dprint/dprint/issues/1223">#1223</a>)</li>
<li><a
href="55254cc0ea"><code>55254cc</code></a>
chore: fix ci (<a
href="https://redirect.github.com/dprint/dprint/issues/1221">#1221</a>)</li>
<li><a
href="96cc5d244e"><code>96cc5d2</code></a>
docs: add Panache plugin documentation (<a
href="https://redirect.github.com/dprint/dprint/issues/1214">#1214</a>)</li>
<li><a
href="eaecd3647d"><code>eaecd36</code></a>
feat: prefer plugins on the npm registry (<a
href="https://redirect.github.com/dprint/dprint/issues/1215">#1215</a>)</li>
<li><a
href="634704ef24"><code>634704e</code></a>
docs: add swift plugin (<a
href="https://redirect.github.com/dprint/dprint/issues/1191">#1191</a>)</li>
<li><a
href="aee638520a"><code>aee6385</code></a>
feat: add path completion hints to CLI args (<a
href="https://redirect.github.com/dprint/dprint/issues/1217">#1217</a>)</li>
<li><a
href="f4f50ff861"><code>f4f50ff</code></a>
feat(core): let a caller declare a separated value as already multi-line
(<a
href="https://redirect.github.com/dprint/dprint/issues/1220">#1220</a>)</li>
<li><a
href="f825df7353"><code>f825df7</code></a>
perf(core): keep value resolutions when a separated values group only
moves d...</li>
<li><a
href="1c54115179"><code>1c54115</code></a>
perf(core): push_str (<a
href="https://redirect.github.com/dprint/dprint/issues/1218">#1218</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/dprint/dprint/compare/0.54.0...0.56.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `esbuild` from 0.28.1 to 0.28.2
<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.28.2</h2>
<ul>
<li>
<p>Fix tree shaking bug due to TypeScript import alias (<a
href="https://redirect.github.com/evanw/esbuild/issues/4507">#4507</a>)</p>
<p>This release fixes a bug that could cause esbuild to incorrectly
tree-shake imports that are used in a TypeScript type alias under
certain circumstances. Affected code uses a TypeScript-specific
<code>import</code> assignment and looks something like this:</p>
<pre lang="ts"><code>import Base from './dep.js';
import Alias = Base.SomeType;
</code></pre>
</li>
<li>
<p>Fix CSS minification bug involving <code>&</code> (<a
href="https://redirect.github.com/evanw/esbuild/issues/4497">#4497</a>)</p>
<p>This release fixes a bug where esbuild's CSS minifier incorrectly
removed a <code>&</code> when it was unsafe to do so. Here is an
example:</p>
<pre lang="css"><code>/* Original code */
.a .b {
& .b:not(& .c) {
color: red;
}
}
<p>/* Old output (with --minify) */<br />
.a .b{.b:not(& .c){color:red}}</p>
<p>/* New output (with --minify) */<br />
.a .b{& .b:not(& .c){color:red}}<br />
</code></pre></p>
<p>This should match <code><span class="a"><span
class="b"><span
class="b">yes</span></span></span></code>
but not <code><span class="a"><span
class="b">no</span></span></code>. The old
output incorrectly matched both.</p>
</li>
<li>
<p>Avoid overwriting input files without <code>--allow-overwrite</code>
(<a
href="https://redirect.github.com/evanw/esbuild/issues/4484">#4484</a>)</p>
<p>For example: <code>esbuild input.js --outfile=input.js</code> tells
esbuild to overwrite <code>input.js</code> with the output of running
esbuild on it. This was supposed to already be prevented by default, but
it accidentally regressed in version 0.17.0 and apparently didn't have
any test coverage. The error message was being printed but the input
file was still being overwritten. Oops.</p>
<p>This release puts the original behavior back. With this release,
esbuild should now actually avoid overwriting input files unless
<code>--allow-overwrite</code> is explicitly present. This is done by
not writing out any files when a build error is encountered.</p>
</li>
<li>
<p>Fix incorrect code generated when using top-level await (<a
href="https://redirect.github.com/evanw/esbuild/issues/4498">#4498</a>)</p>
<p>Previously esbuild could generate code containing a syntax error in
complex scenarios involving top-level await used in a dependency cycle.
The problem was a missing <code>async</code> on one or more module
wrapper closures. With this release, esbuild now uses a fixed-point
iteration algorithm to correctly annotate all dependencies in the cycle
as needing an <code>async</code> module wrapper.</p>
</li>
<li>
<p>Fix a minification bug with lowered logical assignment operators (<a
href="https://redirect.github.com/evanw/esbuild/issues/4508">#4508</a>)</p>
<p>This release fixes a bug that could cause esbuild to generate
incorrect code for logical assignment operators when lowering them to an
older target environment. Specifically the lowering process requires
duplicating the left-hand side, but esbuild incorrectly failed to count
the duplicate as a new usage when the left-hand side is an identifier.
That then caused the minifier to believe that the left-hand side was
only used once and could attempt to incorrectly inline an initializer
into the first usage. This bug has now been fixed:</p>
<pre lang="js"><code>// Original code
function foo() {
let x
bar(x ||= {})
</code></pre>
</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.28.2</h2>
<ul>
<li>
<p>Fix tree shaking bug due to TypeScript import alias (<a
href="https://redirect.github.com/evanw/esbuild/issues/4507">#4507</a>)</p>
<p>This release fixes a bug that could cause esbuild to incorrectly
tree-shake imports that are used in a TypeScript type alias under
certain circumstances. Affected code uses a TypeScript-specific
<code>import</code> assignment and looks something like this:</p>
<pre lang="ts"><code>import Base from './dep.js';
import Alias = Base.SomeType;
</code></pre>
</li>
<li>
<p>Fix CSS minification bug involving <code>&</code> (<a
href="https://redirect.github.com/evanw/esbuild/issues/4497">#4497</a>)</p>
<p>This release fixes a bug where esbuild's CSS minifier incorrectly
removed a <code>&</code> when it was unsafe to do so. Here is an
example:</p>
<pre lang="css"><code>/* Original code */
.a .b {
& .b:not(& .c) {
color: red;
}
}
<p>/* Old output (with --minify) */<br />
.a .b{.b:not(& .c){color:red}}</p>
<p>/* New output (with --minify) */<br />
.a .b{& .b:not(& .c){color:red}}<br />
</code></pre></p>
<p>This should match <code><span class="a"><span
class="b"><span
class="b">yes</span></span></span></code>
but not <code><span class="a"><span
class="b">no</span></span></code>. The old
output incorrectly matched both.</p>
</li>
<li>
<p>Avoid overwriting input files without <code>--allow-overwrite</code>
(<a
href="https://redirect.github.com/evanw/esbuild/issues/4484">#4484</a>)</p>
<p>For example: <code>esbuild input.js --outfile=input.js</code> tells
esbuild to overwrite <code>input.js</code> with the output of running
esbuild on it. This was supposed to already be prevented by default, but
it accidentally regressed in version 0.17.0 and apparently didn't have
any test coverage. The error message was being printed but the input
file was still being overwritten. Oops.</p>
<p>This release puts the original behavior back. With this release,
esbuild should now actually avoid overwriting input files unless
<code>--allow-overwrite</code> is explicitly present. This is done by
not writing out any files when a build error is encountered.</p>
</li>
<li>
<p>Fix incorrect code generated when using top-level await (<a
href="https://redirect.github.com/evanw/esbuild/issues/4498">#4498</a>)</p>
<p>Previously esbuild could generate code containing a syntax error in
complex scenarios involving top-level await used in a dependency cycle.
The problem was a missing <code>async</code> on one or more module
wrapper closures. With this release, esbuild now uses a fixed-point
iteration algorithm to correctly annotate all dependencies in the cycle
as needing an <code>async</code> module wrapper.</p>
</li>
<li>
<p>Fix a minification bug with lowered logical assignment operators (<a
href="https://redirect.github.com/evanw/esbuild/issues/4508">#4508</a>)</p>
<p>This release fixes a bug that could cause esbuild to generate
incorrect code for logical assignment operators when lowering them to an
older target environment. Specifically the lowering process requires
duplicating the left-hand side, but esbuild incorrectly failed to count
the duplicate as a new usage when the left-hand side is an identifier.
That then caused the minifier to believe that the left-hand side was
only used once and could attempt to incorrectly inline an initializer
into the first usage. This bug has now been fixed:</p>
<pre lang="js"><code>// Original code
function foo() {
let x
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="609683d892"><code>609683d</code></a>
publish 0.28.2 to npm</li>
<li><a
href="11b1fe48df"><code>11b1fe4</code></a>
add to release notes</li>
<li><a
href="ab50d91559"><code>ab50d91</code></a>
css: fix green/blue channel swap in oklch gamut mapping (<a
href="https://redirect.github.com/evanw/esbuild/issues/4488">#4488</a>)</li>
<li><a
href="04627b6cf9"><code>04627b6</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4498">#4498</a>:
<code>async</code> TLA checks need a worklist</li>
<li><a
href="5c15177a30"><code>5c15177</code></a>
disable <code>gopls</code> in the <code>go</code> folder</li>
<li><a
href="fc2ee9babc"><code>fc2ee9b</code></a>
css: adjust parser to allow <code>--foo: {...}</code></li>
<li><a
href="209db54371"><code>209db54</code></a>
release notes for css nesting bugfix</li>
<li><a
href="c625d31bf0"><code>c625d31</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4497">#4497</a>:
preserve nested ampersands during minification (<a
href="https://redirect.github.com/evanw/esbuild/issues/4500">#4500</a>)</li>
<li><a
href="34474e2785"><code>34474e2</code></a>
better isolation of current part in js parser</li>
<li><a
href="07f6e8c506"><code>07f6e8c</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4507">#4507</a>:
<code>import</code> assignment tree-shaking bug</li>
<li>Additional commits viewable in <a
href="https://github.com/evanw/esbuild/compare/v0.28.1...v0.28.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `prettier` from 3.8.3 to 3.9.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.9.6</h2>
<h2>What's Changed</h2>
<ul>
<li>Preserve quotes for methods named <code>new</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/19621">prettier/prettier#19621</a>
by <a href="https://github.com/kovsu"><code>@kovsu</code></a>)</li>
<li>Support <code>import defer</code> in <code>typescript</code> parser
(<a
href="https://redirect.github.com/prettier/prettier/pull/19624">prettier/prettier#19624</a>,
<a
href="https://redirect.github.com/prettier/prettier/pull/19675">prettier/prettier#19675</a>
by <a href="https://github.com/fisker"><code>@fisker</code></a>)</li>
<li>Added a new official plugin <a
href="https://github.com/prettier/prettier/tree/3.9.6/packages/plugin-yuku"><code>@prettier/plugin-yuku</code>
🚀</a> (<a
href="https://redirect.github.com/prettier/prettier/pull/19628">prettier/prettier#19628</a>,
<a
href="https://redirect.github.com/prettier/prettier/pull/19629">prettier/prettier#19629</a>
by <a href="https://github.com/fisker"><code>@fisker</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.6/CHANGELOG.md#396">Changelog</a></p>
<h2>3.9.5</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.5/CHANGELOG.md#395">Changelog</a></p>
<h2>3.9.4</h2>
<ul>
<li>Angular: Format <code>@content(name)</code> -> <code>@content
(name)</code> to align with other block syntax (<a
href="https://redirect.github.com/prettier/prettier/pull/19499">#19499</a>
by <a href="https://github.com/fisker"><code>@fisker</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.4/CHANGELOG.md#394">Changelog</a></p>
<h2>3.9.3</h2>
<ul>
<li>Markdown: Fix unexpected removal of characters in liquid syntax (<a
href="https://redirect.github.com/prettier/prettier/pull/19489">prettier/prettier#19489</a>
by <a href="https://github.com/seiyab"><code>@seiyab</code></a>)</li>
<li>TypeScript: Allow decorators to be used with declare on class fields
(<a
href="https://redirect.github.com/prettier/prettier/pull/19492">prettier/prettier#19492</a>
by <a
href="https://github.com/evoactivity"><code>@evoactivity</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.3/CHANGELOG.md#393">Changelog</a></p>
<h2>3.9.1</h2>
<ul>
<li>CLI: Fix ignored file has been cached incorrectly (<a
href="https://redirect.github.com/prettier/prettier/pull/19483">#19483</a>
by <a href="https://github.com/kovsu"><code>@kovsu</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.1/CHANGELOG.md#391">Changelog</a></p>
<h2>3.9.0</h2>
<p><a
href="https://github.com/prettier/prettier/compare/3.8.5...3.9.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2026/06/27/3.9.0">Prettier 3.9:
Major parser upgrades and Formatting improvements</a></p>
<h2>3.8.5</h2>
<ul>
<li>Fix Flow variance annotation print (<a
href="https://redirect.github.com/prettier/prettier/pull/19022">#19022</a>
by <a
href="https://github.com/marcoww6"><code>@marcoww6</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.8.5/CHANGELOG.md#385">Changelog</a></p>
<h2>3.8.4</h2>
<ul>
<li>Markdown: Fix blank lines between list items and nested sub-lists
being removed in Markdown/MDX (<a
href="https://redirect.github.com/prettier/prettier/pull/17746">prettier/prettier#17746</a>
by <a
href="https://github.com/byplayer"><code>@byplayer</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.8.4/CHANGELOG.md#384">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.9.6</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.9.5...3.9.6">diff</a></p>
<h4>TypeScript: Preserve quotes for methods named <code>new</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/19621">#19621</a>
by <a href="https://github.com/kovsu"><code>@kovsu</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="tsx"><code>// Input
interface Container {
"new"(id: string): number;
}
<p>// Prettier 3.9.5<br />
interface Container {<br />
new(id: string): number;<br />
}</p>
<p>// Prettier 3.9.6<br />
interface Container {<br />
"new"(id: string): number;<br />
}<br />
</code></pre></p>
<h4>TypeScript: Support <code>import defer</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/19624">#19624</a>,
<a
href="https://redirect.github.com/prettier/prettier/pull/19675">#19675</a>
by <a href="https://github.com/fisker"><code>@fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="tsx"><code>// Input
import defer * as foo from "foo";
<p>// Prettier 3.9.5<br />
import * as foo from "foo";</p>
<p>// Prettier 3.9.6<br />
import defer * as foo from "foo";<br />
</code></pre></p>
<h4>JavaScript: Added a new official plugin
<code>@prettier/plugin-yuku</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/19628">#19628</a>,
<a
href="https://redirect.github.com/prettier/prettier/pull/19629">#19629</a>
by <a href="https://github.com/fisker"><code>@fisker</code></a>)</h4>
<p><code>@prettier/plugin-yuku</code> is powered by <a
href="https://yuku.fyi/">Yuku</a> (A high-performance
JavaScript/TypeScript compiler toolchain written in Zig).</p>
<p>This plugin includes two new parsers: <code>yuku</code> (JavaScript
syntax) and <code>yuku-ts</code> (TypeScript syntax).</p>
<p><strong>To use this plugin:</strong></p>
<ol>
<li>
<p>Install the plugin:</p>
<pre lang="bash"><code>yarn add --dev prettier @prettier/plugin-yuku
</code></pre>
</li>
</ol>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8f0c95057c"><code>8f0c950</code></a>
Release 3.9.6</li>
<li><a
href="e9107647d0"><code>e910764</code></a>
Update changelog</li>
<li><a
href="ec3f1c7bd7"><code>ec3f1c7</code></a>
Update typescript-eslint to v8.65.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/19675">#19675</a>)</li>
<li><a
href="73d2efc2c6"><code>73d2efc</code></a>
Update Yuku parser to v0.7.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/19664">#19664</a>)</li>
<li><a
href="dd5e24eabe"><code>dd5e24e</code></a>
Preserve quotes for <code>TSMethodSignature</code> nodes named
<code>new</code> (<a
href="https://redirect.github.com/prettier/prettier/issues/19621">#19621</a>)</li>
<li><a
href="c03ab4e71c"><code>c03ab4e</code></a>
Update dependency eslint-plugin-unicorn to v72 (<a
href="https://redirect.github.com/prettier/prettier/issues/19633">#19633</a>)</li>
<li><a
href="b74dd53076"><code>b74dd53</code></a>
Update Yuku parser to v0.6.5 (<a
href="https://redirect.github.com/prettier/prettier/issues/19654">#19654</a>)</li>
<li><a
href="f1b594ea1d"><code>f1b594e</code></a>
Update dependency eslint-plugin-simple-import-sort to v14 (<a
href="https://redirect.github.com/prettier/prettier/issues/19655">#19655</a>)</li>
<li><a
href="0d9dfb6153"><code>0d9dfb6</code></a>
Update Yuku parser to v0.6.4 (<a
href="https://redirect.github.com/prettier/prettier/issues/19650">#19650</a>)</li>
<li><a
href="3bbb8159eb"><code>3bbb815</code></a>
Remove <code>typescript-only</code> directory (<a
href="https://redirect.github.com/prettier/prettier/issues/19636">#19636</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.8.3...3.9.6">compare
view</a></li>
</ul>
</details>
<br />
Updates `sass` from 1.99.0 to 1.102.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sass/dart-sass/releases">sass's
releases</a>.</em></p>
<blockquote>
<h2>Dart Sass 1.102.0</h2>
<p>To install Sass 1.102.0, download one of the packages below and <a
href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or
see <a href="https://sass-lang.com/install">the Sass website</a> for
full installation instructions.</p>
<h1>Changes</h1>
<ul>
<li>Use the 2.4 gamma transfer function for rec2020, as specified by the
latest draft of CSS Color 4.</li>
</ul>
<p>See the <a
href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#11020">full
changelog</a> for changes in earlier releases.</p>
<h2>Dart Sass 1.101.7</h2>
<p>To install Sass 1.101.7, download one of the packages below and <a
href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or
see <a href="https://sass-lang.com/install">the Sass website</a> for
full installation instructions.</p>
<h1>Changes</h1>
<ul>
<li>No user-visible changes.</li>
</ul>
<p>See the <a
href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#11017">full
changelog</a> for changes in earlier releases.</p>
<h2>Dart Sass 1.101.6</h2>
<p>To install Sass 1.101.6, download one of the packages below and <a
href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or
see <a href="https://sass-lang.com/install">the Sass website</a> for
full installation instructions.</p>
<h1>Changes</h1>
<ul>
<li>No user-visible changes.</li>
</ul>
<p>See the <a
href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#11016">full
changelog</a> for changes in earlier releases.</p>
<h2>Dart Sass 1.101.5</h2>
<p>To install Sass 1.101.5, download one of the packages below and <a
href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or
see <a href="https://sass-lang.com/install">the Sass website</a> for
full installation instructions.</p>
<h1>Changes</h1>
<ul>
<li>No user-visible changes.</li>
</ul>
<p>See the <a
href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#11015">full
changelog</a> for changes in earlier releases.</p>
<h2>Dart Sass 1.101.4</h2>
<p>To install Sass 1.101.4, download one of the packages below and <a
href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or
see <a href="https://sass-lang.com/install">the Sass website</a> for
full installation instructions.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sass/dart-sass/blob/main/CHANGELOG.md">sass's
changelog</a>.</em></p>
<blockquote>
<h2>1.102.0</h2>
<ul>
<li>Use the 2.4 gamma transfer function for rec2020, as specified by the
latest
draft of CSS Color 4.</li>
</ul>
<h2>1.101.7</h2>
<ul>
<li>No user-visible changes.</li>
</ul>
<h2>1.101.6</h2>
<ul>
<li>No user-visible changes.</li>
</ul>
<h2>1.101.5</h2>
<ul>
<li>No user-visible changes.</li>
</ul>
<h2>1.101.4</h2>
<ul>
<li>
<p>Avoid emitting <code>rgb()</code> or <code>rgba()</code> functions
with non-percent decimal
channels. Older browsers only support integer values or (potentially
decimal)
percentages for these functions, so in order to preserve
backwards-compatibility while retaining full precision for modern
browsers,
legacy colors that contain at least one non-integer channel will now use
percentages for their channels (for example, <code>rgb(0%, 100%,
50%)</code> rather than
<code>rgb(0, 255, 127.5)</code>).</p>
</li>
<li>
<p>Fix a bug where the values of plain-CSS <code>if()</code> expressions
were emitted using
their <code>meta.inspect()</code> format rather than their CSS
serialization format.</p>
</li>
</ul>
<h2>1.101.3</h2>
<ul>
<li>No user-visible changes.</li>
</ul>
<h2>1.101.2</h2>
<ul>
<li>Fix a bug where the deprecation warning for vendor-prefixed
<code>expression()</code>
functions would incorrectly indicate whether or not the function would
be
invalid Sass in Dart Sass 2.0.0.</li>
</ul>
<h2>1.101.1</h2>
<ul>
<li>Sass stack trace entries are now always either absolute URLs,
absolute paths,
or paths relative to the current working directory. Previously, if a
stylesheet was loaded using a relative URL (as from a load path), that
relative URL was listed even if it couldn't be resolved relative to the
current working directory. However, this created potential ambiguities,
so
this behavior has been removed.</li>
</ul>
<h3>Command Line Interface</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="45d1efe651"><code>45d1efe</code></a>
Use gamma 2.40 for display-referred rec2020 (<a
href="https://redirect.github.com/sass/dart-sass/issues/2729">#2729</a>)</li>
<li><a
href="96aa29183f"><code>96aa291</code></a>
Persist credentials on all repos we push to (<a
href="https://redirect.github.com/sass/dart-sass/issues/2812">#2812</a>)</li>
<li><a
href="5af0b897d5"><code>5af0b89</code></a>
Set the Git committer for release tasks (<a
href="https://redirect.github.com/sass/dart-sass/issues/2811">#2811</a>)</li>
<li><a
href="2cecbbb46b"><code>2cecbbb</code></a>
Fix more issues downstream from Zizmor (<a
href="https://redirect.github.com/sass/dart-sass/issues/2809">#2809</a>)</li>
<li><a
href="a16f014e9f"><code>a16f014</code></a>
Emit floating-point <code>rgb()</code> values as percentages (<a
href="https://redirect.github.com/sass/dart-sass/issues/2800">#2800</a>)</li>
<li><a
href="4ed2c883a6"><code>4ed2c88</code></a>
Serialize <code>if()</code> values as CSS, not as inspected values (<a
href="https://redirect.github.com/sass/dart-sass/issues/2808">#2808</a>)</li>
<li><a
href="9dfde3db6b"><code>9dfde3d</code></a>
Fix more post-Zizmor failures (<a
href="https://redirect.github.com/sass/dart-sass/issues/2806">#2806</a>)</li>
<li><a
href="e8c12331ea"><code>e8c1233</code></a>
Fix some GitHub actions issues introduced by the Zizmor refactor (<a
href="https://redirect.github.com/sass/dart-sass/issues/2798">#2798</a>)</li>
<li><a
href="d676118ace"><code>d676118</code></a>
Merge pull request <a
href="https://redirect.github.com/sass/dart-sass/issues/2797">#2797</a>
from sass/lints</li>
<li><a
href="548e6604c5"><code>548e660</code></a>
Prefer interpolation to compose strings</li>
<li>Additional commits viewable in <a
href="https://github.com/sass/dart-sass/compare/1.99.0...1.102.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `svelte` from 5.55.7 to 5.56.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sveltejs/svelte/releases">svelte's
releases</a>.</em></p>
<blockquote>
<h2>svelte@5.56.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: skip controlled each fast path while another batch is pending
(<a
href="https://redirect.github.com/sveltejs/svelte/pull/18625">#18625</a>)</p>
</li>
<li>
<p>fix: better whitespace handling inside printer (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18638">#18638</a>)</p>
</li>
<li>
<p>fix: don't duplicate comments in attributes (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18636">#18636</a>)</p>
</li>
<li>
<p>fix: preserve CSS comments in the AST printer (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18637">#18637</a>)</p>
</li>
</ul>
<h2>svelte@5.56.8</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: call <code>onerror</code> and provide a working
<code>reset</code> when hydrating a failed boundary (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18556">#18556</a>)</p>
</li>
<li>
<p>fix: preserve select selection when spread attributes omit value (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18561">#18561</a>)</p>
</li>
</ul>
<h2>svelte@5.56.7</h2>
<h3>Patch Changes</h3>
<ul>
<li>chore: provide <code>indent</code> option for <code>print</code> (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18474">#18474</a>)</li>
</ul>
<h2>svelte@5.56.6</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>perf: skip unnecessary blocker analysis when compiling components
without top-level await (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18548">#18548</a>)</p>
</li>
<li>
<p>fix: rerun derived that had an abort controller on reconnection (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18551">#18551</a>)</p>
</li>
</ul>
<h2>svelte@5.56.5</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>chore: drop dead code that make TSGO fail (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18496">#18496</a>)</p>
</li>
<li>
<p>fix: don't (re)connect deriveds when read inside branch/root effects
(<a
href="https://redirect.github.com/sveltejs/svelte/pull/18527">#18527</a>)</p>
</li>
<li>
<p>fix: skip unnecessary derived effect in earlier batch (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18525">#18525</a>)</p>
</li>
<li>
<p>fix: avoid declaration tag warning in event handlers (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18500">#18500</a>)</p>
</li>
<li>
<p>fix: abort deriveds own AbortSignal when it disconnects (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18400">#18400</a>)</p>
</li>
<li>
<p>fix: ensure <code>$state.eager()</code> is correctly transormed for
SSR output (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18530">#18530</a>)</p>
</li>
<li>
<p>fix: correctly transform declaration tags during SSR (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18492">#18492</a>)</p>
</li>
<li>
<p>fix: transform computed keys in keyed <code>{#each}</code>
destructuring patterns (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18521">#18521</a>)</p>
</li>
<li>
<p>fix: chain preprocessor sourcemaps with an empty
<code>sources[0]</code> instead of dropping them (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18518">#18518</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md">svelte's
changelog</a>.</em></p>
<blockquote>
<h2>5.56.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: skip controlled each fast path while another batch is pending
(<a
href="https://redirect.github.com/sveltejs/svelte/pull/18625">#18625</a>)</p>
</li>
<li>
<p>fix: better whitespace handling inside printer (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18638">#18638</a>)</p>
</li>
<li>
<p>fix: don't duplicate comments in attributes (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18636">#18636</a>)</p>
</li>
<li>
<p>fix: preserve CSS comments in the AST printer (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18637">#18637</a>)</p>
</li>
</ul>
<h2>5.56.8</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>fix: call <code>onerror</code> and provide a working
<code>reset</code> when hydrating a failed boundary (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18556">#18556</a>)</p>
</li>
<li>
<p>fix: preserve select selection when spread attributes omit value (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18561">#18561</a>)</p>
</li>
</ul>
<h2>5.56.7</h2>
<h3>Patch Changes</h3>
<ul>
<li>chore: provide <code>indent</code> option for <code>print</code> (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18474">#18474</a>)</li>
</ul>
<h2>5.56.6</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>perf: skip unnecessary blocker analysis when compiling components
without top-level await (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18548">#18548</a>)</p>
</li>
<li>
<p>fix: rerun derived that had an abort controller on reconnection (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18551">#18551</a>)</p>
</li>
</ul>
<h2>5.56.5</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>chore: drop dead code that make TSGO fail (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18496">#18496</a>)</p>
</li>
<li>
<p>fix: don't (re)connect deriveds when read inside branch/root effects
(<a
href="https://redirect.github.com/sveltejs/svelte/pull/18527">#18527</a>)</p>
</li>
<li>
<p>fix: skip unnecessary derived effect in earlier batch (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18525">#18525</a>)</p>
</li>
<li>
<p>fix: avoid declaration tag warning in event handlers (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18500">#18500</a>)</p>
</li>
<li>
<p>fix: abort deriveds own AbortSignal when it disconnects (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18400">#18400</a>)</p>
</li>
<li>
<p>fix: ensure <code>$state.eager()</code> is correctly transormed for
SSR output (<a
href="https://redirect.github.com/sveltejs/svelte/pull/18530">#18530</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="20b341f100"><code>20b341f</code></a>
Version Packages (<a
href="https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte/issues/18628">#18628</a>)</li>
<li><a
href="ee6dff80ca"><code>ee6dff8</code></a>
fix: better whitespace handling inside printer (<a
href="https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte/issues/18638">#18638</a>)</li>
<li><a
href="a1d5035d17"><code>a1d5035</code></a>
fix: preserve CSS comments in the AST printer (<a
href="https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte/issues/18637">#18637</a>)</li>
<li><a
href="https://github.com/sveltejs/svelte/commit/3ed9db4ba78f61792b87...
_Description has been truncated_
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
Bumps [svgo](https://github.com/svg/svgo) from 3.3.3 to 3.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/svg/svgo/releases">svgo's
releases</a>.</em></p>
<blockquote>
<h2>v3.3.4</h2>
<h2>What's Changed</h2>
<h3>Security</h3>
<ul>
<li><a
href="https://svgo.dev/docs/plugins/removeScripts/">removeScriptElement</a>,
remove JavaScript URIs case-insensitively and make
<code><script></code> handling namespace aware. By <a
href="https://github.com/SethFalco"><code>@SethFalco</code></a></li>
</ul>
<h2>Support</h2>
<p>SVGO v3 is not officially supported, please consider upgrading to
SVGO v4 instead. We've backported this fix as there are security
implications, but there is no commitment to do this for more complex
changes in future.</p>
<p>Consider reading our <a
href="https://svgo.dev/docs/migrations/migration-from-v3-to-v4/">Migration
Guide from v3 to v4</a> which should ease the process.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="72a23886b4"><code>72a2388</code></a>
Merge commit from fork</li>
<li>See full diff in <a
href="https://github.com/svg/svgo/compare/v3.3.3...v3.3.4">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR 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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ankitects/anki/network/alerts).
</details>
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.28.0 to 0.28.1.
<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.28.1</h2>
<ul>
<li>
<p>Disallow <code>\</code> in local development server HTTP requests (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-g7r4-m6w7-qqqr">GHSA-g7r4-m6w7-qqqr</a>)</p>
<p>This release fixes a security issue where HTTP requests to esbuild's
local development server could traverse outside of the serve directory
on Windows using a <code>\</code> backslash character. It happened due
to the use of Go's <code>path.Clean()</code> function, which only
handles Unix-style <code>/</code> characters. HTTP requests with paths
containing <code>\</code> are no longer allowed.</p>
<p>Thanks to <a
href="https://github.com/dellalibera"><code>@dellalibera</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Add integrity checks to the Deno API (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-gv7w-rqvm-qjhr">GHSA-gv7w-rqvm-qjhr</a>)</p>
<p>The previous release of esbuild added integrity checks to esbuild's
npm install script. This release also adds integrity checks to esbuild's
Deno install script. Now esbuild's Deno API will also fail with an error
if the downloaded esbuild binary contains something other than the
expected content.</p>
<p>Note that esbuild's Deno API installs from
<code>registry.npmjs.org</code> by default, but allows the
<code>NPM_CONFIG_REGISTRY</code> environment variable to override this
with a custom package registry. This change means that the esbuild
executable served by <code>NPM_CONFIG_REGISTRY</code> must now match the
expected content.</p>
<p>Thanks to <a
href="https://github.com/sondt99"><code>@sondt99</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Avoid inlining <code>using</code> and <code>await using</code>
declarations (<a
href="https://redirect.github.com/evanw/esbuild/issues/4482">#4482</a>)</p>
<p>Previously esbuild's minifier sometimes incorrectly inlined
<code>using</code> and <code>await using</code> declarations into
subsequent uses of that declaration, which then fails to dispose of the
resource correctly. This bug happened because inlining was done for
<code>let</code> and <code>const</code> declarations by avoiding doing
it for <code>var</code> declarations, which no longer worked when more
declaration types were added. Here's an example:</p>
<pre lang="js"><code>// Original code
{
using x = new Resource()
x.activate()
}
<p>// Old output (with --minify)<br />
new Resource().activate();</p>
<p>// New output (with --minify)<br />
{using e=new Resource;e.activate()}<br />
</code></pre></p>
</li>
<li>
<p>Fix module evaluation when an error is thrown (<a
href="https://redirect.github.com/evanw/esbuild/issues/4461">#4461</a>,
<a
href="https://redirect.github.com/evanw/esbuild/pull/4467">#4467</a>)</p>
<p>If an error is thrown during module evaluation, esbuild previously
didn't preserve the state of the module for subsequent module
references. This was observable if <code>import()</code> or
<code>require()</code> is used to import a module multiple times. The
thrown error is supposed to be thrown by every call to
<code>import()</code> or <code>require()</code>, not just the first.
With this release, esbuild will now throw the same error every time you
call <code>import()</code> or <code>require()</code> on a module that
throws during its evaluation.</p>
</li>
<li>
<p>Fix some edge cases around the <code>new</code> operator (<a
href="https://redirect.github.com/evanw/esbuild/issues/4477">#4477</a>)</p>
<p>Previously esbuild incorrectly printed certain edge cases involving
complex expressions inside the target of a <code>new</code> expression
(specifically an optional chain and/or a tagged template literal). The
generated code for the <code>new</code> target was not correctly wrapped
with parentheses, and either contained a syntax error or had different
semantics. These edge cases have been fixed so that they now correctly
wrap the <code>new</code> target in parentheses. Here is an example of
some affected code:</p>
<pre lang="js"><code>// Original code
new (foo()`bar`)()
new (foo()?.bar)()
<p>// Old output<br />
new foo()<code>bar</code>();<br />
new (foo())?.bar();</p>
<p></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.28.1</h2>
<ul>
<li>
<p>Disallow <code>\</code> in local development server HTTP requests (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-g7r4-m6w7-qqqr">GHSA-g7r4-m6w7-qqqr</a>)</p>
<p>This release fixes a security issue where HTTP requests to esbuild's
local development server could traverse outside of the serve directory
on Windows using a <code>\</code> backslash character. It happened due
to the use of Go's <code>path.Clean()</code> function, which only
handles Unix-style <code>/</code> characters. HTTP requests with paths
containing <code>\</code> are no longer allowed.</p>
<p>Thanks to <a
href="https://github.com/dellalibera"><code>@dellalibera</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Add integrity checks to the Deno API (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-gv7w-rqvm-qjhr">GHSA-gv7w-rqvm-qjhr</a>)</p>
<p>The previous release of esbuild added integrity checks to esbuild's
npm install script. This release also adds integrity checks to esbuild's
Deno install script. Now esbuild's Deno API will also fail with an error
if the downloaded esbuild binary contains something other than the
expected content.</p>
<p>Note that esbuild's Deno API installs from
<code>registry.npmjs.org</code> by default, but allows the
<code>NPM_CONFIG_REGISTRY</code> environment variable to override this
with a custom package registry. This change means that the esbuild
executable served by <code>NPM_CONFIG_REGISTRY</code> must now match the
expected content.</p>
<p>Thanks to <a
href="https://github.com/sondt99"><code>@sondt99</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Avoid inlining <code>using</code> and <code>await using</code>
declarations (<a
href="https://redirect.github.com/evanw/esbuild/issues/4482">#4482</a>)</p>
<p>Previously esbuild's minifier sometimes incorrectly inlined
<code>using</code> and <code>await using</code> declarations into
subsequent uses of that declaration, which then fails to dispose of the
resource correctly. This bug happened because inlining was done for
<code>let</code> and <code>const</code> declarations by avoiding doing
it for <code>var</code> declarations, which no longer worked when more
declaration types were added. Here's an example:</p>
<pre lang="js"><code>// Original code
{
using x = new Resource()
x.activate()
}
<p>// Old output (with --minify)<br />
new Resource().activate();</p>
<p>// New output (with --minify)<br />
{using e=new Resource;e.activate()}<br />
</code></pre></p>
</li>
<li>
<p>Fix module evaluation when an error is thrown (<a
href="https://redirect.github.com/evanw/esbuild/issues/4461">#4461</a>,
<a
href="https://redirect.github.com/evanw/esbuild/pull/4467">#4467</a>)</p>
<p>If an error is thrown during module evaluation, esbuild previously
didn't preserve the state of the module for subsequent module
references. This was observable if <code>import()</code> or
<code>require()</code> is used to import a module multiple times. The
thrown error is supposed to be thrown by every call to
<code>import()</code> or <code>require()</code>, not just the first.
With this release, esbuild will now throw the same error every time you
call <code>import()</code> or <code>require()</code> on a module that
throws during its evaluation.</p>
</li>
<li>
<p>Fix some edge cases around the <code>new</code> operator (<a
href="https://redirect.github.com/evanw/esbuild/issues/4477">#4477</a>)</p>
<p>Previously esbuild incorrectly printed certain edge cases involving
complex expressions inside the target of a <code>new</code> expression
(specifically an optional chain and/or a tagged template literal). The
generated code for the <code>new</code> target was not correctly wrapped
with parentheses, and either contained a syntax error or had different
semantics. These edge cases have been fixed so that they now correctly
wrap the <code>new</code> target in parentheses. Here is an example of
some affected code:</p>
<pre lang="js"><code>// Original code
new (foo()`bar`)()
new (foo()?.bar)()
<p>// Old output<br />
new foo()<code>bar</code>();<br />
new (foo())?.bar();<br />
</code></pre></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bb9db84c02"><code>bb9db84</code></a>
publish 0.28.1 to npm</li>
<li><a
href="9ff053e53b"><code>9ff053e</code></a>
security: add integrity checks to the Deno API</li>
<li><a
href="0a9bf2135b"><code>0a9bf21</code></a>
enforce non-negative size in gzip parser</li>
<li><a
href="e2a1a71320"><code>e2a1a71</code></a>
security: forbid <code>\\</code> in local dev server requests</li>
<li><a
href="83a2cbfc35"><code>83a2cbf</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4482">#4482</a>:
don't inline <code>using</code> declarations</li>
<li><a
href="308ad745d8"><code>308ad74</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4471">#4471</a>:
renaming of nested <code>var</code> declarations</li>
<li><a
href="f013f5f99a"><code>f013f5f</code></a>
fix some typos</li>
<li><a
href="aafd6e48b1"><code>aafd6e4</code></a>
chore: fix some minor issues in comments (<a
href="https://redirect.github.com/evanw/esbuild/issues/4462">#4462</a>)</li>
<li><a
href="15300c30b5"><code>15300c3</code></a>
follow up: cjs evaluation fixes</li>
<li><a
href="1bda0c31d7"><code>1bda0c3</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4461">#4461</a>,
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4467">#4467</a>:
esm evaluation fixes</li>
<li>Additional commits viewable in <a
href="https://github.com/evanw/esbuild/compare/v0.28.0...v0.28.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR 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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ankitects/anki/network/alerts).
</details>
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.7 to 7.5.21.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0cd9cc3c58"><code>0cd9cc3</code></a>
7.5.21</li>
<li><a
href="631ae59121"><code>631ae59</code></a>
list: prevent unbounded recursion</li>
<li><a
href="ebbb720941"><code>ebbb720</code></a>
7.5.20</li>
<li><a
href="2f271963a7"><code>2f27196</code></a>
fix: fully disable and dispose of unzip when aborting parser</li>
<li><a
href="be440da64e"><code>be440da</code></a>
7.5.19</li>
<li><a
href="2812e93386"><code>2812e93</code></a>
add maxDecompressionRatio guard against explosive decompression</li>
<li><a
href="9ecd4d2956"><code>9ecd4d2</code></a>
7.5.18</li>
<li><a
href="9e78bf058b"><code>9e78bf0</code></a>
refuse to let header size be less than 0</li>
<li><a
href="e02a4e9e01"><code>e02a4e9</code></a>
pax: parse values according to known types</li>
<li><a
href="9cbdb31e5e"><code>9cbdb31</code></a>
7.5.17</li>
<li>Additional commits viewable in <a
href="https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.21">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~isaacs">isaacs</a>, a new releaser for tar
since your current version.</p>
</details>
<details>
<summary>Install script changes</summary>
<p>This version adds <code>prepare</code> script that runs during
installation. Review the package contents before updating.</p>
</details>
<br />
[](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ankitects/anki/network/alerts).
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
## Linked issue
Closes#4863
## Summary / motivation
Adds Playwright as the e2e test framework so contributors can write
browser-based tests against a real headless Anki instance. There was no
automated way to exercise mediasrv pages, SvelteKit routes, or the
`/_anki/` RPC surface from a browser, this PR establishes that harness.
Key pieces:
- `qt/tests/launch_anki_for_e2e.py` — spawns a throwaway Anki instance
(temp `ANKI_BASE`, `QT_QPA_PLATFORM=offscreen`). Pre-seeds `prefs21.db`
so Anki skips the language picker and profile chooser and goes straight
to serving mediasrv.
- `playwright.config.ts` — points `webServer` at the launcher; polls
`/favicon.ico` as the readiness probe.
- `ts/tests/e2e/` — `fixtures.ts` base and a sanity spec that verifies
mediasrv is reachable and a SvelteKit page hydrates.
- `justfile` — `just test-e2e` recipe; Chromium installed to
`out/playwright-browsers/`.
- CI — e2e step in `check-linux`; failed-run artifacts uploaded for 7
days.
- `docs/e2e-testing.md` — contributor guide covering setup, managed vs
reuse-server modes, and writing new tests.
## How to test
Build the project once, then run the e2e suite in managed mode (no
separate `./run` needed — the launcher is started automatically):
```shell
just build
just test-e2e
```
## Before / after behavior (optional)
Before: no browser-level test harness existed.
After: `just test-e2e` drives a real headless Anki instance via
Playwright.
## Risk / compatibility / migration
No production code changed. New dev-only files and CI step only.
Chromium is installed to `out/playwright-browsers/` (gitignored) and
does not affect the regular build.
---------
Co-authored-by: Abdo <abdo@abdnh.net>
## Linked issue
Closes#4840
## Summary / motivation
Adds Vitest V8 coverage for TypeScript/Svelte tests via
`@vitest/coverage-v8`.
Introduces `just test-ts --coverage` and `just test-ts --coverage
--html`,
and wires TypeScript into the `just test --coverage` umbrella —
completing
coverage support across all three stacks (Python, Rust, TypeScript).
The threshold is set to 5% — intentionally low because the Vitest test
count is small relative to the TypeScript/Svelte source surface. It is
meant to be raised as more tests are added.
## How to test
```sh
# Existing behavior unchanged
just test-ts
# Terminal summary + enforces 5% line coverage threshold
just test-ts --coverage
# Terminal summary + HTML report under out/coverage/typescript/
just test-ts --coverage --html
# Full umbrella — all three stacks
just test --coverage
just test --coverage --html
```
### Checklist
- [x] I ran `./ninja check` or an equivalent relevant check locally.
### Details
- `@vitest/coverage-v8` pinned at `3.2.4` in `package.json`.
- Reports are written to `out/coverage/typescript/` via
`--coverage.reportsDirectory=../out/coverage/typescript` (relative to
the `ts/` working directory where vitest runs).
- V8 provider is preferred over Istanbul: faster and requires no Babel
transform for TypeScript projects.
- Coverage measures only code reachable through Vitest's module graph —
Svelte component rendering is not covered.
- The `yarn` justfile variable is added for platform-aware yarn
invocation (Windows vs Unix).
## Before / after behavior
Before: no `just test-ts`, no TypeScript coverage.
After: `just test-ts` runs Vitest via ninja; `just test-ts --coverage`
runs with V8 instrumentation.
`just test --coverage` now spans all three stacks.
---------
Co-authored-by: Abdo <abdo@abdnh.net>
* chore(deps): bump svgo from 3.2.0 to 3.3.3
* Fixes my username to CONTRIBUTORS list.
---------
Co-authored-by: Fernando Lins <fernandolins@users.noreply.github.com>
Most of our modules were using a vulnerable 10.x version. One module
that's a transitive dep of eslint was using an older 7.x version.
Eslint still seems to function with this update. We're not on the
latest eslint version, so we'll probably want to update to that at one
point too.
* Revert "Sanitize field content in editor"
This reverts commit 1c156905f8.
* Use CSP to block inline JS content in editor
This blocks inline scripts, scripts in the media folder, and
handlers like onclick in the editor. This is nicer than the previous
solution - it doesn't make any permanent changes, and leaves other
content like SVGs alone. Thanks to Nil Admirari for the suggestion.
* Sanitize field content in editor
The editor already strips script tags from fields, but was allowing
through Javascript in things like onclick handlers. We block this now,
as the editor context has access to internal APIs that we don't want to
expose to untrusted third-party code.
* Require an auth token for API access
We were previously inspecting the referrer, but that is spoofable,
and doesn't guard against other processes on the machine.
To accomplish this, we use a request interceptor to automatically
add an auth token to webviews with the right context. Some related
changes were required:
- We avoid storing _page, which was leading to leaks & warning on exit
- At webview creation (or set_kind() invocation), we assign either
an authenticated or unauthenticated web profile.
- Some of our screens initialize the AnkiWebView when calling, e.g.,
aqt.forms.stats.Ui_Dialog(). They then immediately call .set_kind().
This reveals a race condition in our DOM handling code: the webview
initialization creates an empty page with the injected script, which
causes a domDone signal to be sent back. This signal arrives after
we've created another page with .set_kind(), causing our code to think
the DOM is ready when it's not. Then when we try to inject the dynamic
styling, we get an error, as the DOM is not ready yet. In the absence
of better solutions, I've added a hack to set_kind() to deal with this
for now.
* Provide AnkiWebPage init defaults for existing add-on callers
* Inject bridge script when profile set-up skipped
Some add-ons fully override AnkiWebPage.__init__ and thus depend on _setupBridge injecting the JS bridge script.
With this change we account for these cases, while giving add-ons the opportunity to look for solutions that do not require overriding AnkiWebPage.__init__ completely.
* Add some missed pages/endpoints (thanks to iamllama)
* Avoid sending API key for remote resources
Thanks to Abdo for the report
---------
Co-authored-by: Aristotelis P <201596065+aps-amboss@users.noreply.github.com>
* replace use of deprecated createClassComponent with mount
* bump esbuild-svelte from 0.8.1 to 0.9.2
* mathjax-element.ts -> mathjax-element.svelte.ts
* move caret after tick
* fix: specify canvas npm optional dep ignore workaround more cleanly
this should allow it to work with yarn classic and yarn modern
* chore: add self to CONTRIBUTORS
* Update to stable Svelte 5 release
This causes a bunch of warnings to be omitted:
ts/routes/graphs/RangeBox.svelte:52:18
Warn: Properties of objects and arrays are not reactive unless in runes mode. Changes to this property will not cause the reactive statement to update (svelte)
break;
case RevlogRange.All:
$days = 0;
They are triggered on enum references, and it appears to be a bug.
May need to report it to Svelte?
* Deps update
* Silence spurious errors + fix a real one
https://github.com/sveltejs/svelte/issues/13811
* Update to Svelte 5
* Fix `<tr> is invalid inside <table>`
* Update sveltekit-svg to match svelte version
Fixes deck options failing to load, and a bunch of warnings with
./yarn dev
* Fix graph tooltips
* Fix editor loading
* Fix MathJax editor not loading
* Formatting
* Fix new formatting errors
* Merge remote-tracking branch 'origin/main' into svelte5
* Remove slot inside EditorToolbar
I think this is just stray code left over from a refactor, but I'm
not 100% sure.
Fixes
Error: Object literal may only specify known properties, and 'children' does not exist in type '{ size: number; wrap: boolean; api?: Partial<EditorToolbarAPI> | undefined; }'. (ts)
<div class="note-editor">
<EditorToolbar {size} {wrap} api={toolbar}>
<slot slot="notetypeButtons" name="notetypeButtons" />
* Fix component typing error
* Comment out svelte/internal exports, so editor loads
* Fix image occlusions in editor
* Revert "Remove slot inside EditorToolbar"
This reverts commit b3095e07ac,
which prevented the Preview button from showing in the browser.
This will break our tests again.
* Update vite
* Disable routes/tmp for now
* Fix references issue in routes/tmp
* Bump Python deps
Primarily for flask-cors CVE
* Bump TS deps; pin license checker
Current checker is missing the binary
https://github.com/RSeidelsohn/license-checker-rseidelsohn/issues/118
* Update Rust deps
Hyper and axum are held back as we currently make use of the older
http library that reqwest pulls in
* Update amd64 docker container to Debian 11
This bumps the minimum required glibc to 2.29, which is 2019
Ubuntu/Fedora, and 2021 Debian.
Also remove the unused download of ninja
* Update to latest dprint
Unblocked by the glibc upgrade
* Add sveltekit-svg plugin to fix svg icon styling
Closes#3127.
* Unify svg icon usage
Moves all icons into ts/lib/components/icons.ts and uses a single component to render
them both with eslint and svelte-kit.
* Fix spinning revert icon not being centered
* Use svg earth icon for global label
* Add tooltip to global label icon
* Remove eslint-plugin-simple-import-sort
Imports are already sorted by dprint with conflicting rules.
* Update to latest Node LTS
* Add sveltekit
* Split tslib into separate @generated and @tslib components
SvelteKit's path aliases don't support multiple locations, so our old
approach of using @tslib to refer to both ts/lib and out/ts/lib will no
longer work. Instead, all generated sources and their includes are
placed in a separate out/ts/generated folder, and imported via @generated
instead. This also allows us to generate .ts files, instead of needing
to output separate .d.ts and .js files.
* Switch package.json to module type
* Avoid usage of baseUrl
Incompatible with SvelteKit
* Move sass into ts; use relative links
SvelteKit's default sass support doesn't allow overriding loadPaths
* jest->vitest, graphs example working with yarn dev
* most pages working in dev mode
* Some fixes after rebasing
* Fix/silence some svelte-check errors
* Get image-occlusion working with Fabric types
* Post-rebase lock changes
* Editor is now checked
* SvelteKit build integrated into ninja
* Use the new SvelteKit entrypoint for pages like congrats/deck options/etc
* Run eslint once for ts/**; fix some tests
* Fix a bunch of issues introduced when rebasing over latest main
* Run eslint fix
* Fix remaining eslint+pylint issues; tests now all pass
* Fix some issues with a clean build
* Latest bufbuild no longer requires @__PURE__ hack
* Add a few missed dependencies
* Add yarn.bat to fix Windows build
* Fix pages failing to show when ANKI_API_PORT not defined
* Fix svelte-check and vitest on Windows
* Set node path in ./yarn
* Move svelte-kit output to ts/.svelte-kit
Sadly, I couldn't figure out a way to store it in out/ if out/ is
a symlink, as it breaks module resolution when SvelteKit is run.
* Allow HMR inside Anki
* Skip SvelteKit build when HMR is defined
* Fix some post-rebase issues
I should have done a normal merge instead.
* fix: blur in io, remove panzoom and use fabricjs for panzoom
- remove panzoom
- implement panzoom using fabricjs
- set background image for canvas
- add bounding rect for canvas
- draw or add point inside in bounding rect
- update zoom tool
* support pinch to zoom on mobile client
* fix lagging of canvas, zoom in draw mode
* panning in touch events
* Replace css_browser_selector
* Add classes to root element instead of body
* Export addBrowserClasses() in reviewer_extras for mobile clients (dae)
* Avoid setting .mac on iOS devices (dae)
Due to a change in svelte-check 3.5.2 (likely https://github.com/sveltejs/language-tools/pull/2146),
we can no longer have composite enabled, as svelte-check spits out errors
about files in other project references not being listed in included files.
This should hopefully not make a difference to us, as we weren't taking
advantage of TypeScript's project compilation, as svelte-check doesn't support
it, and we use esbuild for JS conversion.
* eslint-plugin-svelte3 -> eslint-plugin-svelte
The former is deprecated, and blocks an update to Svelte 4.
Also drop unused svelte2tsx and types package.
* Drop unused symbols code for now
It may be added back in the future, but for now dropping it will save
200k from our editor bundle.
* Remove sass and caniuse-lite pins
The latter no longer seems to be required. The former was added to
suppress deprecation warnings when compiling the old bootstrap version
we have pinned. Those are hidden by the build tool now (though we really
need to address them at one point: https://github.com/ankitects/anki/issues/1385)
Also removed unused files section.
* Prevent proto compile from looking in node_modules/@types/sass
When deps are updated, tsc aborts because @types/sass is a dummy package
without an index.d.ts file.
* Filter Svelte warnings out of ./run
* Update to latest Bootstrap
This fixes the deprecation warnings we were getting during build:
bootstrap doesn't accept runtime CSS variables being set in Sass, as
it wants to apply transforms to the colors.
Closes#1385
* Start port to Svelte 4
- svelte-check tests have a bunch of failures; ./run works
- Svelte no longer exposes internals, so we can't use create_in_transition
- Also update esbuild and related components like esbuild-svelte
* Fix test failures
Had to add some more a11y warning ignores - have added
https://github.com/ankitects/anki/issues/2564 to address that in the
future.
* Remove some dependency pins
+ Remove sass, we don't need it directly
* Bump remaining JS deps that have a current semver
* Upgrade dprint/license-checker/marked
The new helper method avoids marked printing deprecation warnings to
the console.
Also remove unused lodash/long types, and move lodahs-es to devdeps
* Upgrade eslint and fluent packages
* Update @floating-ui/dom
The only dependencies remaining are currently blocked:
- Jest 29 gives some error about require vs import; may not be worth
investigating if we switch to Deno for the tests
- CodeMirror 6 is a big API change and will need work.
* Roll dprint back to an earlier version
GitHub dropped support for Ubuntu 18 runners, causing dprint's artifacts
to require a glibc version greater than what Anki CI currently has.
* Fix .no-reduce-motion missing from graphs spinner, and not being honored
* Begin migration from protobuf.js -> protobuf-es
Motivation:
- Protobuf-es has a nicer API: messages are represented as classes, and
fields which should exist are not marked as nullable.
- As it uses modules, only the proto messages we actually use get included
in our bundle output. Protobuf.js put everything in a namespace, which
prevented tree-shaking, and made it awkward to access inner messages.
- ./run after touching a proto file drops from about 8s to 6s on my machine. The tradeoff
is slower decoding/encoding (#2043), but that was mainly a concern for the
graphs page, and was unblocked by
37151213cd
Approach/notes:
- We generate the new protobuf-es interface in addition to existing
protobuf.js interface, so we can migrate a module at a time, starting
with the graphs module.
- rslib:proto now generates RPC methods for TS in addition to the Python
interface. The input-arg-unrolling behaviour of the Python generation is
not required here, as we declare the input arg as a PlainMessage<T>, which
marks it as requiring all fields to be provided.
- i64 is represented as bigint in protobuf-es. We were using a patch to
protobuf.js to get it to output Javascript numbers instead of long.js
types, but now that our supported browser versions support bigint, it's
probably worth biting the bullet and migrating to bigint use. Our IDs
fit comfortably within MAX_SAFE_INTEGER, but that may not hold for future
fields we add.
- Oneofs are handled differently in protobuf-es, and are going to need
some refactoring.
Other notable changes:
- Added a --mkdir arg to our build runner, so we can create a dir easily
during the build on Windows.
- Simplified the preference handling code, by wrapping the preferences
in an outer store, instead of a separate store for each individual
preference. This means a change to one preference will trigger a redraw
of all components that depend on the preference store, but the redrawing
is cheap after moving the data processing to Rust, and it makes the code
easier to follow.
- Drop async(Reactive).ts in favour of more explicit handling with await
blocks/updating.
- Renamed add_inputs_to_group() -> add_dependency(), and fixed it not adding
dependencies to parent groups. Renamed add() -> add_action() for clarity.
* Remove a couple of unused proto imports
* Migrate card info
* Migrate congrats, image occlusion, and tag editor
+ Fix imports for multi-word proto files.
* Migrate change-notetype
* Migrate deck options
* Bump target to es2020; simplify ts lib list
Have used caniuse.com to confirm Chromium 77, iOS 14.5 and the Chrome
on Android support the full es2017-es2020 features.
* Migrate import-csv
* Migrate i18n and fix missing output types in .js
* Migrate custom scheduling, and remove protobuf.js
To mostly maintain our old API contract, we make use of protobuf-es's
ability to convert to JSON, which follows the same format as protobuf.js
did. It doesn't cover all case: users who were previously changing the
variant of a type will need to update their code, as assigning to a new
variant no longer automatically removes the old one, which will cause an
error when we try to convert back from JSON. But I suspect the large majority
of users are adjusting the current variant rather than creating a new one,
and this saves us having to write proxy wrappers, so it seems like a
reasonable compromise.
One other change I made at the same time was to rename value->kind for
the oneofs in our custom study protos, as 'value' was easily confused
with the 'case/value' output that protobuf-es has.
With protobuf.js codegen removed, touching a proto file and invoking
./run drops from about 8s to 6s.
This closes#2043.
* Allow tree-shaking on protobuf types
* Display backend error messages in our ts alert()
* Make sourcemap generation opt-in for ts-run
Considerably slows down build, and not used most of the time.