diff --git a/.changeset/fast-parser-hotpaths.md b/.changeset/fast-parser-hotpaths.md
new file mode 100644
index 0000000000..f442e2435f
--- /dev/null
+++ b/.changeset/fast-parser-hotpaths.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+perf: optimize parser hot paths for faster compilation
diff --git a/.changeset/rotten-taxes-float.md b/.changeset/rotten-taxes-float.md
new file mode 100644
index 0000000000..4c04f78324
--- /dev/null
+++ b/.changeset/rotten-taxes-float.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+chore: more efficient effect scheduling
diff --git a/.changeset/vast-ties-wash.md b/.changeset/vast-ties-wash.md
new file mode 100644
index 0000000000..39c14b4a17
--- /dev/null
+++ b/.changeset/vast-ties-wash.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+chore: null out current_batch before committing branches
diff --git a/.github/workflows/pkg.pr.new.yml b/.github/workflows/pkg.pr.new.yml
index e7cc1facad..cd3df32064 100644
--- a/.github/workflows/pkg.pr.new.yml
+++ b/.github/workflows/pkg.pr.new.yml
@@ -10,6 +10,10 @@ on:
description: 'Commit SHA to build'
required: true
type: string
+ pr:
+ description: 'PR number to comment on'
+ required: true
+ type: number
permissions: {}
@@ -127,26 +131,16 @@ jobs:
return;
}
- const { data: pulls } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
- owner: context.repo.owner,
- repo: context.repo.repo,
- commit_sha: '${{ inputs.sha }}',
- });
-
- const open = pulls.filter(p => p.state === 'open');
-
- if (open.length === 0) {
- core.setFailed(`No open PR found for commit ${{ inputs.sha }}`);
- return;
- }
-
- if (open.length > 1) {
- const nums = open.map(p => `#${p.number}`).join(', ');
- core.setFailed(`Multiple open PRs found for commit ${{ inputs.sha }}: ${nums}`);
+ // For workflow_dispatch, use the explicitly provided PR number.
+ // We can't use listPullRequestsAssociatedWithCommit because fork
+ // commits don't exist in the base repo, so the API returns nothing.
+ const pr = Number('${{ inputs.pr }}');
+ if (!pr || isNaN(pr)) {
+ core.setFailed('workflow_dispatch requires a valid pr input');
return;
}
- core.setOutput('number', open[0].number);
+ core.setOutput('number', pr);
- name: Post or update comment
uses: actions/github-script@v8
diff --git a/documentation/docs/05-special-elements/01-svelte-boundary.md b/documentation/docs/05-special-elements/01-svelte-boundary.md
index 40e8d144e1..e1ad00a50b 100644
--- a/documentation/docs/05-special-elements/01-svelte-boundary.md
+++ b/documentation/docs/05-special-elements/01-svelte-boundary.md
@@ -102,3 +102,40 @@ If an `onerror` function is provided, it will be called with the same two `error
```
If an error occurs inside the `onerror` function (or if you rethrow the error), it will be handled by a parent boundary if such exists.
+
+## Using `transformError`
+
+By default, error boundaries have no effect on the server — if an error occurs during rendering, the render as a whole will fail.
+
+Since 5.51 you can control this behaviour for boundaries with a `failed` snippet, by calling [`render(...)`](imperative-component-api#render) with a `transformError` function.
+
+> [!NOTE] If you're using Svelte via a framework such as SvelteKit, you most likely don't have direct access to the `render(...)` call — the framework must configure `transformError` on your behalf. SvelteKit will add support for this in the near future, via the [`handleError`](../kit/hooks#Shared-hooks-handleError) hook.
+
+The `transformError` function must return a JSON-stringifiable object which will be used to render the `failed` snippet. This object will be serialized and used to hydrate the snippet in the browser:
+
+```js
+// @errors: 1005
+import { render } from 'svelte/server';
+import App from './App.svelte';
+
+const { head, body } = await render(App, {
+ transformError: (error) => {
+ // log the original error, with the stack trace...
+ console.error(error);
+
+ // ...and return a sanitized user-friendly error
+ // to display in the `failed` snippet
+ return {
+ message: 'An error occurred!'
+ };
+ };
+});
+```
+
+If `transformError` throws (or rethrows) an error, `render(...)` as a whole will fail with that error.
+
+> [!NOTE] Errors that occur during server-side rendering can contain sensitive information in the `message` and `stack`. It's recommended to redact these rather than sending them unaltered to the browser.
+
+If the boundary has an `onerror` handler, it will be called upon hydration with the deserialized error object.
+
+The [`mount`](imperative-component-api#mount) and [`hydrate`](imperative-component-api#hydrate) functions also accept a `transformError` option, which defaults to the identity function. As with `render`, this function transforms a render-time error before it is passed to a `failed` snippet or `onerror` handler.
diff --git a/documentation/docs/05-special-elements/03-svelte-document.md b/documentation/docs/05-special-elements/03-svelte-document.md
index 43f02865e6..47c382ee56 100644
--- a/documentation/docs/05-special-elements/03-svelte-document.md
+++ b/documentation/docs/05-special-elements/03-svelte-document.md
@@ -10,12 +10,12 @@ title:
```
-Similarly to ``, this element allows you to add listeners to events on `document`, such as `visibilitychange`, which don't fire on `window`. It also lets you use [actions](use) on `document`.
+Similarly to ``, this element allows you to add listeners to events on `document`, such as `visibilitychange`, which don't fire on `window`. It also lets you use [attachments](@attach) on `document`.
As with ``, this element may only appear the top level of your component and must never be inside a block or element.
```svelte
-
+
```
You can also bind to the following properties:
diff --git a/documentation/docs/07-misc/03-typescript.md b/documentation/docs/07-misc/03-typescript.md
index 49ecd8adb5..899849473c 100644
--- a/documentation/docs/07-misc/03-typescript.md
+++ b/documentation/docs/07-misc/03-typescript.md
@@ -75,7 +75,7 @@ In both cases, a `svelte.config.js` with `vitePreprocess` will be added. Vite/Sv
### Other build tools
-If you're using tools like Rollup or Webpack instead, install their respective Svelte plugins. For Rollup that's [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte) and for Webpack that's [svelte-loader](https://github.com/sveltejs/svelte-loader). For both, you need to install `typescript` and `svelte-preprocess` and add the preprocessor to the plugin config (see the respective READMEs for more info). If you're starting a new project, you can also use the [rollup](https://github.com/sveltejs/template) or [webpack](https://github.com/sveltejs/template-webpack) template to scaffold the setup from a script.
+If you're using tools like Rollup or Webpack instead, install their respective Svelte plugins. For Rollup that's [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte) and for Webpack that's [svelte-loader](https://github.com/sveltejs/svelte-loader). For both, you need to install `typescript` and `svelte-preprocess` and add the preprocessor to the plugin config (see the respective READMEs for more info).
> [!NOTE] If you're starting a new project, we recommend using SvelteKit or Vite instead
diff --git a/documentation/docs/07-misc/07-v5-migration-guide.md b/documentation/docs/07-misc/07-v5-migration-guide.md
index 5a80734b7a..564c707fd2 100644
--- a/documentation/docs/07-misc/07-v5-migration-guide.md
+++ b/documentation/docs/07-misc/07-v5-migration-guide.md
@@ -682,6 +682,24 @@ Previously, Svelte employed a very complicated algorithm to determine if whitesp
- Whitespace between nodes is collapsed to one whitespace
- Whitespace at the start and end of a tag is removed completely
+
+ This new behavior is slightly different from native HTML rendering. For example, `foo - bar
` will render:
+
+ - `foo - bar` in HTML
+ - `foo- bar` in Svelte 5
+
+ You can reintroduce the missing space by moving it outside the ``...
+
+ ```svelte
+ foo - bar
+ ```
+
+...or, if necessary for styling reasons, including it as an expression:
+
+```svelte
+ foo{' '}- bar
+```
+
- Certain exceptions apply such as keeping whitespace inside `pre` tags
As before, you can disable whitespace trimming by setting the `preserveWhitespace` option in your compiler settings or on a per-component basis in ``.
diff --git a/documentation/docs/98-reference/.generated/client-errors.md b/documentation/docs/98-reference/.generated/client-errors.md
index 8601a728a7..7fccac5808 100644
--- a/documentation/docs/98-reference/.generated/client-errors.md
+++ b/documentation/docs/98-reference/.generated/client-errors.md
@@ -62,6 +62,14 @@ Keyed each block has duplicate key at indexes %a% and %b%
Keyed each block has duplicate key `%value%` at indexes %a% and %b%
```
+### each_key_volatile
+
+```
+Keyed each block has key that is not idempotent — the key for item at index %index% was `%a%` but is now `%b%`. Keys must be the same each time for a given item
+```
+
+The key expression in a keyed each block must return the same value when called multiple times for the same item. Using expressions like `[item.a, item.b]` creates a new array each time, which will never be equal to itself. Instead, use a primitive value or create a stable key like `item.a + '-' + item.b`.
+
### effect_in_teardown
```
diff --git a/documentation/docs/98-reference/.generated/server-errors.md b/documentation/docs/98-reference/.generated/server-errors.md
index c98756afec..0ee6fd0614 100644
--- a/documentation/docs/98-reference/.generated/server-errors.md
+++ b/documentation/docs/98-reference/.generated/server-errors.md
@@ -16,6 +16,14 @@ Encountered asynchronous work while rendering synchronously.
You (or the framework you're using) called [`render(...)`](svelte-server#render) with a component containing an `await` expression. Either `await` the result of `render` or wrap the `await` (or the component containing it) in a [``](svelte-boundary) with a `pending` snippet.
+### dynamic_element_invalid_tag
+
+```
+`` is not a valid element name — the element will not be rendered
+```
+
+The value passed to the `this` prop of `` must be a valid HTML element, SVG element, MathML element, or custom element name. A value containing invalid characters (such as whitespace or special characters) was provided, which could be a security risk. Ensure only valid tag names are passed.
+
### html_deprecated
```
diff --git a/package.json b/package.json
index b305ce9cd1..34079f43cf 100644
--- a/package.json
+++ b/package.json
@@ -27,12 +27,12 @@
},
"devDependencies": {
"@changesets/cli": "^2.29.8",
- "@sveltejs/eslint-config": "^8.3.5",
+ "@eslint/js": "^10.0.0",
+ "@sveltejs/eslint-config": "^9.0.0",
"@svitejs/changesets-changelog-github-compact": "^1.1.0",
"@types/node": "^20.11.5",
"@types/picomatch": "^4.0.2",
"@vitest/coverage-v8": "^2.1.9",
- "@eslint/js": "^10.0.0",
"eslint": "^10.0.0",
"eslint-plugin-lube": "^0.5.1",
"eslint-plugin-svelte": "^3.15.0",
@@ -42,15 +42,8 @@
"prettier-plugin-svelte": "^3.4.0",
"svelte": "workspace:^",
"typescript": "^5.5.4",
- "typescript-eslint": "^8.55.0",
+ "typescript-eslint": "^8.56.0",
"v8-natives": "^1.2.5",
"vitest": "^2.1.9"
- },
- "pnpm": {
- "peerDependencyRules": {
- "allowedVersions": {
- "eslint": "10"
- }
- }
}
}
diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md
index 4e4f4f6088..c7b7ea7f58 100644
--- a/packages/svelte/CHANGELOG.md
+++ b/packages/svelte/CHANGELOG.md
@@ -1,5 +1,101 @@
# svelte
+## 5.53.5
+
+### Patch Changes
+
+- fix: escape `innerText` and `textContent` bindings of `contenteditable` ([`0df5abcae223058ceb95491470372065fb87951d`](https://github.com/sveltejs/svelte/commit/0df5abcae223058ceb95491470372065fb87951d))
+
+- fix: sanitize `transformError` values prior to embedding in HTML comments ([`0298e979371bb583855c9810db79a70a551d22b9`](https://github.com/sveltejs/svelte/commit/0298e979371bb583855c9810db79a70a551d22b9))
+
+## 5.53.4
+
+### Patch Changes
+
+- fix: set server context after async transformError ([#17799](https://github.com/sveltejs/svelte/pull/17799))
+
+- fix: hydrate if blocks correctly ([#17784](https://github.com/sveltejs/svelte/pull/17784))
+
+- fix: handle default parameters scope leaks ([#17788](https://github.com/sveltejs/svelte/pull/17788))
+
+- fix: prevent flushed effects from running again ([#17787](https://github.com/sveltejs/svelte/pull/17787))
+
+## 5.53.3
+
+### Patch Changes
+
+- fix: render `:catch` of `#await` block with correct key ([#17769](https://github.com/sveltejs/svelte/pull/17769))
+
+- chore: pin aria-query@5.3.1 ([#17772](https://github.com/sveltejs/svelte/pull/17772))
+
+- fix: make string coercion consistent to `toString` ([#17774](https://github.com/sveltejs/svelte/pull/17774))
+
+## 5.53.2
+
+### Patch Changes
+
+- fix: update expressions on server deriveds ([#17767](https://github.com/sveltejs/svelte/pull/17767))
+
+- fix: further obfuscate `node:crypto` import from overzealous static analysis ([#17763](https://github.com/sveltejs/svelte/pull/17763))
+
+## 5.53.1
+
+### Patch Changes
+
+- fix: handle shadowed function names correctly ([#17753](https://github.com/sveltejs/svelte/pull/17753))
+
+## 5.53.0
+
+### Minor Changes
+
+- feat: allow comments in tags ([#17671](https://github.com/sveltejs/svelte/pull/17671))
+
+- feat: allow error boundaries to work on the server ([#17672](https://github.com/sveltejs/svelte/pull/17672))
+
+### Patch Changes
+
+- fix: use TrustedHTML to test for customizable `` support, where necessary ([#17743](https://github.com/sveltejs/svelte/pull/17743))
+
+- fix: ensure head effects are kept in the effect tree ([#17746](https://github.com/sveltejs/svelte/pull/17746))
+
+- chore: deactivate current_batch by default in unset_context ([#17738](https://github.com/sveltejs/svelte/pull/17738))
+
+## 5.52.0
+
+### Minor Changes
+
+- feat: support TrustedHTML in `{@html}` expressions ([#17701](https://github.com/sveltejs/svelte/pull/17701))
+
+### Patch Changes
+
+- fix: repair dynamic component truthy/falsy hydration mismatches ([#17737](https://github.com/sveltejs/svelte/pull/17737))
+
+- fix: re-run non-render-bound deriveds on the server ([#17674](https://github.com/sveltejs/svelte/pull/17674))
+
+## 5.51.5
+
+### Patch Changes
+
+- fix: check to make sure `svelte:element` tags are valid during SSR ([`73098bb26c6f06e7fd1b0746d817d2c5ee90755f`](https://github.com/sveltejs/svelte/commit/73098bb26c6f06e7fd1b0746d817d2c5ee90755f))
+
+- fix: misc option escaping and backwards compatibility ([#17741](https://github.com/sveltejs/svelte/pull/17741))
+
+- fix: strip event handlers during SSR ([`a0c7f289156e9fafaeaf5ca14af6c06fe9b9eae5`](https://github.com/sveltejs/svelte/commit/a0c7f289156e9fafaeaf5ca14af6c06fe9b9eae5))
+
+- fix: replace usage of `for in` with `for of Object.keys` ([`f89c7ddd7eebaa1ef3cc540400bec2c9140b330c`](https://github.com/sveltejs/svelte/commit/f89c7ddd7eebaa1ef3cc540400bec2c9140b330c))
+
+- fix: always escape option body in SSR ([`f7c80da18c215e3727c2a611b0b8744cc6e504c5`](https://github.com/sveltejs/svelte/commit/f7c80da18c215e3727c2a611b0b8744cc6e504c5))
+
+- chore: upgrade `devalue` ([#17739](https://github.com/sveltejs/svelte/pull/17739))
+
+## 5.51.4
+
+### Patch Changes
+
+- chore: proactively defer effects in pending boundary ([#17734](https://github.com/sveltejs/svelte/pull/17734))
+
+- fix: detect and error on non-idempotent each block keys in dev mode ([#17732](https://github.com/sveltejs/svelte/pull/17732))
+
## 5.51.3
### Patch Changes
diff --git a/packages/svelte/messages/client-errors/errors.md b/packages/svelte/messages/client-errors/errors.md
index bedf6db0a5..3f20cb989d 100644
--- a/packages/svelte/messages/client-errors/errors.md
+++ b/packages/svelte/messages/client-errors/errors.md
@@ -42,6 +42,12 @@ See the [migration guide](/docs/svelte/v5-migration-guide#Components-are-no-long
> Keyed each block has duplicate key `%value%` at indexes %a% and %b%
+## each_key_volatile
+
+> Keyed each block has key that is not idempotent — the key for item at index %index% was `%a%` but is now `%b%`. Keys must be the same each time for a given item
+
+The key expression in a keyed each block must return the same value when called multiple times for the same item. Using expressions like `[item.a, item.b]` creates a new array each time, which will never be equal to itself. Instead, use a primitive value or create a stable key like `item.a + '-' + item.b`.
+
## effect_in_teardown
> `%rune%` cannot be used inside an effect cleanup function
diff --git a/packages/svelte/messages/server-errors/errors.md b/packages/svelte/messages/server-errors/errors.md
index fd4c17e2a7..533e5405ed 100644
--- a/packages/svelte/messages/server-errors/errors.md
+++ b/packages/svelte/messages/server-errors/errors.md
@@ -10,6 +10,12 @@ Some platforms require configuration flags to enable this API. Consult your plat
You (or the framework you're using) called [`render(...)`](svelte-server#render) with a component containing an `await` expression. Either `await` the result of `render` or wrap the `await` (or the component containing it) in a [``](svelte-boundary) with a `pending` snippet.
+## dynamic_element_invalid_tag
+
+> `` is not a valid element name — the element will not be rendered
+
+The value passed to the `this` prop of `` must be a valid HTML element, SVG element, MathML element, or custom element name. A value containing invalid characters (such as whitespace or special characters) was provided, which could be a security risk. Ensure only valid tag names are passed.
+
## html_deprecated
> The `html` property of server render results has been deprecated. Use `body` instead.
diff --git a/packages/svelte/package.json b/packages/svelte/package.json
index e9f4713d1c..d87bbab694 100644
--- a/packages/svelte/package.json
+++ b/packages/svelte/package.json
@@ -2,7 +2,7 @@
"name": "svelte",
"description": "Cybernetically enhanced web apps",
"license": "MIT",
- "version": "5.51.3",
+ "version": "5.53.5",
"type": "module",
"types": "./types/index.d.ts",
"engines": {
@@ -159,7 +159,7 @@
"@types/node": "^20.11.5",
"dts-buddy": "^0.5.5",
"esbuild": "^0.25.10",
- "rollup": "^4.22.4",
+ "rollup": "^4.59.0",
"source-map": "^0.7.4",
"tinyglobby": "^0.2.12",
"typescript": "^5.5.4",
@@ -172,10 +172,10 @@
"@types/estree": "^1.0.5",
"@types/trusted-types": "^2.0.7",
"acorn": "^8.12.1",
- "aria-query": "^5.3.1",
+ "aria-query": "5.3.1",
"axobject-query": "^4.1.0",
"clsx": "^2.1.1",
- "devalue": "^5.6.2",
+ "devalue": "^5.6.3",
"esm-env": "^1.2.1",
"esrap": "^2.2.2",
"is-reference": "^3.0.3",
diff --git a/packages/svelte/src/compiler/legacy.js b/packages/svelte/src/compiler/legacy.js
index b1bbcfcf74..459858fe13 100644
--- a/packages/svelte/src/compiler/legacy.js
+++ b/packages/svelte/src/compiler/legacy.js
@@ -101,7 +101,12 @@ export function convert(source, ast) {
},
instance,
module,
- css: ast.css ? visit(ast.css) : undefined
+ css: ast.css ? visit(ast.css) : undefined,
+ // put it on _comments not comments because the latter is checked by prettier and then fails
+ // if we don't adjust stuff accordingly in our prettier plugin, and so it would be kind of an
+ // indirect breaking change for people updating their Svelte version but not their prettier plugin version.
+ // We can keep it as comments for the modern AST because the modern AST is not used in the plugin yet.
+ _comments: ast.comments?.length > 0 ? ast.comments : undefined
};
},
AnimateDirective(node) {
diff --git a/packages/svelte/src/compiler/phases/1-parse/index.js b/packages/svelte/src/compiler/phases/1-parse/index.js
index 88b4352e8a..81adbbb555 100644
--- a/packages/svelte/src/compiler/phases/1-parse/index.js
+++ b/packages/svelte/src/compiler/phases/1-parse/index.js
@@ -4,7 +4,6 @@
// @ts-expect-error acorn type definitions are borked in the release we use
import { isIdentifierStart, isIdentifierChar } from 'acorn';
import fragment from './state/fragment.js';
-import { regex_whitespace } from '../patterns.js';
import * as e from '../../errors.js';
import { create_fragment } from './utils/create.js';
import read_options from './read/options.js';
@@ -14,6 +13,25 @@ import * as state from '../../state.js';
const regex_position_indicator = / \(\d+:\d+\)$/;
+/** @param {number} cc */
+function is_whitespace(cc) {
+ // fast path for common whitespace
+ if (cc === 32 || (cc <= 13 && cc >= 9)) return true;
+ // rare whitespace — \u00a0, \u1680, \u2000-\u200a, \u2028, \u2029, \u202f, \u205f, \u3000, \ufeff
+ if (cc < 160) return false;
+ return (
+ cc === 160 ||
+ cc === 5760 ||
+ (cc >= 8192 && cc <= 8202) ||
+ cc === 8232 ||
+ cc === 8233 ||
+ cc === 8239 ||
+ cc === 8287 ||
+ cc === 12288 ||
+ cc === 65279
+ );
+}
+
const regex_lang_attribute =
/|');
@@ -545,7 +588,7 @@ const svelte_visitors = {
},
Component(node, context) {
- base_element(node, context);
+ base_element(node, context, comments);
},
ConstTag(node, context) {
@@ -681,7 +724,7 @@ const svelte_visitors = {
},
RegularElement(node, context) {
- base_element(node, context);
+ base_element(node, context, comments);
},
RenderTag(node, context) {
@@ -691,7 +734,7 @@ const svelte_visitors = {
},
SlotElement(node, context) {
- base_element(node, context);
+ base_element(node, context, comments);
},
SnippetBlock(node, context) {
@@ -747,7 +790,7 @@ const svelte_visitors = {
StyleSheet(node, context) {
context.write('
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/_config.js b/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/_config.js
new file mode 100644
index 0000000000..3078392055
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/_config.js
@@ -0,0 +1,10 @@
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target }) {
+ assert.htmlEqual(
+ target.innerHTML,
+ `Hello
`
+ );
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/main.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/main.svelte
new file mode 100644
index 0000000000..80aec26eef
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-css-props/main.svelte
@@ -0,0 +1,6 @@
+
+
+
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/HelloWorld.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/HelloWorld.svelte
new file mode 100644
index 0000000000..52ea02c559
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/HelloWorld.svelte
@@ -0,0 +1 @@
+Hello world
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/_config.js b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/_config.js
new file mode 100644
index 0000000000..90dae38ad8
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/_config.js
@@ -0,0 +1,9 @@
+import { tick } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target }) {
+ await tick();
+ assert.htmlEqual(target.innerHTML, `Test Hello world
`);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/main.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/main.svelte
new file mode 100644
index 0000000000..8a410da609
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-falsy-hydrate/main.svelte
@@ -0,0 +1,13 @@
+
+
+Test
+
+
diff --git a/packages/svelte/tests/runtime-runes/samples/each-key-volatile/_config.js b/packages/svelte/tests/runtime-runes/samples/each-key-volatile/_config.js
new file mode 100644
index 0000000000..87d4bf45c7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/each-key-volatile/_config.js
@@ -0,0 +1,11 @@
+import { test } from '../../test';
+
+export default test({
+ compileOptions: {
+ dev: true
+ },
+
+ mode: ['client'],
+
+ error: 'each_key_volatile'
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/each-key-volatile/main.svelte b/packages/svelte/tests/runtime-runes/samples/each-key-volatile/main.svelte
new file mode 100644
index 0000000000..689c257cfa
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/each-key-volatile/main.svelte
@@ -0,0 +1,10 @@
+
+
+{#each things as thing ([thing.group, thing.id])}
+ {thing.group}-{thing.id}
+{/each}
diff --git a/packages/svelte/tests/runtime-runes/samples/error-boundary-26/_config.js b/packages/svelte/tests/runtime-runes/samples/error-boundary-26/_config.js
new file mode 100644
index 0000000000..3e9f30872d
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/error-boundary-26/_config.js
@@ -0,0 +1,15 @@
+import { tick } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ html: 'caught: error
',
+ transformError: (error) => {
+ if (error !== 'catch me') throw 'wrong error object';
+ return 'error';
+ },
+
+ async test({ assert, target }) {
+ await tick();
+ assert.htmlEqual(target.innerHTML, 'caught: error
');
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/error-boundary-26/main.svelte b/packages/svelte/tests/runtime-runes/samples/error-boundary-26/main.svelte
new file mode 100644
index 0000000000..88d549f6d5
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/error-boundary-26/main.svelte
@@ -0,0 +1,7 @@
+
+ {#snippet failed(error)}
+ caught: {error}
+ {/snippet}
+
+ {(() => {throw 'catch me'})()}
+
diff --git a/packages/svelte/tests/runtime-runes/samples/error-boundary-27/_config.js b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/_config.js
new file mode 100644
index 0000000000..df0d48b76a
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/_config.js
@@ -0,0 +1,14 @@
+import { tick } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ html: 'caught: error (hello)
',
+ transformError: () => {
+ return 'error';
+ },
+
+ async test({ assert, target }) {
+ await tick();
+ assert.htmlEqual(target.innerHTML, 'caught: error (hello)
');
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/error-boundary-27/child.svelte b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/child.svelte
new file mode 100644
index 0000000000..5b680f1d08
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/child.svelte
@@ -0,0 +1,12 @@
+
+
+{#if error}
+ caught: {error} ({context})
+{:else}
+ {(() => {throw 'catch me'})()}
+{/if}
\ No newline at end of file
diff --git a/packages/svelte/tests/runtime-runes/samples/error-boundary-27/main.svelte b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/main.svelte
new file mode 100644
index 0000000000..a467f7500f
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/error-boundary-27/main.svelte
@@ -0,0 +1,19 @@
+
+
+
+
+
+ {#snippet failed(error)}
+
+ {/snippet}
+
+
+
diff --git a/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/_config.js b/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/_config.js
new file mode 100644
index 0000000000..c35d4d7ff8
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/_config.js
@@ -0,0 +1,7 @@
+import { test } from '../../test';
+
+export default test({
+ test({ assert, logs }) {
+ assert.deepEqual(logs, [42, 43]);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/main.svelte b/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/main.svelte
new file mode 100644
index 0000000000..2e7aef1742
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/function-parameter-shadowing/main.svelte
@@ -0,0 +1,12 @@
+
diff --git a/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/_config.js b/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/_config.js
new file mode 100644
index 0000000000..01ef02510a
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/_config.js
@@ -0,0 +1,6 @@
+import { test } from '../../test';
+
+export default test({
+ html: 'toString toString
[toString]
toString',
+ async test() {}
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/main.svelte b/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/main.svelte
new file mode 100644
index 0000000000..601e7ce9fb
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/set-text-stable-coercion/main.svelte
@@ -0,0 +1,22 @@
+
+
+
+{value}
+
+
+{value}
+
+
+[{value}]
+
+
+{#if 1}
+ {value}
+{/if}
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_config.js
new file mode 100644
index 0000000000..6989172de4
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_config.js
@@ -0,0 +1,10 @@
+import { test } from '../../test';
+
+export default test({
+ transformError: (error) => {
+ if (/** @type {Error} */ (error).message !== 'you are not supposed to see this message') {
+ return 'wrong object passed to transformError';
+ }
+ return 'component error';
+ }
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_expected.html b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_expected.html
new file mode 100644
index 0000000000..da06ee2b39
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/_expected.html
@@ -0,0 +1 @@
+caught: component error
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/main.svelte
new file mode 100644
index 0000000000..29086b359d
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-failed-prop/main.svelte
@@ -0,0 +1,13 @@
+
+
+{#snippet failed(error)}
+ caught: {error}
+{/snippet}
+
+
+ {throws()}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/_config.js
new file mode 100644
index 0000000000..2e3ffc6ab3
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ props: {
+ query: '--!> <img src=x onerror=alert(1)><!--
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/main.svelte
new file mode 100644
index 0000000000..dd2955ecc4
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-close-bang-escape/main.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {search(query)}
+
+ {#snippet failed(error)}
+ {error.message}
+ {/snippet}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/_config.js
new file mode 100644
index 0000000000..1644604a7b
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ props: {
+ query: '--> <img src=x onerror=alert(1)><!--
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/main.svelte
new file mode 100644
index 0000000000..dd2955ecc4
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-escape/main.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {search(query)}
+
+ {#snippet failed(error)}
+ {error.message}
+ {/snippet}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-open-escape/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-open-escape/_config.js
new file mode 100644
index 0000000000..a4f74e8b21
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-open-escape/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ props: {
+ query: '-->'
+ },
+ transformError: (error) => ({ message: /** @type {Error} */ (error).message })
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/_expected.html b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/_expected.html
new file mode 100644
index 0000000000..7d338ce71b
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/_expected.html
@@ -0,0 +1 @@
+<!--><!--->-->
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/main.svelte
new file mode 100644
index 0000000000..dd2955ecc4
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-html-comment-overlap-escape/main.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {search(query)}
+
+ {#snippet failed(error)}
+ {error.message}
+ {/snippet}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/_config.js
new file mode 100644
index 0000000000..ae78cb4825
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ // transformError transforms the error, but there's no failed snippet.
+ // The error should still propagate because there's nothing to render instead.
+ transformError: () => 'you will not see me',
+ error: 'component error'
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/main.svelte
new file mode 100644
index 0000000000..98275badb3
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-failed-snippet/main.svelte
@@ -0,0 +1,9 @@
+
+
+ {}}>
+ {throws()}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/_config.js
new file mode 100644
index 0000000000..ecc506203f
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/_config.js
@@ -0,0 +1,6 @@
+import { test } from '../../test';
+
+export default test({
+ // No transformError - by default the server throws, so the error should propagate.
+ error: 'component error'
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/main.svelte
new file mode 100644
index 0000000000..7dd2cf310e
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-no-onerror/main.svelte
@@ -0,0 +1,13 @@
+
+
+
+ {throws()}
+
+ {#snippet failed(error)}
+ caught: {error}
+ {/snippet}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_config.js b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_config.js
new file mode 100644
index 0000000000..e1cb96759f
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_config.js
@@ -0,0 +1,11 @@
+import { test } from '../../test';
+
+export default test({
+ // boundary with failed snippet exists, so transformError should transform the error
+ transformError: (error) => {
+ if (/** @type {Error} */ (error).message !== 'you are not supposed to see this message') {
+ return 'wrong object passed to transformError';
+ }
+ return 'component error';
+ }
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_expected.html b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_expected.html
new file mode 100644
index 0000000000..293de47610
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/_expected.html
@@ -0,0 +1 @@
+caught: component error
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/main.svelte b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/main.svelte
new file mode 100644
index 0000000000..a2d1435e76
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/boundary-error-with-onerror/main.svelte
@@ -0,0 +1,13 @@
+
+
+
+ {throws()}
+
+ {#snippet failed(error)}
+ caught: {error}
+ {/snippet}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/_expected.html b/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/_expected.html
new file mode 100644
index 0000000000..648895aca6
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/_expected.html
@@ -0,0 +1 @@
+<script>alert('pwnd')</script>
<script>alert('pwnd')</script>
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/main.svelte b/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/main.svelte
new file mode 100644
index 0000000000..e5ccb4b6db
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/contenteditable-bindings-escaped/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/_config.js b/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/_config.js
new file mode 100644
index 0000000000..ddbe9a4b16
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ props: {
+ tag: 'svg onload=alert(1)'
+ },
+ error: 'dynamic_element_invalid_tag'
+});
diff --git a/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/main.svelte b/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/main.svelte
new file mode 100644
index 0000000000..94ad88cf0a
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/dynamic-element-xss-prevention/main.svelte
@@ -0,0 +1,5 @@
+
+
+ok
diff --git a/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/_expected.html b/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/_expected.html
new file mode 100644
index 0000000000..0802f01083
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/_expected.html
@@ -0,0 +1 @@
+a</option><script>alert("pwnd")</script><option>puppa selected: a</option><script>alert("pwnd")</script><option>puppa
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/main.svelte b/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/main.svelte
new file mode 100644
index 0000000000..a2f96383d1
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/option-body-escaped/main.svelte
@@ -0,0 +1,9 @@
+
+
+ {selectedBook}
+ selected: {selectedBook}
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/_expected.html b/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/_expected.html
new file mode 100644
index 0000000000..2a982292e5
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/_expected.html
@@ -0,0 +1,3 @@
+content
+
+
diff --git a/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/main.svelte b/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/main.svelte
new file mode 100644
index 0000000000..2a8c17f048
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/spread-attributes-event-handler-xss/main.svelte
@@ -0,0 +1,13 @@
+
+
+content
+
diff --git a/packages/svelte/tests/server-side-rendering/test.ts b/packages/svelte/tests/server-side-rendering/test.ts
index ca98fdd9aa..2dcaa85708 100644
--- a/packages/svelte/tests/server-side-rendering/test.ts
+++ b/packages/svelte/tests/server-side-rendering/test.ts
@@ -24,6 +24,7 @@ interface SSRTest extends BaseTest {
error?: string;
csp?: { nonce: string } | { hash: true };
script_hashes?: string[];
+ transformError?: (error: unknown) => unknown;
}
// TODO remove this shim when we can
@@ -84,7 +85,8 @@ const { test, run } = suite_with_variants blocking = await foo]);
+ var $$promises = $$renderer.run([async () => blocking = await $.async_derived(() => foo)]);
$$renderer.async_block([$$promises[0]], ($$renderer) => {
if (foo) {
@@ -94,10 +94,10 @@ export default function Async_if_chain($$renderer) {
$$renderer.push(` `);
$$renderer.async_block([$$promises[0]], ($$renderer) => {
- if (blocking > 10) {
+ if (blocking() > 10) {
$$renderer.push('');
$$renderer.push(`foo`);
- } else if (blocking > 5) {
+ } else if (blocking() > 5) {
$$renderer.push('');
$$renderer.push(`bar`);
} else {
diff --git a/packages/svelte/tests/snapshot/samples/async-in-derived/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/async-in-derived/_expected/server/index.svelte.js
index 58358b3ded..3af9f504ec 100644
--- a/packages/svelte/tests/snapshot/samples/async-in-derived/_expected/server/index.svelte.js
+++ b/packages/svelte/tests/snapshot/samples/async-in-derived/_expected/server/index.svelte.js
@@ -6,15 +6,15 @@ export default function Async_in_derived($$renderer, $$props) {
var yes1, yes2, no1, no2;
var $$promises = $$renderer.run([
- async () => yes1 = await 1,
- async () => yes2 = foo(await 1),
- () => no1 = (async () => {
+ async () => yes1 = await $.async_derived(() => 1),
+ async () => yes2 = await $.async_derived(async () => foo(await 1)),
+ () => no1 = $.derived(async () => {
return await 1;
- })(),
+ }),
- () => no2 = async () => {
+ () => no2 = $.derived(() => async () => {
return await 1;
- }
+ })
]);
if (true) {
diff --git a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js
index e9bf215dcd..a41b58051c 100644
--- a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js
+++ b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js
@@ -2,13 +2,13 @@ import * as $ from 'svelte/internal/server';
export default function Await_block_scope($$renderer) {
let counter = { count: 0 };
- const promise = Promise.resolve(counter);
+ const promise = $.derived(() => Promise.resolve(counter));
function increment() {
counter.count += 1;
}
$$renderer.push(`clicks: ${$.escape(counter.count)} `);
- $.await($$renderer, promise, () => {}, (counter) => {});
+ $.await($$renderer, promise(), () => {}, (counter) => {});
$$renderer.push(` ${$.escape(counter.count)}`);
}
\ No newline at end of file
diff --git a/packages/svelte/tests/snapshot/samples/select-with-rich-content/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/select-with-rich-content/_expected/server/index.svelte.js
index acf873ac09..a50200a769 100644
--- a/packages/svelte/tests/snapshot/samples/select-with-rich-content/_expected/server/index.svelte.js
+++ b/packages/svelte/tests/snapshot/samples/select-with-rich-content/_expected/server/index.svelte.js
@@ -164,7 +164,8 @@ export default function Select_with_rich_content($$renderer) {
$$renderer.push('');
}
- $$renderer.push(` `);
+ $$renderer.push(` `);
+ $$renderer.push(``);
{
$$renderer.option({}, ($$renderer) => {
@@ -172,7 +173,9 @@ export default function Select_with_rich_content($$renderer) {
});
}
- $$renderer.push(` `);
+ $$renderer.push(``);
+ $$renderer.push(` `);
+ $$renderer.push(``);
{
$$renderer.option(
@@ -188,7 +191,8 @@ export default function Select_with_rich_content($$renderer) {
);
}
- $$renderer.push(` `);
+ $$renderer.push(``);
+ $$renderer.push(` `);
Option($$renderer, {});
$$renderer.push(` `);
option_snippet($$renderer);
diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts
index e7aa5395b8..31ef9110df 100644
--- a/packages/svelte/types/index.d.ts
+++ b/packages/svelte/types/index.d.ts
@@ -20,6 +20,7 @@ declare module 'svelte' {
sync?: boolean;
idPrefix?: string;
$$inline?: boolean;
+ transformError?: (error: unknown) => unknown;
}
/**
@@ -337,6 +338,11 @@ declare module 'svelte' {
* @default true
*/
intro?: boolean;
+ /**
+ * A function that transforms errors caught by error boundaries before they are passed to the `failed` snippet.
+ * Defaults to the identity function.
+ */
+ transformError?: (error: unknown) => unknown | Promise;
} & ({} extends Props
? {
/**
@@ -542,6 +548,7 @@ declare module 'svelte' {
context?: Map;
intro?: boolean;
recover?: boolean;
+ transformError?: (error: unknown) => unknown;
} : {
target: Document | Element | ShadowRoot;
props: Props;
@@ -549,6 +556,7 @@ declare module 'svelte' {
context?: Map;
intro?: boolean;
recover?: boolean;
+ transformError?: (error: unknown) => unknown;
}): Exports;
/**
* Unmounts a component that was previously mounted using `mount` or `hydrate`.
@@ -2567,6 +2575,7 @@ declare module 'svelte/server' {
context?: Map;
idPrefix?: string;
csp?: Csp;
+ transformError?: (error: unknown) => unknown | Promise;
}
]
: [
@@ -2576,6 +2585,7 @@ declare module 'svelte/server' {
context?: Map;
idPrefix?: string;
csp?: Csp;
+ transformError?: (error: unknown) => unknown | Promise;
}
]
): RenderOutput;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1d3427fae0..e5d857ee81 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,8 +15,8 @@ importers:
specifier: ^10.0.0
version: 10.0.1(eslint@10.0.0)
'@sveltejs/eslint-config':
- specifier: ^8.3.5
- version: 8.3.5(@stylistic/eslint-plugin-js@1.8.0(eslint@10.0.0))(eslint-config-prettier@9.1.0(eslint@10.0.0))(eslint-plugin-n@17.16.1(eslint@10.0.0)(typescript@5.5.4))(eslint-plugin-svelte@3.15.0(eslint@10.0.0)(svelte@packages+svelte))(eslint@10.0.0)(typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.5.4))(typescript@5.5.4)
+ specifier: ^9.0.0
+ version: 9.0.0(@eslint/js@10.0.1(eslint@10.0.0))(@stylistic/eslint-plugin-js@1.8.0(eslint@10.0.0))(eslint-config-prettier@9.1.0(eslint@10.0.0))(eslint-plugin-n@17.24.0(eslint@10.0.0)(typescript@5.5.4))(eslint-plugin-svelte@3.15.0(eslint@10.0.0)(svelte@packages+svelte))(eslint@10.0.0)(typescript-eslint@8.56.0(eslint@10.0.0)(typescript@5.5.4))(typescript@5.5.4)
'@svitejs/changesets-changelog-github-compact':
specifier: ^1.1.0
version: 1.1.0
@@ -57,8 +57,8 @@ importers:
specifier: ^5.5.4
version: 5.5.4
typescript-eslint:
- specifier: ^8.55.0
- version: 8.55.0(eslint@10.0.0)(typescript@5.5.4)
+ specifier: ^8.56.0
+ version: 8.56.0(eslint@10.0.0)(typescript@5.5.4)
v8-natives:
specifier: ^1.2.5
version: 1.2.5
@@ -87,7 +87,7 @@ importers:
specifier: ^8.12.1
version: 8.15.0
aria-query:
- specifier: ^5.3.1
+ specifier: 5.3.1
version: 5.3.1
axobject-query:
specifier: ^4.1.0
@@ -96,8 +96,8 @@ importers:
specifier: ^2.1.1
version: 2.1.1
devalue:
- specifier: ^5.6.2
- version: 5.6.2
+ specifier: ^5.6.3
+ version: 5.6.3
esm-env:
specifier: ^1.2.1
version: 1.2.1
@@ -125,16 +125,16 @@ importers:
version: 1.58.0
'@rollup/plugin-commonjs':
specifier: ^28.0.1
- version: 28.0.1(rollup@4.52.5)
+ version: 28.0.1(rollup@4.59.0)
'@rollup/plugin-node-resolve':
specifier: ^15.3.0
- version: 15.3.0(rollup@4.52.5)
+ version: 15.3.0(rollup@4.59.0)
'@rollup/plugin-terser':
specifier: ^0.4.4
- version: 0.4.4(rollup@4.52.5)
+ version: 0.4.4(rollup@4.59.0)
'@rollup/plugin-virtual':
specifier: ^3.0.2
- version: 3.0.2(rollup@4.52.5)
+ version: 3.0.2(rollup@4.59.0)
'@types/aria-query':
specifier: ^5.0.4
version: 5.0.4
@@ -148,8 +148,8 @@ importers:
specifier: ^0.25.10
version: 0.25.11
rollup:
- specifier: ^4.22.4
- version: 4.52.5
+ specifier: ^4.59.0
+ version: 4.59.0
source-map:
specifier: ^0.7.4
version: 0.7.4
@@ -755,113 +755,128 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.52.5':
- resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.52.5':
- resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
+ '@rollup/rollup-android-arm64@4.59.0':
+ resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.52.5':
- resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
+ '@rollup/rollup-darwin-arm64@4.59.0':
+ resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.52.5':
- resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
+ '@rollup/rollup-darwin-x64@4.59.0':
+ resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.52.5':
- resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
+ '@rollup/rollup-freebsd-arm64@4.59.0':
+ resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.52.5':
- resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
+ '@rollup/rollup-freebsd-x64@4.59.0':
+ resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
+ resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
+ resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
+ resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
+ resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
+ resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
+ resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
+ resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
+ resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
+ resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
+ resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
+ resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.52.5':
- resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
+ '@rollup/rollup-linux-x64-musl@4.59.0':
+ resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.52.5':
- resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
+ '@rollup/rollup-openbsd-x64@4.59.0':
+ resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.59.0':
+ resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
+ resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
+ resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==}
cpu: [x64]
os: [win32]
@@ -876,11 +891,12 @@ packages:
peerDependencies:
acorn: ^8.9.0
- '@sveltejs/eslint-config@8.3.5':
- resolution: {integrity: sha512-f8g5v1GNQePIJq6Rh3mf0riXx+7+IsRaTS7nn8w7r2RZFPPkuBAHGcHST9BTJOQb5UCSnPmst7BJHEDIlVtP3A==}
+ '@sveltejs/eslint-config@9.0.0':
+ resolution: {integrity: sha512-3u9VUYlU0Mc/8Bhc7eRAPgJuUBMaKHzoE8r50WrnVujoxBLW4zfPckR/BFGGNeVUh0F7QGAtxGkV/5pL6CE1Ng==}
peerDependencies:
+ '@eslint/js': '>= 10'
'@stylistic/eslint-plugin-js': '>= 1'
- eslint: '>= 9'
+ eslint: '>= 10'
eslint-config-prettier: '>= 9'
eslint-plugin-n: '>= 17'
eslint-plugin-svelte: '>= 3'
@@ -939,63 +955,63 @@ packages:
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
- '@typescript-eslint/eslint-plugin@8.55.0':
- resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==}
+ '@typescript-eslint/eslint-plugin@8.56.0':
+ resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.55.0
- eslint: ^8.57.0 || ^9.0.0
+ '@typescript-eslint/parser': ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.55.0':
- resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==}
+ '@typescript-eslint/parser@8.56.0':
+ resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.55.0':
- resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==}
+ '@typescript-eslint/project-service@8.56.0':
+ resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.55.0':
- resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==}
+ '@typescript-eslint/scope-manager@8.56.0':
+ resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.55.0':
- resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==}
+ '@typescript-eslint/tsconfig-utils@8.56.0':
+ resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.55.0':
- resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==}
+ '@typescript-eslint/type-utils@8.56.0':
+ resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.55.0':
- resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==}
+ '@typescript-eslint/types@8.56.0':
+ resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.55.0':
- resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==}
+ '@typescript-eslint/typescript-estree@8.56.0':
+ resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.55.0':
- resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==}
+ '@typescript-eslint/utils@8.56.0':
+ resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.55.0':
- resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==}
+ '@typescript-eslint/visitor-keys@8.56.0':
+ resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitest/coverage-v8@2.1.9':
@@ -1046,6 +1062,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
agent-base@7.1.1:
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
engines: {node: '>= 14'}
@@ -1246,8 +1267,8 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
- devalue@5.6.2:
- resolution: {integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==}
+ devalue@5.6.3:
+ resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==}
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
@@ -1272,8 +1293,8 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
+ enhanced-resolve@5.19.0:
+ resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==}
engines: {node: '>=10.13.0'}
enquirer@2.4.1:
@@ -1327,8 +1348,8 @@ packages:
peerDependencies:
eslint: '>=9.0.0'
- eslint-plugin-n@17.16.1:
- resolution: {integrity: sha512-/7FVAwjUrix9P5lycnsYRIQRwFo/DZROD+ZXWLpE+/EZWLyuLvyFaRdAPYJSz+nlAdZIZp+LAzlBerQSVYUNFg==}
+ eslint-plugin-n@17.24.0:
+ resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.23.0'
@@ -1502,8 +1523,8 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- get-tsconfig@4.13.0:
- resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
+ get-tsconfig@4.13.6:
+ resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -1534,6 +1555,9 @@ packages:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -2068,8 +2092,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.52.5:
- resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
+ rollup@4.59.0:
+ resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2107,6 +2131,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
@@ -2297,11 +2326,11 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- typescript-eslint@8.55.0:
- resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==}
+ typescript-eslint@8.56.0:
+ resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
typescript@5.5.4:
@@ -3008,9 +3037,9 @@ snapshots:
'@polka/url@1.0.0-next.25': {}
- '@rollup/plugin-commonjs@28.0.1(rollup@4.52.5)':
+ '@rollup/plugin-commonjs@28.0.1(rollup@4.59.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.52.5)
+ '@rollup/pluginutils': 5.1.0(rollup@4.59.0)
commondir: 1.0.1
estree-walker: 2.0.2
fdir: 6.5.0(picomatch@4.0.3)
@@ -3018,108 +3047,117 @@ snapshots:
magic-string: 0.30.17
picomatch: 4.0.3
optionalDependencies:
- rollup: 4.52.5
+ rollup: 4.59.0
- '@rollup/plugin-node-resolve@15.3.0(rollup@4.52.5)':
+ '@rollup/plugin-node-resolve@15.3.0(rollup@4.59.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.52.5)
+ '@rollup/pluginutils': 5.1.0(rollup@4.59.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
- rollup: 4.52.5
+ rollup: 4.59.0
- '@rollup/plugin-terser@0.4.4(rollup@4.52.5)':
+ '@rollup/plugin-terser@0.4.4(rollup@4.59.0)':
dependencies:
serialize-javascript: 6.0.2
smob: 1.4.1
terser: 5.27.0
optionalDependencies:
- rollup: 4.52.5
+ rollup: 4.59.0
- '@rollup/plugin-virtual@3.0.2(rollup@4.52.5)':
+ '@rollup/plugin-virtual@3.0.2(rollup@4.59.0)':
optionalDependencies:
- rollup: 4.52.5
+ rollup: 4.59.0
- '@rollup/pluginutils@5.1.0(rollup@4.52.5)':
+ '@rollup/pluginutils@5.1.0(rollup@4.59.0)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.52.5
+ rollup: 4.59.0
+
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ optional: true
- '@rollup/rollup-android-arm-eabi@4.52.5':
+ '@rollup/rollup-android-arm64@4.59.0':
optional: true
- '@rollup/rollup-android-arm64@4.52.5':
+ '@rollup/rollup-darwin-arm64@4.59.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.52.5':
+ '@rollup/rollup-darwin-x64@4.59.0':
optional: true
- '@rollup/rollup-darwin-x64@4.52.5':
+ '@rollup/rollup-freebsd-arm64@4.59.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.52.5':
+ '@rollup/rollup-freebsd-x64@4.59.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.52.5':
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.52.5':
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.52.5':
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.52.5':
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
optional: true
- '@rollup/rollup-openharmony-arm64@4.52.5':
+ '@rollup/rollup-linux-x64-musl@4.59.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
+ '@rollup/rollup-openbsd-x64@4.59.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
+ '@rollup/rollup-openharmony-arm64@4.59.0':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.52.5':
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.52.5':
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
optional: true
'@stylistic/eslint-plugin-js@1.8.0(eslint@10.0.0)':
dependencies:
'@types/eslint': 8.56.12
- acorn: 8.15.0
+ acorn: 8.16.0
escape-string-regexp: 4.0.0
eslint: 10.0.0
eslint-visitor-keys: 3.4.3
@@ -3129,16 +3167,17 @@ snapshots:
dependencies:
acorn: 8.15.0
- '@sveltejs/eslint-config@8.3.5(@stylistic/eslint-plugin-js@1.8.0(eslint@10.0.0))(eslint-config-prettier@9.1.0(eslint@10.0.0))(eslint-plugin-n@17.16.1(eslint@10.0.0)(typescript@5.5.4))(eslint-plugin-svelte@3.15.0(eslint@10.0.0)(svelte@packages+svelte))(eslint@10.0.0)(typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.5.4))(typescript@5.5.4)':
+ '@sveltejs/eslint-config@9.0.0(@eslint/js@10.0.1(eslint@10.0.0))(@stylistic/eslint-plugin-js@1.8.0(eslint@10.0.0))(eslint-config-prettier@9.1.0(eslint@10.0.0))(eslint-plugin-n@17.24.0(eslint@10.0.0)(typescript@5.5.4))(eslint-plugin-svelte@3.15.0(eslint@10.0.0)(svelte@packages+svelte))(eslint@10.0.0)(typescript-eslint@8.56.0(eslint@10.0.0)(typescript@5.5.4))(typescript@5.5.4)':
dependencies:
+ '@eslint/js': 10.0.1(eslint@10.0.0)
'@stylistic/eslint-plugin-js': 1.8.0(eslint@10.0.0)
eslint: 10.0.0
eslint-config-prettier: 9.1.0(eslint@10.0.0)
- eslint-plugin-n: 17.16.1(eslint@10.0.0)(typescript@5.5.4)
+ eslint-plugin-n: 17.24.0(eslint@10.0.0)(typescript@5.5.4)
eslint-plugin-svelte: 3.15.0(eslint@10.0.0)(svelte@packages+svelte)
globals: 17.3.0
typescript: 5.5.4
- typescript-eslint: 8.55.0(eslint@10.0.0)(typescript@5.5.4)
+ typescript-eslint: 8.56.0(eslint@10.0.0)(typescript@5.5.4)
'@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.0(svelte@packages+svelte)(vite@7.1.11(@types/node@24.5.2)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)))(svelte@packages+svelte)(vite@7.1.11(@types/node@24.5.2)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))':
dependencies:
@@ -3197,14 +3236,14 @@ snapshots:
'@types/trusted-types@2.0.7': {}
- '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.5.4))(eslint@10.0.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0)(typescript@5.5.4))(eslint@10.0.0)(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.55.0
- '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.55.0
+ '@typescript-eslint/parser': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.56.0
eslint: 10.0.0
ignore: 7.0.5
natural-compare: 1.4.0
@@ -3213,41 +3252,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.56.0(eslint@10.0.0)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/scope-manager': 8.55.0
- '@typescript-eslint/types': 8.55.0
- '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.55.0
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.56.0
debug: 4.4.3
eslint: 10.0.0
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.55.0(typescript@5.5.4)':
+ '@typescript-eslint/project-service@8.56.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/types': 8.55.0
+ '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/types': 8.56.0
debug: 4.4.3
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.55.0':
+ '@typescript-eslint/scope-manager@8.56.0':
dependencies:
- '@typescript-eslint/types': 8.55.0
- '@typescript-eslint/visitor-keys': 8.55.0
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/visitor-keys': 8.56.0
- '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.5.4)':
+ '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.5.4)':
dependencies:
typescript: 5.5.4
- '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.56.0(eslint@10.0.0)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.55.0
- '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
debug: 4.4.3
eslint: 10.0.0
ts-api-utils: 2.4.0(typescript@5.5.4)
@@ -3255,14 +3294,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.55.0': {}
+ '@typescript-eslint/types@8.56.0': {}
- '@typescript-eslint/typescript-estree@8.55.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.56.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/project-service': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/types': 8.55.0
- '@typescript-eslint/visitor-keys': 8.55.0
+ '@typescript-eslint/project-service': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/visitor-keys': 8.56.0
debug: 4.4.3
minimatch: 9.0.5
semver: 7.7.3
@@ -3272,21 +3311,21 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.56.0(eslint@10.0.0)(typescript@5.5.4)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0)
- '@typescript-eslint/scope-manager': 8.55.0
- '@typescript-eslint/types': 8.55.0
- '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.5.4)
eslint: 10.0.0
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.55.0':
+ '@typescript-eslint/visitor-keys@8.56.0':
dependencies:
- '@typescript-eslint/types': 8.55.0
- eslint-visitor-keys: 4.2.1
+ '@typescript-eslint/types': 8.56.0
+ eslint-visitor-keys: 5.0.0
'@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@20.19.17)(jsdom@25.0.1)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))':
dependencies:
@@ -3350,8 +3389,14 @@ snapshots:
dependencies:
acorn: 8.15.0
+ acorn-jsx@5.3.2(acorn@8.16.0):
+ dependencies:
+ acorn: 8.16.0
+
acorn@8.15.0: {}
+ acorn@8.16.0: {}
+
agent-base@7.1.1:
dependencies:
debug: 4.4.3
@@ -3518,7 +3563,7 @@ snapshots:
detect-libc@1.0.3:
optional: true
- devalue@5.6.2: {}
+ devalue@5.6.3: {}
dir-glob@3.0.1:
dependencies:
@@ -3544,7 +3589,7 @@ snapshots:
emoji-regex@9.2.2: {}
- enhanced-resolve@5.18.3:
+ enhanced-resolve@5.19.0:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.0
@@ -3620,7 +3665,7 @@ snapshots:
eslint-compat-utils@0.5.1(eslint@10.0.0):
dependencies:
eslint: 10.0.0
- semver: 7.7.3
+ semver: 7.7.4
eslint-config-prettier@9.1.0(eslint@10.0.0):
dependencies:
@@ -3637,21 +3682,19 @@ snapshots:
dependencies:
eslint: 10.0.0
- eslint-plugin-n@17.16.1(eslint@10.0.0)(typescript@5.5.4):
+ eslint-plugin-n@17.24.0(eslint@10.0.0)(typescript@5.5.4):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0)
- '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
- enhanced-resolve: 5.18.3
+ enhanced-resolve: 5.19.0
eslint: 10.0.0
eslint-plugin-es-x: 7.8.0(eslint@10.0.0)
- get-tsconfig: 4.13.0
+ get-tsconfig: 4.13.6
globals: 15.15.0
+ globrex: 0.1.2
ignore: 5.3.2
- minimatch: 9.0.5
- semver: 7.7.3
+ semver: 7.7.4
ts-declaration-location: 1.0.7(typescript@5.5.4)
transitivePeerDependencies:
- - supports-color
- typescript
eslint-plugin-svelte@3.15.0(eslint@10.0.0)(svelte@packages+svelte):
@@ -3741,8 +3784,8 @@ snapshots:
espree@9.6.1:
dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
eslint-visitor-keys: 3.4.3
esprima@4.0.1: {}
@@ -3851,7 +3894,7 @@ snapshots:
function-bind@1.1.2: {}
- get-tsconfig@4.13.0:
+ get-tsconfig@4.13.6:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -3887,6 +3930,8 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
+ globrex@0.1.2: {}
+
graceful-fs@4.2.11: {}
has-flag@4.0.0: {}
@@ -4355,32 +4400,35 @@ snapshots:
reusify@1.0.4: {}
- rollup@4.52.5:
+ rollup@4.59.0:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.52.5
- '@rollup/rollup-android-arm64': 4.52.5
- '@rollup/rollup-darwin-arm64': 4.52.5
- '@rollup/rollup-darwin-x64': 4.52.5
- '@rollup/rollup-freebsd-arm64': 4.52.5
- '@rollup/rollup-freebsd-x64': 4.52.5
- '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
- '@rollup/rollup-linux-arm-musleabihf': 4.52.5
- '@rollup/rollup-linux-arm64-gnu': 4.52.5
- '@rollup/rollup-linux-arm64-musl': 4.52.5
- '@rollup/rollup-linux-loong64-gnu': 4.52.5
- '@rollup/rollup-linux-ppc64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-musl': 4.52.5
- '@rollup/rollup-linux-s390x-gnu': 4.52.5
- '@rollup/rollup-linux-x64-gnu': 4.52.5
- '@rollup/rollup-linux-x64-musl': 4.52.5
- '@rollup/rollup-openharmony-arm64': 4.52.5
- '@rollup/rollup-win32-arm64-msvc': 4.52.5
- '@rollup/rollup-win32-ia32-msvc': 4.52.5
- '@rollup/rollup-win32-x64-gnu': 4.52.5
- '@rollup/rollup-win32-x64-msvc': 4.52.5
+ '@rollup/rollup-android-arm-eabi': 4.59.0
+ '@rollup/rollup-android-arm64': 4.59.0
+ '@rollup/rollup-darwin-arm64': 4.59.0
+ '@rollup/rollup-darwin-x64': 4.59.0
+ '@rollup/rollup-freebsd-arm64': 4.59.0
+ '@rollup/rollup-freebsd-x64': 4.59.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.59.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.59.0
+ '@rollup/rollup-linux-arm64-gnu': 4.59.0
+ '@rollup/rollup-linux-arm64-musl': 4.59.0
+ '@rollup/rollup-linux-loong64-gnu': 4.59.0
+ '@rollup/rollup-linux-loong64-musl': 4.59.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.59.0
+ '@rollup/rollup-linux-ppc64-musl': 4.59.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.59.0
+ '@rollup/rollup-linux-riscv64-musl': 4.59.0
+ '@rollup/rollup-linux-s390x-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-musl': 4.59.0
+ '@rollup/rollup-openbsd-x64': 4.59.0
+ '@rollup/rollup-openharmony-arm64': 4.59.0
+ '@rollup/rollup-win32-arm64-msvc': 4.59.0
+ '@rollup/rollup-win32-ia32-msvc': 4.59.0
+ '@rollup/rollup-win32-x64-gnu': 4.59.0
+ '@rollup/rollup-win32-x64-msvc': 4.59.0
fsevents: 2.3.3
rrweb-cssom@0.7.1: {}
@@ -4412,6 +4460,8 @@ snapshots:
semver@7.7.3: {}
+ semver@7.7.4: {}
+
serialize-javascript@6.0.2:
dependencies:
randombytes: 2.1.0
@@ -4576,12 +4626,12 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
- typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.5.4):
+ typescript-eslint@8.56.0(eslint@10.0.0)(typescript@5.5.4):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.5.4))(eslint@10.0.0)(typescript@5.5.4)
- '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
- '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0)(typescript@5.5.4))(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.56.0(eslint@10.0.0)(typescript@5.5.4)
eslint: 10.0.0
typescript: 5.5.4
transitivePeerDependencies:
@@ -4662,7 +4712,7 @@ snapshots:
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
- rollup: 4.52.5
+ rollup: 4.59.0
optionalDependencies:
'@types/node': 20.19.17
fsevents: 2.3.3
@@ -4676,7 +4726,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.5
+ rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.5.2