Showing preview only (8,693K chars total). Download the full file or copy to clipboard to get everything.
Repository: sveltejs/svelte
Branch: main
Commit: e402b2d0d678
Files: 8711
Total size: 6.1 MB
Directory structure:
gitextract_a0sp9qlx/
├── .changeset/
│ ├── README.md
│ ├── config.json
│ ├── const-tags.md
│ ├── evil-chicken-attend.md
│ └── orange-geckos-rest.md
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── feature_request.yml
│ ├── ISSUE_TEMPLATE.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── autofix.yml
│ ├── ci.yml
│ ├── ecosystem-ci-trigger.yml
│ ├── pkg.pr.new.yml
│ └── release.yml
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── .well-known/
│ └── funding-manifest-urls
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FUNDING.json
├── LICENSE.md
├── README.md
├── benchmarking/
│ ├── .gitignore
│ ├── benchmarks/
│ │ ├── reactivity/
│ │ │ ├── index.js
│ │ │ ├── sbench.js
│ │ │ ├── tests/
│ │ │ │ ├── kairo_avoidable.bench.js
│ │ │ │ ├── kairo_broad.bench.js
│ │ │ │ ├── kairo_deep.bench.js
│ │ │ │ ├── kairo_diamond.bench.js
│ │ │ │ ├── kairo_mux.bench.js
│ │ │ │ ├── kairo_repeated.bench.js
│ │ │ │ ├── kairo_triangle.bench.js
│ │ │ │ ├── kairo_unstable.bench.js
│ │ │ │ ├── mol.bench.js
│ │ │ │ └── repeated_deps.bench.js
│ │ │ └── util.js
│ │ └── ssr/
│ │ ├── index.js
│ │ └── wrapper/
│ │ ├── App.svelte
│ │ └── wrapper_bench.js
│ ├── compare/
│ │ ├── index.js
│ │ └── runner.js
│ ├── run.js
│ ├── tsconfig.json
│ └── utils.js
├── documentation/
│ └── docs/
│ ├── 01-introduction/
│ │ ├── 01-overview.md
│ │ ├── 02-getting-started.md
│ │ ├── 03-svelte-files.md
│ │ ├── 04-svelte-js-files.md
│ │ └── index.md
│ ├── 02-runes/
│ │ ├── 01-what-are-runes.md
│ │ ├── 02-$state.md
│ │ ├── 03-$derived.md
│ │ ├── 04-$effect.md
│ │ ├── 05-$props.md
│ │ ├── 06-$bindable.md
│ │ ├── 07-$inspect.md
│ │ ├── 08-$host.md
│ │ └── index.md
│ ├── 03-template-syntax/
│ │ ├── 01-basic-markup.md
│ │ ├── 02-if.md
│ │ ├── 03-each.md
│ │ ├── 04-key.md
│ │ ├── 05-await.md
│ │ ├── 06-snippet.md
│ │ ├── 07-@render.md
│ │ ├── 08-@html.md
│ │ ├── 09-@attach.md
│ │ ├── 10-@const.md
│ │ ├── 11-@debug.md
│ │ ├── 12-bind.md
│ │ ├── 13-use.md
│ │ ├── 14-transition.md
│ │ ├── 15-in-and-out.md
│ │ ├── 16-animate.md
│ │ ├── 17-style.md
│ │ ├── 18-class.md
│ │ ├── 19-await-expressions.md
│ │ └── index.md
│ ├── 04-styling/
│ │ ├── 01-scoped-styles.md
│ │ ├── 02-global-styles.md
│ │ ├── 03-custom-properties.md
│ │ ├── 04-nested-style-elements.md
│ │ └── index.md
│ ├── 05-special-elements/
│ │ ├── 01-svelte-boundary.md
│ │ ├── 02-svelte-window.md
│ │ ├── 03-svelte-document.md
│ │ ├── 04-svelte-body.md
│ │ ├── 05-svelte-head.md
│ │ ├── 06-svelte-element.md
│ │ ├── 07-svelte-options.md
│ │ └── index.md
│ ├── 06-runtime/
│ │ ├── 01-stores.md
│ │ ├── 02-context.md
│ │ ├── 03-lifecycle-hooks.md
│ │ ├── 04-imperative-component-api.md
│ │ ├── 05-hydratable.md
│ │ └── index.md
│ ├── 07-misc/
│ │ ├── 01-best-practices.md
│ │ ├── 02-testing.md
│ │ ├── 03-typescript.md
│ │ ├── 04-custom-elements.md
│ │ ├── 06-v4-migration-guide.md
│ │ ├── 07-v5-migration-guide.md
│ │ ├── 99-faq.md
│ │ └── index.md
│ ├── 98-reference/
│ │ ├── .generated/
│ │ │ ├── client-errors.md
│ │ │ ├── client-warnings.md
│ │ │ ├── compile-errors.md
│ │ │ ├── compile-warnings.md
│ │ │ ├── server-errors.md
│ │ │ ├── server-warnings.md
│ │ │ ├── shared-errors.md
│ │ │ └── shared-warnings.md
│ │ ├── 20-svelte.md
│ │ ├── 21-svelte-action.md
│ │ ├── 21-svelte-animate.md
│ │ ├── 21-svelte-attachments.md
│ │ ├── 21-svelte-compiler.md
│ │ ├── 21-svelte-easing.md
│ │ ├── 21-svelte-events.md
│ │ ├── 21-svelte-legacy.md
│ │ ├── 21-svelte-motion.md
│ │ ├── 21-svelte-reactivity-window.md
│ │ ├── 21-svelte-reactivity.md
│ │ ├── 21-svelte-server.md
│ │ ├── 21-svelte-store.md
│ │ ├── 21-svelte-transition.md
│ │ ├── 30-compiler-errors.md
│ │ ├── 30-compiler-warnings.md
│ │ ├── 30-runtime-errors.md
│ │ ├── 30-runtime-warnings.md
│ │ └── index.md
│ ├── 99-legacy/
│ │ ├── 00-legacy-overview.md
│ │ ├── 01-legacy-let.md
│ │ ├── 02-legacy-reactive-assignments.md
│ │ ├── 03-legacy-export-let.md
│ │ ├── 04-legacy-$$props-and-$$restProps.md
│ │ ├── 10-legacy-on.md
│ │ ├── 20-legacy-slots.md
│ │ ├── 21-legacy-$$slots.md
│ │ ├── 22-legacy-svelte-fragment.md
│ │ ├── 30-legacy-svelte-component.md
│ │ ├── 31-legacy-svelte-self.md
│ │ ├── 40-legacy-component-api.md
│ │ └── index.md
│ └── index.md
├── eslint.config.js
├── package.json
├── packages/
│ └── svelte/
│ ├── .gitignore
│ ├── CHANGELOG-pre-5.md
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── compiler/
│ │ └── package.json
│ ├── elements.d.ts
│ ├── knip.json
│ ├── messages/
│ │ ├── client-errors/
│ │ │ └── errors.md
│ │ ├── client-warnings/
│ │ │ └── warnings.md
│ │ ├── compile-errors/
│ │ │ ├── options.md
│ │ │ ├── script.md
│ │ │ ├── style.md
│ │ │ └── template.md
│ │ ├── compile-warnings/
│ │ │ ├── a11y.md
│ │ │ ├── misc.md
│ │ │ ├── options.md
│ │ │ ├── script.md
│ │ │ ├── style.md
│ │ │ └── template.md
│ │ ├── server-errors/
│ │ │ └── errors.md
│ │ ├── server-warnings/
│ │ │ └── warnings.md
│ │ ├── shared-errors/
│ │ │ └── errors.md
│ │ └── shared-warnings/
│ │ └── warnings.md
│ ├── package.json
│ ├── rollup.config.js
│ ├── scripts/
│ │ ├── check-treeshakeability.js
│ │ ├── generate-types.js
│ │ ├── generate-version.js
│ │ └── process-messages/
│ │ ├── index.js
│ │ └── templates/
│ │ ├── client-errors.js
│ │ ├── client-warnings.js
│ │ ├── compile-errors.js
│ │ ├── compile-warnings.js
│ │ ├── server-errors.js
│ │ ├── server-warnings.js
│ │ ├── shared-errors.js
│ │ └── shared-warnings.js
│ ├── src/
│ │ ├── action/
│ │ │ └── public.d.ts
│ │ ├── ambient.d.ts
│ │ ├── animate/
│ │ │ ├── index.js
│ │ │ └── public.d.ts
│ │ ├── attachments/
│ │ │ ├── index.js
│ │ │ └── public.d.ts
│ │ ├── compiler/
│ │ │ ├── errors.js
│ │ │ ├── index.js
│ │ │ ├── legacy.js
│ │ │ ├── migrate/
│ │ │ │ └── index.js
│ │ │ ├── phases/
│ │ │ │ ├── 1-parse/
│ │ │ │ │ ├── acorn.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── read/
│ │ │ │ │ │ ├── context.js
│ │ │ │ │ │ ├── expression.js
│ │ │ │ │ │ ├── options.js
│ │ │ │ │ │ ├── script.js
│ │ │ │ │ │ └── style.js
│ │ │ │ │ ├── remove_typescript_nodes.js
│ │ │ │ │ ├── state/
│ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ ├── fragment.js
│ │ │ │ │ │ ├── tag.js
│ │ │ │ │ │ └── text.js
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── bracket.js
│ │ │ │ │ ├── create.js
│ │ │ │ │ ├── entities.js
│ │ │ │ │ ├── fuzzymatch.js
│ │ │ │ │ └── html.js
│ │ │ │ ├── 2-analyze/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── css-analyze.js
│ │ │ │ │ │ ├── css-prune.js
│ │ │ │ │ │ ├── css-warn.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── types.d.ts
│ │ │ │ │ ├── utils/
│ │ │ │ │ │ └── check_graph_for_cycles.js
│ │ │ │ │ └── visitors/
│ │ │ │ │ ├── AnimateDirective.js
│ │ │ │ │ ├── ArrowFunctionExpression.js
│ │ │ │ │ ├── AssignmentExpression.js
│ │ │ │ │ ├── AttachTag.js
│ │ │ │ │ ├── Attribute.js
│ │ │ │ │ ├── AwaitBlock.js
│ │ │ │ │ ├── AwaitExpression.js
│ │ │ │ │ ├── BindDirective.js
│ │ │ │ │ ├── CallExpression.js
│ │ │ │ │ ├── ClassBody.js
│ │ │ │ │ ├── ClassDeclaration.js
│ │ │ │ │ ├── ClassDirective.js
│ │ │ │ │ ├── Component.js
│ │ │ │ │ ├── ConstTag.js
│ │ │ │ │ ├── DebugTag.js
│ │ │ │ │ ├── EachBlock.js
│ │ │ │ │ ├── ExportDefaultDeclaration.js
│ │ │ │ │ ├── ExportNamedDeclaration.js
│ │ │ │ │ ├── ExportSpecifier.js
│ │ │ │ │ ├── ExpressionStatement.js
│ │ │ │ │ ├── ExpressionTag.js
│ │ │ │ │ ├── Fragment.js
│ │ │ │ │ ├── FunctionDeclaration.js
│ │ │ │ │ ├── FunctionExpression.js
│ │ │ │ │ ├── HtmlTag.js
│ │ │ │ │ ├── Identifier.js
│ │ │ │ │ ├── IfBlock.js
│ │ │ │ │ ├── ImportDeclaration.js
│ │ │ │ │ ├── KeyBlock.js
│ │ │ │ │ ├── LabeledStatement.js
│ │ │ │ │ ├── LetDirective.js
│ │ │ │ │ ├── Literal.js
│ │ │ │ │ ├── MemberExpression.js
│ │ │ │ │ ├── NewExpression.js
│ │ │ │ │ ├── OnDirective.js
│ │ │ │ │ ├── PropertyDefinition.js
│ │ │ │ │ ├── RegularElement.js
│ │ │ │ │ ├── RenderTag.js
│ │ │ │ │ ├── SlotElement.js
│ │ │ │ │ ├── SnippetBlock.js
│ │ │ │ │ ├── SpreadAttribute.js
│ │ │ │ │ ├── SpreadElement.js
│ │ │ │ │ ├── StyleDirective.js
│ │ │ │ │ ├── SvelteBody.js
│ │ │ │ │ ├── SvelteBoundary.js
│ │ │ │ │ ├── SvelteComponent.js
│ │ │ │ │ ├── SvelteDocument.js
│ │ │ │ │ ├── SvelteElement.js
│ │ │ │ │ ├── SvelteFragment.js
│ │ │ │ │ ├── SvelteHead.js
│ │ │ │ │ ├── SvelteSelf.js
│ │ │ │ │ ├── SvelteWindow.js
│ │ │ │ │ ├── TaggedTemplateExpression.js
│ │ │ │ │ ├── TemplateElement.js
│ │ │ │ │ ├── Text.js
│ │ │ │ │ ├── TitleElement.js
│ │ │ │ │ ├── TransitionDirective.js
│ │ │ │ │ ├── UpdateExpression.js
│ │ │ │ │ ├── UseDirective.js
│ │ │ │ │ ├── VariableDeclarator.js
│ │ │ │ │ └── shared/
│ │ │ │ │ ├── a11y/
│ │ │ │ │ │ ├── constants.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── attribute.js
│ │ │ │ │ ├── component.js
│ │ │ │ │ ├── element.js
│ │ │ │ │ ├── fragment.js
│ │ │ │ │ ├── function.js
│ │ │ │ │ ├── snippets.js
│ │ │ │ │ ├── special-element.js
│ │ │ │ │ └── utils.js
│ │ │ │ ├── 3-transform/
│ │ │ │ │ ├── client/
│ │ │ │ │ │ ├── transform-client.js
│ │ │ │ │ │ ├── transform-template/
│ │ │ │ │ │ │ ├── fix-attribute-casing.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── template.js
│ │ │ │ │ │ │ └── types.d.ts
│ │ │ │ │ │ ├── types.d.ts
│ │ │ │ │ │ ├── utils.js
│ │ │ │ │ │ └── visitors/
│ │ │ │ │ │ ├── AnimateDirective.js
│ │ │ │ │ │ ├── ArrowFunctionExpression.js
│ │ │ │ │ │ ├── AssignmentExpression.js
│ │ │ │ │ │ ├── AttachTag.js
│ │ │ │ │ │ ├── Attribute.js
│ │ │ │ │ │ ├── AwaitBlock.js
│ │ │ │ │ │ ├── AwaitExpression.js
│ │ │ │ │ │ ├── BinaryExpression.js
│ │ │ │ │ │ ├── BindDirective.js
│ │ │ │ │ │ ├── BlockStatement.js
│ │ │ │ │ │ ├── BreakStatement.js
│ │ │ │ │ │ ├── CallExpression.js
│ │ │ │ │ │ ├── ClassBody.js
│ │ │ │ │ │ ├── Comment.js
│ │ │ │ │ │ ├── Component.js
│ │ │ │ │ │ ├── ConstTag.js
│ │ │ │ │ │ ├── DebugTag.js
│ │ │ │ │ │ ├── EachBlock.js
│ │ │ │ │ │ ├── ExportNamedDeclaration.js
│ │ │ │ │ │ ├── ExpressionStatement.js
│ │ │ │ │ │ ├── ForOfStatement.js
│ │ │ │ │ │ ├── Fragment.js
│ │ │ │ │ │ ├── FunctionDeclaration.js
│ │ │ │ │ │ ├── FunctionExpression.js
│ │ │ │ │ │ ├── HtmlTag.js
│ │ │ │ │ │ ├── Identifier.js
│ │ │ │ │ │ ├── IfBlock.js
│ │ │ │ │ │ ├── KeyBlock.js
│ │ │ │ │ │ ├── LabeledStatement.js
│ │ │ │ │ │ ├── LetDirective.js
│ │ │ │ │ │ ├── MemberExpression.js
│ │ │ │ │ │ ├── OnDirective.js
│ │ │ │ │ │ ├── Program.js
│ │ │ │ │ │ ├── RegularElement.js
│ │ │ │ │ │ ├── RenderTag.js
│ │ │ │ │ │ ├── SlotElement.js
│ │ │ │ │ │ ├── SnippetBlock.js
│ │ │ │ │ │ ├── SpreadAttribute.js
│ │ │ │ │ │ ├── SvelteBody.js
│ │ │ │ │ │ ├── SvelteBoundary.js
│ │ │ │ │ │ ├── SvelteComponent.js
│ │ │ │ │ │ ├── SvelteDocument.js
│ │ │ │ │ │ ├── SvelteElement.js
│ │ │ │ │ │ ├── SvelteFragment.js
│ │ │ │ │ │ ├── SvelteHead.js
│ │ │ │ │ │ ├── SvelteSelf.js
│ │ │ │ │ │ ├── SvelteWindow.js
│ │ │ │ │ │ ├── TitleElement.js
│ │ │ │ │ │ ├── TransitionDirective.js
│ │ │ │ │ │ ├── UpdateExpression.js
│ │ │ │ │ │ ├── UseDirective.js
│ │ │ │ │ │ ├── VariableDeclaration.js
│ │ │ │ │ │ └── shared/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── declarations.js
│ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ ├── events.js
│ │ │ │ │ │ ├── fragment.js
│ │ │ │ │ │ ├── function.js
│ │ │ │ │ │ ├── special_element.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── transform-server.js
│ │ │ │ │ │ ├── types.d.ts
│ │ │ │ │ │ └── visitors/
│ │ │ │ │ │ ├── AssignmentExpression.js
│ │ │ │ │ │ ├── AwaitBlock.js
│ │ │ │ │ │ ├── AwaitExpression.js
│ │ │ │ │ │ ├── CallExpression.js
│ │ │ │ │ │ ├── ClassBody.js
│ │ │ │ │ │ ├── Component.js
│ │ │ │ │ │ ├── ConstTag.js
│ │ │ │ │ │ ├── DebugTag.js
│ │ │ │ │ │ ├── EachBlock.js
│ │ │ │ │ │ ├── ExpressionStatement.js
│ │ │ │ │ │ ├── Fragment.js
│ │ │ │ │ │ ├── HtmlTag.js
│ │ │ │ │ │ ├── Identifier.js
│ │ │ │ │ │ ├── IfBlock.js
│ │ │ │ │ │ ├── KeyBlock.js
│ │ │ │ │ │ ├── LabeledStatement.js
│ │ │ │ │ │ ├── MemberExpression.js
│ │ │ │ │ │ ├── Program.js
│ │ │ │ │ │ ├── PropertyDefinition.js
│ │ │ │ │ │ ├── RegularElement.js
│ │ │ │ │ │ ├── RenderTag.js
│ │ │ │ │ │ ├── SlotElement.js
│ │ │ │ │ │ ├── SnippetBlock.js
│ │ │ │ │ │ ├── SpreadAttribute.js
│ │ │ │ │ │ ├── SvelteBoundary.js
│ │ │ │ │ │ ├── SvelteComponent.js
│ │ │ │ │ │ ├── SvelteElement.js
│ │ │ │ │ │ ├── SvelteFragment.js
│ │ │ │ │ │ ├── SvelteHead.js
│ │ │ │ │ │ ├── SvelteSelf.js
│ │ │ │ │ │ ├── TitleElement.js
│ │ │ │ │ │ ├── UpdateExpression.js
│ │ │ │ │ │ ├── VariableDeclaration.js
│ │ │ │ │ │ └── shared/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── shared/
│ │ │ │ │ │ ├── assignments.js
│ │ │ │ │ │ └── transform-async.js
│ │ │ │ │ ├── types.d.ts
│ │ │ │ │ └── utils.js
│ │ │ │ ├── bindings.js
│ │ │ │ ├── css.js
│ │ │ │ ├── nodes.js
│ │ │ │ ├── patterns.js
│ │ │ │ ├── scope.js
│ │ │ │ └── types.d.ts
│ │ │ ├── preprocess/
│ │ │ │ ├── decode_sourcemap.js
│ │ │ │ ├── index.js
│ │ │ │ ├── legacy-public.d.ts
│ │ │ │ ├── private.d.ts
│ │ │ │ ├── public.d.ts
│ │ │ │ └── replace_in_code.js
│ │ │ ├── print/
│ │ │ │ ├── index.js
│ │ │ │ └── types.d.ts
│ │ │ ├── private.d.ts
│ │ │ ├── public.d.ts
│ │ │ ├── state.js
│ │ │ ├── types/
│ │ │ │ ├── css.d.ts
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── legacy-interfaces.d.ts
│ │ │ │ ├── legacy-nodes.d.ts
│ │ │ │ └── template.d.ts
│ │ │ ├── utils/
│ │ │ │ ├── assert.js
│ │ │ │ ├── ast.js
│ │ │ │ ├── builders.js
│ │ │ │ ├── compile_diagnostic.js
│ │ │ │ ├── extract_svelte_ignore.js
│ │ │ │ ├── mapped_code.js
│ │ │ │ ├── push_array.js
│ │ │ │ ├── sanitize_template_string.js
│ │ │ │ ├── slot.js
│ │ │ │ └── string.js
│ │ │ ├── validate-options.js
│ │ │ └── warnings.js
│ │ ├── constants.js
│ │ ├── easing/
│ │ │ └── index.js
│ │ ├── escaping.js
│ │ ├── events/
│ │ │ ├── index.js
│ │ │ └── public.d.ts
│ │ ├── html-tree-validation.js
│ │ ├── index-client.js
│ │ ├── index-server.js
│ │ ├── index.d.ts
│ │ ├── internal/
│ │ │ ├── client/
│ │ │ │ ├── constants.js
│ │ │ │ ├── context.js
│ │ │ │ ├── dev/
│ │ │ │ │ ├── assign.js
│ │ │ │ │ ├── console-log.js
│ │ │ │ │ ├── css.js
│ │ │ │ │ ├── debug.js
│ │ │ │ │ ├── elements.js
│ │ │ │ │ ├── equality.js
│ │ │ │ │ ├── hmr.js
│ │ │ │ │ ├── inspect.js
│ │ │ │ │ ├── legacy.js
│ │ │ │ │ ├── ownership.js
│ │ │ │ │ ├── tracing.js
│ │ │ │ │ └── validation.js
│ │ │ │ ├── dom/
│ │ │ │ │ ├── blocks/
│ │ │ │ │ │ ├── async.js
│ │ │ │ │ │ ├── await.js
│ │ │ │ │ │ ├── boundary.js
│ │ │ │ │ │ ├── branches.js
│ │ │ │ │ │ ├── css-props.js
│ │ │ │ │ │ ├── each.js
│ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ ├── if.js
│ │ │ │ │ │ ├── key.js
│ │ │ │ │ │ ├── slot.js
│ │ │ │ │ │ ├── snippet.js
│ │ │ │ │ │ ├── svelte-component.js
│ │ │ │ │ │ ├── svelte-element.js
│ │ │ │ │ │ └── svelte-head.js
│ │ │ │ │ ├── css.js
│ │ │ │ │ ├── elements/
│ │ │ │ │ │ ├── actions.js
│ │ │ │ │ │ ├── attachments.js
│ │ │ │ │ │ ├── attributes.js
│ │ │ │ │ │ ├── bindings/
│ │ │ │ │ │ │ ├── document.js
│ │ │ │ │ │ │ ├── input.js
│ │ │ │ │ │ │ ├── media.js
│ │ │ │ │ │ │ ├── navigator.js
│ │ │ │ │ │ │ ├── props.js
│ │ │ │ │ │ │ ├── select.js
│ │ │ │ │ │ │ ├── shared.js
│ │ │ │ │ │ │ ├── size.js
│ │ │ │ │ │ │ ├── this.js
│ │ │ │ │ │ │ ├── universal.js
│ │ │ │ │ │ │ └── window.js
│ │ │ │ │ │ ├── class.js
│ │ │ │ │ │ ├── custom-element.js
│ │ │ │ │ │ ├── customizable-select.js
│ │ │ │ │ │ ├── events.js
│ │ │ │ │ │ ├── misc.js
│ │ │ │ │ │ ├── style.js
│ │ │ │ │ │ └── transitions.js
│ │ │ │ │ ├── hydration.js
│ │ │ │ │ ├── legacy/
│ │ │ │ │ │ ├── event-modifiers.js
│ │ │ │ │ │ ├── lifecycle.js
│ │ │ │ │ │ └── misc.js
│ │ │ │ │ ├── operations.js
│ │ │ │ │ ├── reconciler.js
│ │ │ │ │ ├── task.js
│ │ │ │ │ ├── template.js
│ │ │ │ │ └── types.d.ts
│ │ │ │ ├── error-handling.js
│ │ │ │ ├── errors.js
│ │ │ │ ├── hydratable.js
│ │ │ │ ├── index.js
│ │ │ │ ├── legacy.js
│ │ │ │ ├── loop.js
│ │ │ │ ├── proxy.js
│ │ │ │ ├── proxy.test.ts
│ │ │ │ ├── reactivity/
│ │ │ │ │ ├── async.js
│ │ │ │ │ ├── batch.js
│ │ │ │ │ ├── deriveds.js
│ │ │ │ │ ├── effects.js
│ │ │ │ │ ├── equality.js
│ │ │ │ │ ├── props.js
│ │ │ │ │ ├── sources.js
│ │ │ │ │ ├── status.js
│ │ │ │ │ ├── store.js
│ │ │ │ │ ├── types.d.ts
│ │ │ │ │ └── utils.js
│ │ │ │ ├── render.js
│ │ │ │ ├── runtime.js
│ │ │ │ ├── timing.js
│ │ │ │ ├── types.d.ts
│ │ │ │ ├── validate.js
│ │ │ │ └── warnings.js
│ │ │ ├── disclose-version.js
│ │ │ ├── flags/
│ │ │ │ ├── async.js
│ │ │ │ ├── index.js
│ │ │ │ ├── legacy.js
│ │ │ │ └── tracing.js
│ │ │ ├── index.js
│ │ │ ├── server/
│ │ │ │ ├── abort-signal.js
│ │ │ │ ├── blocks/
│ │ │ │ │ ├── html.js
│ │ │ │ │ └── snippet.js
│ │ │ │ ├── context.js
│ │ │ │ ├── crypto.js
│ │ │ │ ├── crypto.test.ts
│ │ │ │ ├── dev.js
│ │ │ │ ├── errors.js
│ │ │ │ ├── hydratable.js
│ │ │ │ ├── hydration.js
│ │ │ │ ├── index.js
│ │ │ │ ├── render-context.js
│ │ │ │ ├── renderer.js
│ │ │ │ ├── renderer.test.ts
│ │ │ │ ├── types.d.ts
│ │ │ │ └── warnings.js
│ │ │ ├── shared/
│ │ │ │ ├── attributes.js
│ │ │ │ ├── clone.js
│ │ │ │ ├── clone.test.ts
│ │ │ │ ├── dev.js
│ │ │ │ ├── errors.js
│ │ │ │ ├── types.d.ts
│ │ │ │ ├── utils.js
│ │ │ │ ├── validate.js
│ │ │ │ └── warnings.js
│ │ │ └── types.d.ts
│ │ ├── legacy/
│ │ │ ├── legacy-client.js
│ │ │ └── legacy-server.js
│ │ ├── motion/
│ │ │ ├── index.js
│ │ │ ├── private.d.ts
│ │ │ ├── public.d.ts
│ │ │ ├── spring.js
│ │ │ ├── tweened.js
│ │ │ └── utils.js
│ │ ├── reactivity/
│ │ │ ├── create-subscriber.js
│ │ │ ├── date.js
│ │ │ ├── date.test.ts
│ │ │ ├── index-client.js
│ │ │ ├── index-server.js
│ │ │ ├── map.js
│ │ │ ├── map.test.ts
│ │ │ ├── media-query.js
│ │ │ ├── reactive-value.js
│ │ │ ├── set.js
│ │ │ ├── set.test.ts
│ │ │ ├── url-search-params.js
│ │ │ ├── url-search-params.test.ts
│ │ │ ├── url.js
│ │ │ ├── url.test.ts
│ │ │ └── window/
│ │ │ └── index.js
│ │ ├── server/
│ │ │ ├── index.d.ts
│ │ │ └── index.js
│ │ ├── store/
│ │ │ ├── index-client.js
│ │ │ ├── index-server.js
│ │ │ ├── private.d.ts
│ │ │ ├── public.d.ts
│ │ │ ├── shared/
│ │ │ │ └── index.js
│ │ │ └── utils.js
│ │ ├── transition/
│ │ │ ├── index.js
│ │ │ └── public.d.ts
│ │ ├── utils.js
│ │ └── version.js
│ ├── svelte-html.d.ts
│ ├── tests/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── animation-helpers.js
│ │ ├── compiler-errors/
│ │ │ ├── samples/
│ │ │ │ ├── attribute-empty/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-sequence-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-sequence-expression-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unique/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unique-binding/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unique-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unique-shorthand/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unique-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── catch-before-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── catch-without-await/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-state-field-static/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── comment-unclosed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-invalid-name/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error-4/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error-5/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-duplicate-error-6/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-error/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-error-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-error-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-cyclical/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-sequence/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-snippet-invalid-reference-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-snippet-invalid-reference-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-whitespace/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-combinator-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-declaration/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-in-pseudoclass/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-multiple-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-block-multiple-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-modifier/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-modifier-start-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-global-modifier-start-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-nesting-selector-root/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dollar-binding-declaration-legacy/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dollar-binding-declaration-runes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dollar-binding-declaration-runes-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dollar-binding-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dollar-binding-global-js/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── dollar-binding-import/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dynamic-element-binding-invalid/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-key-without-as/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── effect-active-rune/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── element-invalid-name/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-before-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-before-closing-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-before-closing-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-if-before-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-if-before-closing-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── else-if-without-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── empty-attribute-shorthand/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── empty-classname-binding/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── empty-directive-name/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── export-default-derived-state-indirect/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-default-state-indirect/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-derived-state/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-derived-state-indirect/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-not-defined-module/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── export-state/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-state-indirect/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── export-state-module/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── illegal-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── invalid-arguments-usage/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── invalid-rune-name/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── invalid-rune-name-shadowed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── invalid-snippet-binding/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── invalid-snippet-mutation/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── legacy-no-const-assignment/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── legacy-no-const-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── malformed-snippet/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── malformed-snippet-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── multiple-styles/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── options-children/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-mustaches-whitespace/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── render-tag-invalid-call/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-before-after-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-bindable-not-called/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-duplicate-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-export-let/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-export-named-state/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-invalid-each-binding/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-invalid-each-binding-this/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-invalid-each-mutation/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-module-store-subscription/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-no-const-assignment/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-no-const-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-no-rune-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-props-illegal-name-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-props-illegal-name-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-props-not-called/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-wrong-bindable-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-wrong-bindable-placement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-derived-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-derived-placement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-effect-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-effect-placement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-host-placement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-props-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-wrong-props-placement-instance/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── runes-wrong-props-placement-module/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-state-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-state-placement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-state-raw-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── runes-wrong-state-snapshot-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── script-unclosed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── script-unclosed-eof/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── self-reference/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── slot-conflicting-with-render-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── snippet-children-conflict/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── snippet-invalid-export/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── snippet-rest-args/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-autosub-context-module/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-contextual/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-global-disallowed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-prevent-user-declarations/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-shadow-scope/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-shadow-scope-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-shadow-scope-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── store-template-expression-scope/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── style-unclosed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── style-unclosed-eof/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-internal-import/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── main.svelte.js
│ │ │ │ ├── svelte-selfdestructive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── then-before-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── then-without-await/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unbalanced-curly-component/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unbalanced-curly-element/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unclosed-attribute-self-close-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unexpected-end-of-input/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unexpected-end-of-input-b/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unexpected-end-of-input-c/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unexpected-end-of-input-d/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unmatched-closing-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unmatched-closing-tag-autoclose/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── unmatched-closing-tag-autoclose-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── void-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── window-children/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── window-duplicate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── window-inside-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ └── window-inside-element/
│ │ │ │ ├── _config.js
│ │ │ │ └── main.svelte
│ │ │ └── test.ts
│ │ ├── css/
│ │ │ ├── samples/
│ │ │ │ ├── animations/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── at-layer/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── at-rule-nested-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-bind/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-case-sensitive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-details-open/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-dialog-open/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-html-case-insensitive/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-matches-derictive/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-only-name/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-unquoted/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── attribute-selector-word-arbitrary-whitespace/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── basic/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── child-combinator/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── class-directive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── clsx-can-prune/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── clsx-cannot-prune-1/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── clsx-cannot-prune-2/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── clsx-cannot-prune-3/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── combinator-child/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── comment-html/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── comment-repeated/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── comments-after-last-selector/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── container-query/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── css-prune-edge-cases/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── css-vars/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── custom-css-hash/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── descendant-selector-non-top-level-outer/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── descendant-selector-unmatched/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── directive-special-character/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── double-hyphen/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── dynamic-element/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── dynamic-element-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── empty-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── empty-rule/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── empty-rule-dev/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-await/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-await-not-exhaustive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-each/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-each-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-each-else/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-each-else-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-each-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-former-element-in-slot/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-if-not-exhaustive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-if-not-exhaustive-with-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-key/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-nested-slots/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-nested-slots-flattened/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-render-tag/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-rendertag-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-selects-slot-fallback/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-slot/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-slot-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-slots-between/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-star/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── general-siblings-combinator-svelteelement/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-keyframes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-keyframes-with-no-elements/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-local/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-local-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-nested-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-child-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-child-combinator-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-data-attribute/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-nesting/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-root/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── global-with-unused-descendant/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── has/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── has-with-render-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── host/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── is/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── keyframes/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── keyframes-autoprefixed/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── keyframes-from-to/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── local-inside-global/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── media-query/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── media-query-word/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── nested-css/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── nested-css-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── nesting-selectors/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── not-selector/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── not-selector-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-contains/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals-case-insensitive/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals-dynamic/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-pipe-equals/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-prefix/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-suffix/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-attribute-selector-word-equals/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-class-dynamic/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-class-static/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant-global-inner/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant-global-inner-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant-global-inner-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant-global-outer/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-descendant-global-outer-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-global-children/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-global-descendants/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-id/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-multiple-descendants/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-whitespace/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── omit-scoping-attribute-whitespace-multiple/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── preserve-specificity/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── pseudo-element/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── quote-mark-inside-string/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── render-tag-loop/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── root/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── selectedcontent/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── selector-list/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-await/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-await-not-exhaustive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-component/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-component-default-snippet/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-component-named-snippet/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-each/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-each-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-each-else/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-each-else-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-each-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-former-element-in-slot/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-global/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-if-not-exhaustive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-if-not-exhaustive-with-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-key/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-missing-fallback/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-nested-slots/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-nested-slots-flattened/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-render-tag/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-selects-slot-fallback/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-slot/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-slot-named-between-default/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-slots-between/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-star/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── siblings-combinator-with-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── snippets/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── snippets-elements/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── special-characters/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── spread/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-charset/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-font-face/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-import/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-namespace/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-nested-page/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-page/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── supports-query/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── undefined-with-scope/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unicode-identifier/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── universal-selector/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unknown-at-rule/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unknown-at-rule-with-following-rules/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-nested-at-rule/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-child-combinator/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-empty-attribute/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-in-between/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-leading/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-string-concat/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-ternary/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ ├── expected.html
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-ternary-bailed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-ternary-concat/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-ternary-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-selector-trailing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── unused-ts-as-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ ├── view-transition/
│ │ │ │ │ ├── expected.css
│ │ │ │ │ └── input.svelte
│ │ │ │ └── weird-selectors/
│ │ │ │ ├── expected.css
│ │ │ │ └── input.svelte
│ │ │ └── test.ts
│ │ ├── css-parse.test.ts
│ │ ├── helpers.js
│ │ ├── html_equal.js
│ │ ├── hydration/
│ │ │ ├── samples/
│ │ │ │ ├── basic/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── boundary-pending-attribute/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── claim-comment/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── claim-static/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── claim-text/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── Layout.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── cloudflare-mirage-borking/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ ├── _override.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── cloudflare-mirage-borking-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ ├── _override.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-in-element/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-props-hmr/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── custom-element-with-settable-only-property/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dynamic-text/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dynamic-text-changed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dynamic-text-nil/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block-0-on-server-more-on-client/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block-arg-clash/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block-fallback-mismatch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block-less-nodes-on-client/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-block-more-nodes-on-client/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-else/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-preserve-whitespace/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── each-text-only/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-attribute-added/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-attribute-changed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-attribute-removed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-attribute-unchanged/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-attribute-unchanged-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-dir-attribute-sibling/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-nested/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-nested-sibling/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-ref/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── event-handler/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── expression-sibling/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── head-html-and-component/
│ │ │ │ │ ├── HeadNested.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── head-meta-hydrate-duplicate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── head-missing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected_head.html
│ │ │ │ │ ├── _override_head.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── html-tag-hydration/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-anchor/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-empty/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-false/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-mismatch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-mismatch-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── if-block-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── ignore-mismatched-href/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── img-src-mismatch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── input-checked-attribute-sibling/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── input-value-changed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── no-reset-debug/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── no-reset-snippet/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── noscript/
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── optgroup-rich-content/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── option-rich-content-continues/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── option-rich-content-static/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── pre-first-node-newline/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-empty/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-mismatch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-mismatch-static/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.client.svelte
│ │ │ │ │ └── main.server.svelte
│ │ │ │ ├── raw-repair/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ ├── inner.svelte
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-svg/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── raw-with-empty-line-at-top/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── removes-undefined-attributes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── repair-mismatched-a-href/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── repairs-apparent-static-content/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── rich-select/
│ │ │ │ │ ├── Option.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── safari-borking/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ ├── _override.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── safari-borking-2/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _override.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── script/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── snippet-raw-hydrate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── standalone-component/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── standalone-snippet/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── surrounding-whitespace/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ ├── _override.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── text-empty/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── text-empty-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── _expected.html
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── text-fallback/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── top-level-text/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ └── whitespace-at-block-start/
│ │ │ │ ├── Nested.svelte
│ │ │ │ ├── _config.js
│ │ │ │ ├── _expected.html
│ │ │ │ ├── _override.html
│ │ │ │ └── main.svelte
│ │ │ └── test.ts
│ │ ├── manual/
│ │ │ └── each-stress-test/
│ │ │ └── main.svelte
│ │ ├── migrate/
│ │ │ ├── samples/
│ │ │ │ ├── $$slots-used-as-variable/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── $$slots-used-as-variable-$$props/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── accessors/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── css-ignore/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── derivations/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── each-block-const/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── effects/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── effects-with-alias-run/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── event-handlers/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── event-handlers-with-alias/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── export-props-multiple-declarations/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── import-type-$-prefix/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$bindable-bindable-var-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$derived-derived-var-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$derived-derived-var-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$derived-derived-var-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$derived-derived-var-4/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$props-props-var-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$state-state-var-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$state-state-var-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-$state-state-var-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-beforeUpdate-afterUpdate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-prop-and-$$props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-prop-non-identifier/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-slot-change-name/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-slot-non-identifier/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── impossible-migrate-with-errors/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── is-not-where-has/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── jsdoc-with-comments/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── labeled-statement-reassign-state/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── named-slots/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── not-blank-css-if-error/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── not-prepend-props-to-export-let/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-and-labeled/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-export-alias/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-interface/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-rest-props/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-rest-props-jsdoc/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-rest-props-ts/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── props-ts/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reactive-statements-inner-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reactive-statements-reorder-1/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reactive-statements-reorder-2/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reactive-statements-reorder-not-deleting-additions/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reactive-statements-reorder-with-comments/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── reassigned-deriveds/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── remove-blocks-whitespace/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── script-context-module/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── self-closing-elements/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── self-closing-named-slot/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── shadowed-forwarded-slot/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── single-assignment-labeled/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-dont-mess-with-attributes/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-non-identifier/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-shadow-props/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-usages/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-use_ts/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-use_ts-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-use_ts-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slots/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slots-below-imports/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slots-custom-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slots-multiple/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slots-with-$$props/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── state-and-derivations-sequence/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── state-no-initial/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── state-ts/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-component/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-ignore/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-self/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-self-name-conflict/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-self-skip-filename/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── unused-beforeUpdate-afterUpdate/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ └── unused-beforeUpdate-afterUpdate-extra-imports/
│ │ │ │ ├── input.svelte
│ │ │ │ └── output.svelte
│ │ │ └── test.ts
│ │ ├── motion/
│ │ │ └── test.ts
│ │ ├── parser-legacy/
│ │ │ ├── samples/
│ │ │ │ ├── action/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── action-duplicate/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── action-with-call/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── action-with-identifier/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── action-with-literal/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── animation/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-class-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-containing-solidus/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-curly-bracket/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-dynamic/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-dynamic-boolean/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-empty/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-escaped/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-multiple/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-shorthand/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-static/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-static-boolean/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-style/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-style-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-style-directive-modifiers/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-style-directive-shorthand/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-style-directive-string/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-unquoted/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── attribute-with-whitespace/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── await-catch/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── await-then-catch/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── binding/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── binding-shorthand/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── comment/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── comment-with-ignores/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── component-dynamic/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── convert-entities/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── convert-entities-in-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── css/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── dynamic-element-string/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── dynamic-element-variable/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── dynamic-import/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-destructured/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-else/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-indexed/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-keyed/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── element-with-attribute/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── element-with-attribute-empty-string/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── element-with-mustache/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── element-with-text/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── elements/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── event-handler/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── generic-snippets/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block-else/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block-elseif/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── implicitly-closed-li/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── implicitly-closed-li-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── javascript-comments/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-invalid-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-invalid-expression/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-unclosed-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-unclosed-open-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-unclosed-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── nbsp/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── no-error-if-before-closing/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── raw-mustaches/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── refs/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── script/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── script-attribute-with-curly-braces/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── script-comment-only/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── script-context-module-unquoted/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── self-closing-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── self-reference/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── slotted-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── space-between-mustaches/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── spread/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── style-inside-head/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── textarea-children/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── textarea-end-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── transition-intro/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── transition-intro-no-params/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── unusual-identifier/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── whitespace-after-script-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── whitespace-after-style-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── whitespace-leading-trailing/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ └── whitespace-normal/
│ │ │ │ ├── input.svelte
│ │ │ │ └── output.json
│ │ │ └── test.ts
│ │ ├── parser-modern/
│ │ │ ├── samples/
│ │ │ │ ├── attachments/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── comment-before-function-binding/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── comment-before-script/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── comment-in-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── css-nth-syntax/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── css-pseudo-classes/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-object-pattern/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── each-block-object-pattern-special-characters/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── generic-snippets/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block-else/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── if-block-elseif/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-invalid-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-invalid-expression/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-unclosed-open-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-unclosed-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── loose-valid-each-as/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── options/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── script-style-no-markup/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── semicolon-inside-quotes/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── snippets/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ ├── template-shadowroot/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.json
│ │ │ │ └── typescript-in-event-handler/
│ │ │ │ ├── input.svelte
│ │ │ │ └── output.json
│ │ │ └── test.ts
│ │ ├── preprocess/
│ │ │ ├── samples/
│ │ │ │ ├── attributes-with-closing-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── attributes-with-equals/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── comments/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── dependencies/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── empty-sourcemap/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── filename/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── ignores-null/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── markup/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── multiple-preprocessors/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── partial-names/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── script/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected_map.json
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── script-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── script-self-closing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style-async/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style-attributes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected_map.json
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style-attributes-modified/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected_map.json
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style-attributes-modified-longer/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── expected_map.json
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ └── style-self-closing/
│ │ │ │ ├── _config.js
│ │ │ │ ├── input.svelte
│ │ │ │ └── output.svelte
│ │ │ └── test.ts
│ │ ├── print/
│ │ │ ├── samples/
│ │ │ │ ├── animate-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── attach-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── attribute/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── await-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── bind-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── block-element-separation/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── class-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── comment/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── component/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── const-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── each-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── expression-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── formatting/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── html-document/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── html-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── if-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── key-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── let-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── on-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── regular-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── render-tag/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── script/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── slot-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── snippet-block/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── spread-attribute/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── style-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-boundary/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-component/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-document/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-element/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-fragment/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-head/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-options/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-self/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── svelte-window/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── text/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ ├── transition-directive/
│ │ │ │ │ ├── input.svelte
│ │ │ │ │ └── output.svelte
│ │ │ │ └── use-directive/
│ │ │ │ ├── input.svelte
│ │ │ │ └── output.svelte
│ │ │ └── test.ts
│ │ ├── runtime-browser/
│ │ │ ├── assert.js
│ │ │ ├── custom-elements-samples/
│ │ │ │ ├── $$props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── $$slot/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── $$slot-dynamic-content/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── my-widget.svelte
│ │ │ │ ├── action/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── camel-case-attribute/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── ce-options-valid/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── closed-shadow-dom/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── custom-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── custom-method/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── effect-sequence/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── element-effect-context/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── escaped-css/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── events/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── events-slotted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── extend-with-ts/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── extended-builtin/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── custom-button.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── host-rune/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── host-rune-access-injected-css/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── html/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── html-slots/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── late-ce-mount/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── nested/
│ │ │ │ │ ├── Counter.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── new-styled/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── no-shadow-dom/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── no-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── no-tag-ce-options/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── oncreate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── ondestroy/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── propagate-prop-changes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── my-widget.svelte
│ │ │ │ ├── props-rune-attributes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── my-widget.svelte
│ │ │ │ ├── reflect-attributes/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── my-widget.svelte
│ │ │ │ ├── reflect-attributes-add-remove/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── set-property-before-mounted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ └── shadow-root-init-options/
│ │ │ │ ├── _config.js
│ │ │ │ └── main.svelte
│ │ │ ├── driver-ssr.js
│ │ │ ├── driver.js
│ │ │ ├── samples/
│ │ │ │ ├── bind-muted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bind-playbackrate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bind-volume/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-files/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-width-height-initialize/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-width-height-this-timing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── browser-events-ending-with-capture/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-css-custom-properties/
│ │ │ │ │ ├── Slider.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-css-custom-properties-dynamic/
│ │ │ │ │ ├── Slider.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-css-custom-properties-dynamic-svg/
│ │ │ │ │ ├── Svg.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-event-handler-contenteditable-false/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-binding-dimensions/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── css-props-dynamic-component/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── B.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── dynamic-element-custom-element/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── fine-grained-hydration-clean-attr/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── head-script/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── head-scripts/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── html-tag-script/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── html-tag-script-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── hydrate-large-text-node/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── inline-style-directive-important/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── inline-style-directive-precedence/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── inline-style-directive-update-with-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── mount-in-iframe/
│ │ │ │ │ ├── App.svelte
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── GrandChild.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── sole-script-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-component-css-custom-properties/
│ │ │ │ │ ├── Slider1.svelte
│ │ │ │ │ ├── Slider2.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-component-css-custom-properties-dynamic/
│ │ │ │ │ ├── Slider.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-component-css-custom-properties2/
│ │ │ │ │ ├── Slider1.svelte
│ │ │ │ │ ├── Slider2.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-self-css-custom-properties/
│ │ │ │ │ ├── Slider1.svelte
│ │ │ │ │ ├── Slider2.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── svelte-self-css-custom-properties-dynamic/
│ │ │ │ │ ├── Slider.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ └── svelte-self-css-custom-properties2/
│ │ │ │ ├── Slider1.svelte
│ │ │ │ ├── Slider2.svelte
│ │ │ │ ├── _config.js
│ │ │ │ └── main.svelte
│ │ │ ├── test-ssr.ts
│ │ │ └── test.ts
│ │ ├── runtime-legacy/
│ │ │ ├── samples/
│ │ │ │ ├── action/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-body/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-component/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── sub.svelte
│ │ │ │ ├── action-custom-event-handler/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-custom-event-handler-in-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-custom-event-handler-in-each-destructured/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-custom-event-handler-node-context/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-custom-event-handler-this/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-custom-event-handler-with-context/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-document/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-function/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-object/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-object-deep/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-receives-element-mounted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-ternary-template/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-this/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── action-update-before-destroy/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── after-render-prevents-loop/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── after-render-triggers-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-css/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-flip/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-flip-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-js/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-js-delay/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── animation-js-easing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── apply-directives-in-order/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── apply-directives-in-order-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── array-literal-spread-deopt/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── array-rest-is-array-or-object/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── assignment-in-init/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── assignment-to-computed-property/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── assignment-to-const1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── assignment-to-const2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── async-generator-object-methods/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attachment-in-mutated-state/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-after-property/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-case-insensitive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-false/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-hidden/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-indeterminate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-inert/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-true/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-boolean-with-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-casing/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-casing-custom-element/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-custom-element-inheritance/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dataset-without-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic-no-dependencies/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic-quotemarks/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic-shorthand/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-dynamic-type/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-empty/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-empty-svg/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-false/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-microdata/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-namespaced/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-classname-no-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-classname-with-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-classnames-no-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-classnames-with-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-func-classname-no-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-func-classname-with-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-func-classnames-no-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-null-func-classnames-with-style/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-partial-number/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-prefer-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-static/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-static-at-symbol/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-static-boolean/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-static-quotemarks/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-undefined/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-unknown-without-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── attribute-url/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── autofocus/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── autofocus-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── autofocus-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-block-func-function/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-catch-no-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-catch-shorthand/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-component-oncreate/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-conservative-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── sleep.js
│ │ │ │ ├── await-containing-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-function-promise/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-in-dynamic-component/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-in-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-in-removed-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-mount-and-unmount-immediately/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-mutate-array/
│ │ │ │ │ ├── Card.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-set-simultaneous/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-set-simultaneous-reactive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-blowback-reactive/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-anchor/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-event/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-in-slot/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-no-values/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-non-promise/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-order/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-catch-static/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-array/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-array-nested-rest/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-computed-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-default/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-number-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-object/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-object-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-rest/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-destruct-string-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-no-context/
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-no-expression/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-shadowed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-then-shorthand/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-with-components/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-with-update/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-with-update-2/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-with-update-catch-scope/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── await-without-catch/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── before-render-chain/
│ │ │ │ │ ├── Item.svelte
│ │ │ │ │ ├── List.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── before-render-chain-2/
│ │ │ │ │ ├── Item.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── before-render-prevents-loop/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bind-export-const-with-spread/
│ │ │ │ │ ├── Test.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-backflow/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── Parent.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-circular/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-contenteditable-html/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-contenteditable-html-initial/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-contenteditable-innertext/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-contenteditable-text/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-contenteditable-text-initial/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-details-open/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-focused/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-indirect/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-indirect-computed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-indirect-fn/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-indirect-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-indirect-value/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-deep-contextual/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-deep-contextual-b/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-group/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-group-outside-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-indeterminate/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-checkbox-with-event-in-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-duplicate-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-10/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-11/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-12/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-13/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-14/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-15/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-16/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-4/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-5/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-6/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-7/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-8/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-each-9/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-if-gh-8372-1/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-if-gh-8372-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-group-undefined/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-member-expression-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-number/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-number-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-radio-group/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-range/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-range-change-with-max/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-contextual/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-contextual-deconflicted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-contextual-reactive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-contextual-reactive-prop/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deconflicted/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deep/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deep-computed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deep-computed-dynamic/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deep-contextual/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-deep-contextual-computed-dynamic/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-text-undefined/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-input-with-event/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-member-expression-no-warning/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-no-unnecessary-invalidation/
│ │ │ │ │ ├── Tab.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-from-let/
│ │ │ │ │ ├── Parent.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-from-let-2/
│ │ │ │ │ ├── Parent.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-implicit-option-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-in-each-block/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-in-yield/
│ │ │ │ │ ├── Modal.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-initial-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-initial-value-undefined/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-initial-value-undefined-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-initial-value-undefined-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-late/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-late-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-late-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-late-4/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-null-placeholder/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-null-placeholder-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-optgroup/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-reactive-derived/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-unmatched/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-unmatched-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-select-unmatched-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-store/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-store-deep/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-store-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-textarea/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-and-value/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-component-computed-key/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-component-each-block/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-component-each-block-value/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-component-reactive/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-block-property/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-block-property-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-block-property-component/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-key/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-object-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-each-object-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-element-reactive/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-element-reactive-b/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-legacy-component-api/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── sub.svelte
│ │ │ │ ├── binding-this-member-expression-update/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-multiple/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-no-innerhtml/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-store/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-unset/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-this-with-context/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-using-props/
│ │ │ │ │ ├── TextInput.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── binding-value-prop/
│ │ │ │ │ ├── Field.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bindings-before-onmount/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bindings-coalesced/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bindings-global-dependency/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-3/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-if/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-if-2/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot/
│ │ │ │ │ ├── Echo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot-2/
│ │ │ │ │ ├── Echo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot-3/
│ │ │ │ │ ├── Echo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot-4/
│ │ │ │ │ ├── Echo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot-5/
│ │ │ │ │ ├── Echo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── bitmask-overflow-slot-6/
│ │ │ │ │ ├── Slotted.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── block-expression-assign/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── block-expression-fn-call/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── block-expression-member-access/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-boolean/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-helper/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-in-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-shortcut/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-shortcut-with-class/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-shortcut-with-transition/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-with-attribute/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-with-dynamic-attribute/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-with-dynamic-attribute-and-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-with-spread/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── class-with-spread-and-bind/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding/
│ │ │ │ │ ├── Counter.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-accessors/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-aliased/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback-b/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback-c/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback-d/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback-e/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-blowback-f/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-computed/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-conditional/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Baz.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-conditional-b/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Baz.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-deep/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-deep2/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each-nested/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each-object/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each-reassigned/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each-remount-keyed/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── InnerChild.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-each-remount-unkeyed/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── InnerChild.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-infinite-loop/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── B.svelte
│ │ │ │ │ ├── C.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-nested/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Baz.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-non-leaky/
│ │ │ │ │ ├── Counter.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-onMount/
│ │ │ │ │ ├── Mount.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-parent-supercedes-child/
│ │ │ │ │ ├── Counter.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-parent-supercedes-child-b/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-parent-supercedes-child-c/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-private-state/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-reactive-property-no-extra-call/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-reactive-statement/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-self-destroying/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-binding-store/
│ │ │ │ │ ├── Input.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-dynamic/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-dynamic-late/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-dynamic-shorthand/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-empty/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-static/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-static-boolean/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-data-static-boolean-regression/
│ │ │ │ │ ├── Link.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-event-handler-dynamic/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-event-handler-modifier-once/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-event-handler-modifier-once-dynamic/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-event-not-stale/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events-console/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events-data/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events-each/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events-nullish/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-events-this/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-if-placement/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-name-deconflicted/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-name-deconflicted-globals/
│ │ │ │ │ ├── Countdown.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-namespace/
│ │ │ │ │ ├── Tooltip.svelte
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-namespaced/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── components.svelte
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-nested-deep/
│ │ │ │ │ ├── Level1.svelte
│ │ │ │ │ ├── Level2.svelte
│ │ │ │ │ ├── Level3.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-nested-deeper/
│ │ │ │ │ ├── Level1.svelte
│ │ │ │ │ ├── Level2.svelte
│ │ │ │ │ ├── Level3.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-not-constructor/
│ │ │ │ │ ├── Sub.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-not-constructor2/
│ │ │ │ │ ├── Sub.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-not-void/
│ │ │ │ │ ├── Link.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-prop-object/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-props-added/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-props-mutated/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-ref/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-shorthand-import/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-attribute-order/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-chained/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-component-named/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-component-named-b/
│ │ │ │ │ ├── Hello.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-component-named-c/
│ │ │ │ │ ├── Hello.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── World.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-context-props-each/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-context-props-each-nested/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-context-props-let/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-default/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-default-in-each/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-dynamic/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-each-block/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-empty/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-empty-b/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback-2/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ ├── main.svelte
│ │ │ │ │ └── store.svelte
│ │ │ │ ├── component-slot-fallback-3/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback-4/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback-5/
│ │ │ │ │ ├── IconA.svelte
│ │ │ │ │ ├── IconB.svelte
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback-6/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-fallback-empty/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-if-block/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-if-block-before-node/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-if-else-block-before-node/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-aliased/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-b/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-c/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-d/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-destructured/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-destructured-2/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-e/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-f/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── B.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-g/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-in-binding/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-in-slot/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-in-slot-2/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-inline-function/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-missing-prop/
│ │ │ │ │ ├── Bar.svelte
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-mutated/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-named/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-named-2/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── SlotInner.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-scope/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-scope-2/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-scope-3/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-scope-4/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── Nested2.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-scope-5/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── Nested2.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-let-static/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-name-with-hyphen/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-named/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-named-b/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-named-c/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-named-scope/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── Parent.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-names-sanitized/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-component/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-if/
│ │ │ │ │ ├── Display.svelte
│ │ │ │ │ ├── Input.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-in-element/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-nested-in-slot/
│ │ │ │ │ ├── One.svelte
│ │ │ │ │ ├── Two.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-slot/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── Forward.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-spread/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-spread-props/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-static-and-dynamic/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-slot-used-with-default-event/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-static-at-symbol/
│ │ │ │ │ ├── Email.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment/
│ │ │ │ │ ├── B.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-2/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-aliased/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-b/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-c/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-d/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-destructured/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-destructured-2/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-e/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── B.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-f/
│ │ │ │ │ ├── A.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-in-binding/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-in-slot/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-named/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-let-static/
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-svelte-fragment-nested/
│ │ │ │ │ ├── Child.svelte
│ │ │ │ │ ├── Nested.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-template-inline-mutation/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-transition/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-follows-element/
│ │ │ │ │ ├── Foo.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-if/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-multiple-in-each/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-multiple-in-if/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-nested-if/
│ │ │ │ │ ├── Inner.svelte
│ │ │ │ │ ├── Outer.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-parent/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-placement/
│ │ │ │ │ ├── Modal.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── component-yield-static/
│ │ │ │ │ ├── Widget.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then-destructuring/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then-destructuring-computed-in-computed/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then-destructuring-computed-props/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then-destructuring-literals/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-await-then-destructuring-nested-rest/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-component/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-component-without-let/
│ │ │ │ │ ├── Component.svelte
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-dependencies/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-depends-on-const-tag/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-each/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-each-arrow/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-each-const/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-each-destructure/
│ │ │ │ │ ├── _config.js
│ │ │ │ │ └── main.svelte
│ │ │ │ ├── const-tag-each-destructure-computed-in-co
================================================
FILE CONTENTS
================================================
================================================
FILE: .changeset/README.md
================================================
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": ["@svitejs/changesets-changelog-github-compact", { "repo": "sveltejs/svelte" }],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"bumpVersionsWithWorkspaceProtocolOnly": true,
"ignore": ["!(@sveltejs/*|svelte)"]
}
================================================
FILE: .changeset/const-tags.md
================================================
---
'svelte': patch
---
fix: invalidate `@const` tags based on visible references in legacy mode
================================================
FILE: .changeset/evil-chicken-attend.md
================================================
---
'svelte': patch
---
fix: disallow `--` in `idPrefix`
================================================
FILE: .changeset/orange-geckos-rest.md
================================================
---
'svelte': patch
---
fix: don't override `$destroy/set/on` instance methods in dev mode
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = tab
charset = utf-8
trim_trailing_whitespace = true
[test/**/expected.css]
insert_final_newline = false
[package.json]
indent_style = space
================================================
FILE: .gitattributes
================================================
/site/** -linguist-detectable
/test/**/samples/** -linguist-detectable
/**/*.svelte linguist-detectable
================================================
FILE: .github/FUNDING.yml
================================================
open_collective: svelte
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "\U0001F41E Bug report"
description: Report an issue with Svelte
labels: ['triage: bug']
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks!
placeholder: Bug description
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Please provide a link to a repo or REPL that can reproduce the problem you ran into. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided within a reasonable time-frame, the issue will be closed.
placeholder: Reproduction
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs
description: 'Please include browser console and server logs around the time this bug occurred. Optional if provided reproduction. Please try not to insert an image but copy paste the log text.'
render: shell
- type: textarea
id: system-info
attributes:
label: System Info
description: Output of `npx envinfo --system --npmPackages svelte,rollup,webpack --binaries --browsers`
render: shell
placeholder: System, Binaries, Browsers
validations:
required: true
- type: dropdown
id: severity
attributes:
label: Severity
description: Select the severity of this issue
options:
- annoyance
- blocking an upgrade
- blocking all usage of svelte
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Discord Chat
url: https://svelte.dev/chat
about: Ask questions and discuss with other Svelte users in real time.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: 'Feature Request'
description: Request a new Svelte feature
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to request this feature! If your feature request is complex or substantial enough to warrant in-depth discussion, maintainers may close the issue and ask you to open an [RFC](https://github.com/sveltejs/rfcs).
- type: textarea
id: problem
attributes:
label: Describe the problem
description: Please provide a clear and concise description the problem this feature would solve. The more information you can provide here, the better.
placeholder: I'm always frustrated when...
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe the proposed solution
description: Please provide a clear and concise description of what you would like to happen.
placeholder: I would like to see...
validations:
required: true
- type: dropdown
id: importance
attributes:
label: Importance
description: How important is this feature to you?
options:
- nice to have
- would make my life easier
- i cannot use svelte without it
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
---
Before filing an issue we'd appreciate it if you could take a moment to ensure
there isn't already an open issue or pull-request.
---
If there's an existing issue, please add a :+1: reaction to the description of
the issue. One way we prioritize issues is by the number of :+1: reactions on
their descriptions. Please DO NOT add `+1` or :+1: comments.
### Feature requests and proposals
We're excited to hear how we can make Svelte better. Please add as much detail
as you can on your use case. To propose an implementation of a large feature or
change, please create an [RFC](https://github.com/sveltejs/rfcs).
### Bugs
If you're filing an issue about a bug please include as much information
as you can including the following.
- Your browser and the version: (e.x. Chrome 52.1, Firefox 48.0, IE 10)
- Your operating system: (e.x. OS X 10, Windows XP, etc)
- Svelte version (Please check you can reproduce the issue with the latest release!)
- Whether your project uses Webpack or Rollup
- _Repeatable steps to reproduce the issue_
## Thanks for being part of Svelte!
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
### Before submitting the PR, please make sure you do the following
- [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
- [ ] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`.
- [ ] This message body should clearly illustrate what problems it solves.
- [ ] Ideally, include a test that fails without this PR but passes with it.
- [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`).
### Tests and linting
- [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint`
================================================
FILE: .github/workflows/autofix.yml
================================================
name: Autofix Lint
on:
issue_comment:
types: [created]
workflow_dispatch:
permissions: {}
jobs:
autofix-lint:
permissions:
contents: write # to push the generated types commit
pull-requests: read # to resolve the PR head ref
# prevents this action from running on forks
if: |
github.repository == 'sveltejs/svelte' &&
(
github.event_name == 'workflow_dispatch' ||
(
github.event.issue.pull_request != null &&
github.event.comment.body == '/autofix' &&
contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
)
)
runs-on: ubuntu-latest
steps:
- name: Get PR ref
if: github.event_name != 'workflow_dispatch'
id: pr
uses: actions/github-script@v8
with:
script: |
const { data: pull } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
});
if (pull.head.repo.full_name !== `${context.repo.owner}/${context.repo.repo}`) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: 'Cannot autofix: this PR is from a forked repository. The autofix workflow can only push to branches within this repository.'
});
core.setFailed('PR is from a fork');
}
core.setOutput('ref', pull.head.ref);
- uses: actions/checkout@v6
if: github.event_name == 'workflow_dispatch' || steps.pr.outcome == 'success'
with:
ref: ${{ github.event_name == 'workflow_dispatch' && github.ref || steps.pr.outputs.ref }}
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Build
run: pnpm -F svelte build
- name: Run prettier
run: pnpm format
- name: Commit changes
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
git diff --staged --quiet || git commit -m "chore: autofix"
git push origin HEAD
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read # to fetch code (actions/checkout)
env:
# We only install Chromium manually
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
jobs:
Tests:
permissions: {}
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
matrix:
include:
- node-version: 18
os: windows-latest
- node-version: 18
os: macOS-latest
- node-version: 18
os: ubuntu-latest
- node-version: 20
os: ubuntu-latest
- node-version: 22
os: ubuntu-latest
- node-version: 24
os: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm playwright install chromium
- run: pnpm test
env:
CI: true
TestNoAsync:
permissions: {}
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm playwright install chromium
- run: pnpm test runtime-runes
env:
CI: true
SVELTE_NO_ASYNC: true
TSGo:
permissions: {}
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- name: install
run: pnpm install --frozen-lockfile
- name: install tsgo
run: cd packages/svelte && pnpm i -D @typescript/native-preview
- name: type check
run: cd packages/svelte && pnpm check:tsgo
Lint:
permissions: {}
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- name: install
run: pnpm install --frozen-lockfile
- name: type check
run: pnpm check
- name: lint
if: (${{ success() }} || ${{ failure() }}) # ensures this step runs even if previous steps fail (avoids multiple runs uncovering different issues at different steps)
run: pnpm lint
- name: build and check generated types
if: (${{ success() }} || ${{ failure() }}) # ensures this step runs even if previous steps fail
run: pnpm build && { [ "`git status --porcelain=v1`" == "" ] || (echo "Generated types have changed — please regenerate types locally with `cd packages/svelte && pnpm generate:types` and commit the changes after you have reviewed them"; git diff; exit 1); }
Benchmarks:
permissions: {}
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm bench
env:
CI: true
================================================
FILE: .github/workflows/ecosystem-ci-trigger.yml
================================================
name: ecosystem-ci trigger
on:
issue_comment:
types: [created]
permissions: {}
jobs:
trigger:
runs-on: ubuntu-latest
if: github.repository == 'sveltejs/svelte' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/ecosystem-ci run')
permissions:
issues: write # to add / delete reactions, post comments
pull-requests: write # to read PR data, and to add labels
actions: read # to check workflow status
contents: read # to clone the repo
steps:
- name: Check User Permissions
uses: actions/github-script@v8
id: check-permissions
with:
script: |
const user = context.payload.sender.login
console.log(`Validate user: ${user}`)
let hasTriagePermission = false
try {
const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: user,
});
hasTriagePermission = data.user.permissions.triage
} catch (e) {
console.warn(e)
}
if (hasTriagePermission) {
console.log('User is allowed. Adding +1 reaction.')
await github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: '+1',
})
} else {
console.log('User is not allowed. Adding -1 reaction.')
await github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: '-1',
})
throw new Error('User does not have the necessary permissions.')
}
- name: Get PR Data
uses: actions/github-script@v8
id: get-pr-data
with:
script: |
console.log(`Get PR info: ${context.repo.owner}/${context.repo.repo}#${context.issue.number}`)
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
})
const commentCreatedAt = new Date(context.payload.comment.created_at)
const commitPushedAt = new Date(pr.head.repo.pushed_at)
console.log(`Comment created at: ${commentCreatedAt.toISOString()}`)
console.log(`PR last pushed at: ${commitPushedAt.toISOString()}`)
// Check if any commits were pushed after the comment was created
if (commitPushedAt > commentCreatedAt) {
const errorMsg = [
'⚠️ Security warning: PR was updated after the trigger command was posted.',
'',
`Comment posted at: ${commentCreatedAt.toISOString()}`,
`PR last pushed at: ${commitPushedAt.toISOString()}`,
'',
'This could indicate an attempt to inject code after approval.',
'Please review the latest changes and re-run /ecosystem-ci run if they are acceptable.'
].join('\n')
core.setFailed(errorMsg)
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: errorMsg
})
throw new Error('PR was pushed to after comment was created')
}
return {
num: context.issue.number,
branchName: pr.head.ref,
commit: pr.head.sha,
repo: pr.head.repo.full_name
}
- name: Generate Token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_ID }}
private-key: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_PRIVATE_KEY }}
repositories: |
svelte
svelte-ecosystem-ci
- name: Trigger Downstream Workflow
uses: actions/github-script@v8
id: trigger
env:
COMMENT: ${{ github.event.comment.body }}
PR_DATA: ${{ steps.get-pr-data.outputs.result }}
with:
github-token: ${{ steps.generate-token.outputs.token }}
script: |
const comment = process.env.COMMENT.trim()
const prData = JSON.parse(process.env.PR_DATA)
const suite = comment.split('\n')[0].replace(/^\/ecosystem-ci run/, '').trim()
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: 'svelte-ecosystem-ci',
workflow_id: 'ecosystem-ci-from-pr.yml',
ref: 'main',
inputs: {
prNumber: '' + prData.num,
branchName: prData.branchName,
repo: prData.repo,
commit: prData.commit,
suite: suite === '' ? '-' : suite
}
})
================================================
FILE: .github/workflows/pkg.pr.new.yml
================================================
name: pkg.pr.new
on:
pull_request_target:
types: [opened, synchronize]
push:
branches: [main]
workflow_dispatch:
inputs:
sha:
description: 'Commit SHA to build'
required: true
type: string
pr:
description: 'PR number to comment on'
required: true
type: number
permissions: {}
jobs:
build:
# Skip pull_request_target events from forks — maintainers can use workflow_dispatch instead
if: >
github.event_name != 'pull_request_target' ||
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
# No permissions — this job runs user-controlled code
permissions: {}
steps:
- uses: actions/checkout@v6
with:
# For pull_request_target, check out the PR head.
# For workflow_dispatch, check out the manually specified SHA.
# For push, fall back to the push SHA.
ref: ${{ github.event.pull_request.head.sha || inputs.sha || github.sha }}
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- uses: actions/setup-node@v6
with:
node-version: 22.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- run: pnpx pkg-pr-new publish --comment=off --json output.json --compact --no-template './packages/svelte'
- name: Upload output
uses: actions/upload-artifact@v4
with:
name: output
path: ./output.json
# Sanitizes the untrusted output from the build job before it's consumed by
# jobs with elevated permissions. This ensures that only known package names
# and valid SHA prefixes make it through.
sanitize:
needs: build
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Download artifact
uses: actions/download-artifact@v7
with:
name: output
- name: Sanitize output
uses: actions/github-script@v8
with:
script: |
const fs = require('fs');
const raw = JSON.parse(fs.readFileSync('output.json', 'utf8'));
const ALLOWED_PACKAGES = new Set(['svelte']);
const SHA_PATTERN = /^[0-9a-f]{7}$/;
const packages = (raw.packages || [])
.filter(p => {
if (!ALLOWED_PACKAGES.has(p.name)) {
console.log(`Skipping unexpected package: ${JSON.stringify(p.name)}`);
return false;
}
const sha = p.url?.replace(/^.+@([^@]+)$/, '$1');
if (!sha || !SHA_PATTERN.test(sha)) {
console.log(`Skipping package with invalid SHA: ${JSON.stringify(p.url)}`);
return false;
}
return true;
})
.map(p => ({
name: p.name,
sha: p.url.replace(/^.+@([^@]+)$/, '$1'),
}));
fs.writeFileSync('sanitized-output.json', JSON.stringify({ packages }), 'utf8');
- name: Upload sanitized output
uses: actions/upload-artifact@v4
with:
name: sanitized-output
path: ./sanitized-output.json
comment:
needs: sanitize
if: github.event_name == 'pull_request_target' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Download sanitized artifact
uses: actions/download-artifact@v7
with:
name: sanitized-output
- name: Resolve PR number
id: pr
uses: actions/github-script@v8
with:
script: |
if (context.eventName === 'pull_request_target') {
core.setOutput('number', context.issue.number);
return;
}
// 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', pr);
- name: Post or update comment
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
const { packages } = JSON.parse(fs.readFileSync('sanitized-output.json', 'utf8'));
if (packages.length === 0) {
console.log('No valid packages found. Skipping comment.');
return;
}
const issue_number = parseInt('${{ steps.pr.outputs.number }}', 10);
const bot_comment_identifier = `<!-- pkg.pr.new comment -->`;
const body = `${bot_comment_identifier}
[Playground](https://svelte.dev/playground?version=pr-${issue_number})
\`\`\`
${packages.map(p => `pnpm add https://pkg.pr.new/${p.name}@${issue_number}`).join('\n')}
\`\`\`
`;
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number,
});
const existing = comments.data.find(c => c.body.includes(bot_comment_identifier));
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number,
body,
});
}
log:
needs: sanitize
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Download sanitized artifact
uses: actions/download-artifact@v7
with:
name: sanitized-output
- name: Log publish info
uses: actions/github-script@v8
with:
script: |
const fs = require('fs');
const { packages } = JSON.parse(fs.readFileSync('sanitized-output.json', 'utf8'));
if (packages.length === 0) {
console.log('No valid packages found.');
return;
}
console.log('\n' + '='.repeat(50));
console.log('Publish Information');
console.log('='.repeat(50));
for (const p of packages) {
console.log(`${p.name} - pnpm add https://pkg.pr.new/${p.name}@${p.sha}`);
}
const svelte = packages.find(p => p.name === 'svelte');
if (svelte) {
console.log(`\nPlayground: https://svelte.dev/playground?version=commit-${svelte.sha}`);
}
console.log('='.repeat(50));
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
branches:
- main
concurrency:
# prevent two release workflows from running at once
# race conditions here can result in releases failing
group: ${{ github.workflow }}
permissions: {}
jobs:
release:
# prevents this action from running on forks
if: github.repository == 'sveltejs/svelte'
permissions:
contents: write # to create release (changesets/action)
id-token: write # OpenID Connect token needed for provenance
pull-requests: write # to create pull request (changesets/action)
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v6
with:
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
fetch-depth: 0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.x
cache: pnpm
- name: Install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build && { [ "`git status --porcelain=v1`" == "" ] || (echo "Generated types have changed — please regenerate types locally with `cd packages/svelte && pnpm generate:types` and commit the changes after you have reviewed them"; git diff; exit 1); }
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@6a0a831ff30acef54f2c6aa1cbbc1096b066edaf # v1
with:
version: pnpm changeset:version
publish: pnpm changeset:publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_CONFIG_PROVENANCE: true
================================================
FILE: .gitignore
================================================
# Dependency directories
node_modules/
# IDE related
.idea
# Test coverage
coverage
*.lcov
# Optional eslint cache
.eslintcache
# dotenv environment variables file
.env
.env.test
# build output
.vercel
# OS-specific
.DS_Store
tmp
benchmarking/.profiles
benchmarking/compare/.results
benchmarking/compare/.profiles
================================================
FILE: .npmrc
================================================
playwright_skip_browser_download=1
================================================
FILE: .prettierignore
================================================
documentation/docs/
packages/**/dist/*.js
packages/**/build/*.js
packages/**/npm/**/*
packages/**/config/*.js
# packages/svelte
packages/svelte/messages/**/*.md
packages/svelte/scripts/_bundle.js
packages/svelte/src/compiler/errors.js
packages/svelte/src/compiler/warnings.js
packages/svelte/src/internal/client/errors.js
packages/svelte/src/internal/client/warnings.js
packages/svelte/src/internal/shared/errors.js
packages/svelte/src/internal/shared/warnings.js
packages/svelte/src/internal/server/errors.js
packages/svelte/src/internal/server/warnings.js
packages/svelte/tests/migrate/samples/*/output.svelte
packages/svelte/tests/**/*.svelte
packages/svelte/tests/**/_expected*
packages/svelte/tests/**/_actual*
packages/svelte/tests/**/expected*
packages/svelte/tests/**/_output
packages/svelte/tests/**/shards/*.test.js
packages/svelte/tests/hydration/samples/*/_expected.html
packages/svelte/tests/hydration/samples/*/_override.html
packages/svelte/tests/parser-legacy/samples/*/_actual.json
packages/svelte/tests/parser-legacy/samples/*/output.json
packages/svelte/tests/parser-modern/samples/*/_actual.json
packages/svelte/tests/parser-modern/samples/*/output.json
packages/svelte/types
packages/svelte/compiler/index.js
playgrounds/sandbox/dist/*
playgrounds/sandbox/output/*
playgrounds/sandbox/src/*
**/node_modules
**/.svelte-kit
**/.vercel
.github/CODEOWNERS
.prettierignore
.changeset
pnpm-lock.yaml
pnpm-workspace.yaml
================================================
FILE: .prettierrc
================================================
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"overrides": [
{
"files": ["*.svelte"],
"options": {
"bracketSameLine": false
}
},
{
"files": ["README.md", "packages/*/README.md", "**/package.json"],
"options": {
"useTabs": false,
"tabWidth": 2
}
}
]
}
================================================
FILE: .vscode/launch.json
================================================
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Run sandbox",
"program": "${workspaceFolder}/playgrounds/sandbox/run.js",
"env": {
"NODE_OPTIONS": "--stack-trace-limit=10000"
}
}
]
}
================================================
FILE: .vscode/settings.json
================================================
{
"typescript.tsdk": "node_modules/typescript/lib"
}
================================================
FILE: .well-known/funding-manifest-urls
================================================
https://svelte.dev/funding.json
================================================
FILE: CODE_OF_CONDUCT.md
================================================
This repository is governed by the Svelte Code of Conduct.
https://github.com/sveltejs/community/blob/main/CODE_OF_CONDUCT.md
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Svelte
Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM.
The [Open Source Guides](https://opensource.guide/) website has a collection of resources for individuals, communities, and companies. These resources help people who want to learn how to run and contribute to open source projects. Contributors and people new to open source alike will find the following guides especially useful:
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
- [Building Welcoming Communities](https://opensource.guide/building-community/)
## Get involved
There are many ways to contribute to Svelte, and many of them do not involve writing any code. Here are a few ideas to get started:
- Simply start using Svelte. Go through the [Getting Started](https://svelte.dev/docs#getting-started) guide. Does everything work as expected? If not, we're always looking for improvements. Let us know by [opening an issue](#reporting-new-issues).
- Look through the [open issues](https://github.com/sveltejs/svelte/issues). A good starting point would be issues tagged [good first issue](https://github.com/sveltejs/svelte/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). Provide workarounds, ask for clarification, or suggest labels. Help [triage issues](#triaging-issues-and-pull-requests).
- If you find an issue you would like to fix, [open a pull request](#pull-requests).
- Read through our [tutorials](https://svelte.dev/tutorial). If you find anything that is confusing or can be improved, you can make edits by clicking "Edit this page" at the bottom left of the tutorial page.
- Take a look at the [features requested](https://github.com/sveltejs/svelte/labels/feature%20request) by others in the community and consider opening a pull request if you see something you want to work on.
Contributions are very welcome. If you think you need help planning your contribution, please ping us on Discord at [svelte.dev/chat](https://svelte.dev/chat) and let us know you are looking for a bit of help.
### Triaging issues and pull requests
One great way you can contribute to the project without writing any code is to help triage issues and pull requests as they come in.
- Ask for more information if you believe the issue does not provide all the details required to solve it.
- Flag issues that are stale or that should be closed.
- Ask for test plans and review code.
## Our process
### RFCs
If you'd like to propose an implementation for a large new feature or change then please [create an RFC](https://github.com/sveltejs/rfcs) to discuss it up front.
### Roadmap
When deciding where to contribute, you may wish to take a look at [our roadmap](https://svelte.dev/roadmap). The Svelte team generally works on a single major effort at a time. This has a couple benefits for us as maintainers. First, it allows us to focus and make noticeable progress in an area being proactive rather than reactive. Secondly, it allows us to handle related issues and PRs together. By batching issues and PRs together we’re able to ensure implementations and fixes holistically address the set of problems and use cases encountered by our users.
### Maintainer meetings
The maintainers meet on the final Saturday of each month. While these meetings are not open publicly, we will report back by leaving a comment on each issue discussed. We will generally discuss items aligning with our roadmap, but major PRs needing discussion amongst the maintainers can be added to the agenda for the monthly maintainer’s meeting. However, we typically are only able to get to a couple of items that are not aligned with our current priority.
### Prioritization
We do our best to review PRs and RFCs as they are sent, but it is difficult to keep up. We welcome help in reviewing PRs, RFCs, and issues. If an item aligns with the current priority on our [roadmap](https://svelte.dev/roadmap), it is more likely to be reviewed quickly. PRs to the most important and active ones repositories get reviewed more quickly while PRs to smaller inactive repos may sit for a bit before we periodically come by and review the pending PRs in a batch.
## Bugs
We use [GitHub issues](https://github.com/sveltejs/svelte/issues) for our public bugs. If you would like to report a problem, take a look around and see if someone already opened an issue about it. If you are certain this is a new unreported bug, you can submit a [bug report](#reporting-new-issues).
If you have questions about using Svelte, contact us on Discord at [svelte.dev/chat](https://svelte.dev/chat), and we will do our best to answer your questions.
If you see anything you'd like to be implemented, create a [feature request issue](https://github.com/sveltejs/svelte/issues/new?template=feature_request.yml).
### Reporting new issues
When [opening a new issue](https://github.com/sveltejs/svelte/issues/new/choose), always make sure to fill out the issue template. **This step is very important!** Not doing so may result in your issue not being managed in a timely fashion. Don't take this personally if this happens, and feel free to open a new issue once you've gathered all the information required by the template.
- **One issue, one bug:** Please report a single bug per issue.
- **Provide reproduction steps:** List all the steps necessary to reproduce the issue. The person reading your bug report should be able to follow these steps to reproduce your issue with minimal effort. If possible, use the [REPL](https://svelte.dev/repl) to create your reproduction.
## Pull requests
### Proposing a change
If you would like to request a new feature or enhancement but are not yet thinking about opening a pull request, you can also file an issue with [feature template](https://github.com/sveltejs/svelte/issues/new?template=feature_request.yml).
If you're only fixing a bug, it's fine to submit a pull request right away, but we still recommend that you file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
Small pull requests are much easier to review and more likely to get merged.
### Installation
Ensure you have [pnpm](https://pnpm.io/installation) installed. After cloning the repository, run `pnpm install`.
### Developing
To build the UMD version of `svelte/compiler` (this is only necessary for CommonJS consumers, or in-browser use), run `pnpm build` inside `packages/svelte`. To rebuild whenever source files change, run `pnpm dev`.
### Creating a branch
Fork [the repository](https://github.com/sveltejs/svelte) and create your branch from `main`. If you've never sent a GitHub pull request before, you can learn how from [this free video series](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).
### Testing
A good test plan has the exact commands you ran and their output, provides screenshots or videos if the pull request changes UI.
- If you've changed APIs, update the documentation.
#### Writing tests
All tests are located in the `/tests` folder.
Test samples are kept in `/tests/xxx/samples` folders.
#### Running tests
> PREREQUISITE: Install chromium via playwright by running `pnpm playwright install chromium`
1. To run test, run `pnpm test`.
1. To run a particular test suite, use `pnpm test <suite-name>`, for example:
```sh
pnpm test validator
```
1. To filter tests _within_ a test suite, use `pnpm test <suite-name> -t <test-name>`, for example:
```sh
pnpm test validator -t a11y-alt-text
```
(You can also do `FILTER=<test-name> pnpm test <suite-name>` which removes other tests rather than simply skipping them — this will result in faster and more compact test results, but it's non-idiomatic. Choose your fighter.)
##### Updating `.expected` files
1. Tests suites like `snapshot` and `parser` assert that the generated output matches the existing snapshot.
1. To update these snapshots, run `UPDATE_SNAPSHOTS=true pnpm test`.
### Typechecking
To typecheck the codebase, run `pnpm check` inside `packages/svelte`. To typecheck in watch mode, run `pnpm check:watch`.
### Style guide
[Eslint](https://eslint.org) will catch most styling issues that may exist in your code. You can check the status of your code styling by simply running `pnpm lint`.
#### Code conventions
- `snake_case` for internal variable names and methods.
- `camelCase` for public variable names and methods.
### Generating types
Types are auto-generated from the source, but the result is checked in to ensure no accidental changes slip through. Run `pnpm generate:types` to regenerate the types.
### Sending your pull request
Please make sure the following is done when submitting a pull request:
1. Describe your **test plan** in your pull request description. Make sure to test your changes.
1. Make sure your code lints (`pnpm lint`).
1. Make sure your tests pass (`pnpm test`).
All pull requests should be opened against the `main` branch. Make sure the PR does only one thing, otherwise please split it. If this change should contribute to a version bump, run `npx changeset` at the root of the repository after a code change and select the appropriate packages.
#### Breaking changes
When adding a new breaking change, follow this template in your pull request:
```md
### New breaking change here
- **Who does this affect**:
- **How to migrate**:
- **Why make this breaking change**:
- **Severity (number of people affected x effort)**:
```
### Reviewing pull requests
If you'd like to manually test a pull request in another pnpm project, you can do so by running `pnpm add -D "github:sveltejs/svelte#path:packages/svelte&branch-name"` in that project.
## License
By contributing to Svelte, you agree that your contributions will be licensed under its [MIT license](https://github.com/sveltejs/svelte/blob/master/LICENSE.md).
## Questions
Feel free to ask in [#contributing](https://discord.com/channels/457912077277855764/750401468569354431) on [Discord](https://svelte.dev/chat) if you have questions about our process, how to proceed, etc.
================================================
FILE: FUNDING.json
================================================
{
"drips": {
"ethereum": {
"ownedBy": "0xCE08E02c37d90d75C2bf7D9e55f7606C8DB80E70"
}
}
}
================================================
FILE: LICENSE.md
================================================
Copyright (c) 2016-2025 [Svelte Contributors](https://github.com/sveltejs/svelte/graphs/contributors)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
<a href="https://svelte.dev">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/banner_dark.png">
<img src="assets/banner.png" alt="Svelte - web development for the rest of us" />
</picture>
</a>
[](LICENSE.md) [](https://svelte.dev/chat)
## What is Svelte?
Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM.
Learn more at the [Svelte website](https://svelte.dev), or stop by the [Discord chatroom](https://svelte.dev/chat).
## Supporting Svelte
Svelte is an MIT-licensed open source project with its ongoing development made possible entirely by fantastic volunteers. If you'd like to support their efforts, please consider:
- [Becoming a backer on Open Collective](https://opencollective.com/svelte).
Funds donated via Open Collective will be used for compensating expenses related to Svelte's development such as hosting costs. If sufficient donations are received, funds may also be used to support Svelte's development more directly.
## Roadmap
You may view [our roadmap](https://svelte.dev/roadmap) if you'd like to see what we're currently working on.
## Contributing
Please see the [Contributing Guide](CONTRIBUTING.md) and the [`svelte`](packages/svelte) package for information on contributing to Svelte.
## Is svelte.dev down?
Probably not, but it's possible. If you can't seem to access any `.dev` sites, check out [this SuperUser question and answer](https://superuser.com/q/1413402).
## License
[MIT](LICENSE.md)
================================================
FILE: benchmarking/.gitignore
================================================
output
================================================
FILE: benchmarking/benchmarks/reactivity/index.js
================================================
import fs from 'node:fs';
import path from 'node:path';
import {
sbench_create_0to1,
sbench_create_1000to1,
sbench_create_1to1,
sbench_create_1to1000,
sbench_create_1to2,
sbench_create_1to4,
sbench_create_1to8,
sbench_create_2to1,
sbench_create_4to1,
sbench_create_signals
} from './sbench.js';
import { fileURLToPath } from 'node:url';
import { create_test } from './util.js';
// This benchmark has been adapted from the js-reactivity-benchmark (https://github.com/milomg/js-reactivity-benchmark)
// Not all tests are the same, and many parts have been tweaked to capture different data.
const dirname = path.dirname(fileURLToPath(import.meta.url));
export const reactivity_benchmarks = [
sbench_create_signals,
sbench_create_0to1,
sbench_create_1to1,
sbench_create_2to1,
sbench_create_4to1,
sbench_create_1000to1,
sbench_create_1to2,
sbench_create_1to4,
sbench_create_1to8,
sbench_create_1to1000
];
for (const file of fs.readdirSync(`${dirname}/tests`)) {
if (!file.includes('.bench.')) continue;
const name = file.replace('.bench.js', '');
const module = await import(`${dirname}/tests/${file}`);
const { owned, unowned } = create_test(name, module.default);
reactivity_benchmarks.push(owned, unowned);
}
================================================
FILE: benchmarking/benchmarks/reactivity/sbench.js
================================================
/** @import { Source } from '../../../packages/svelte/src/internal/client/types.js' */
import { fastest_test } from '../../utils.js';
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
const COUNT = 1e5;
/**
* @param {number} n
* @param {any[]} sources
*/
function create_sources(n, sources) {
for (let i = 0; i < n; i++) {
sources[i] = $.state(i);
}
return sources;
}
/**
* @param {Source<number>} source
*/
function create_derived(source) {
$.derived(() => $.get(source));
}
/**
*
* @param {string} label
* @param {(n: number, sources: Array<Source<number>>) => void} fn
* @param {number} count
* @param {number} num_sources
*/
function create_sbench_test(label, count, num_sources, fn) {
return {
label,
fn: async () => {
// Do 3 loops to warm up JIT
for (let i = 0; i < 3; i++) {
fn(count, create_sources(num_sources, []));
}
return await fastest_test(10, () => {
const destroy = $.effect_root(() => {
for (let i = 0; i < 10; i++) {
fn(count, create_sources(num_sources, []));
}
});
destroy();
});
}
};
}
export const sbench_create_signals = create_sbench_test(
'sbench_create_signals',
COUNT,
COUNT,
create_sources
);
export const sbench_create_0to1 = create_sbench_test('sbench_create_0to1', COUNT, 0, (n) => {
for (let i = 0; i < n; i++) {
$.derived(() => i);
}
});
export const sbench_create_1to1 = create_sbench_test(
'sbench_create_1to1',
COUNT,
COUNT,
(n, sources) => {
for (let i = 0; i < n; i++) {
create_derived(sources[i]);
}
}
);
export const sbench_create_2to1 = create_sbench_test(
'sbench_create_2to1',
COUNT / 2,
COUNT,
(n, sources) => {
for (let i = 0; i < n; i++) {
$.derived(() => $.get(sources[i * 2]) + $.get(sources[i * 2 + 1]));
}
}
);
export const sbench_create_4to1 = create_sbench_test(
'sbench_create_4to1',
COUNT / 4,
COUNT,
(n, sources) => {
for (let i = 0; i < n; i++) {
$.derived(
() =>
$.get(sources[i * 4]) +
$.get(sources[i * 4 + 1]) +
$.get(sources[i * 4 + 2]) +
$.get(sources[i * 4 + 3])
);
}
}
);
export const sbench_create_1000to1 = create_sbench_test(
'sbench_create_1000to1',
COUNT / 1000,
COUNT,
(n, sources) => {
for (let i = 0; i < n; i++) {
const offset = i * 1000;
$.derived(() => {
let sum = 0;
for (let i = 0; i < 1000; i++) {
sum += $.get(sources[offset + i]);
}
return sum;
});
}
}
);
export const sbench_create_1to2 = create_sbench_test(
'sbench_create_1to2',
COUNT,
COUNT / 2,
(n, sources) => {
for (let i = 0; i < n / 2; i++) {
const source = sources[i];
create_derived(source);
create_derived(source);
}
}
);
export const sbench_create_1to4 = create_sbench_test(
'sbench_create_1to4',
COUNT,
COUNT / 4,
(n, sources) => {
for (let i = 0; i < n / 4; i++) {
const source = sources[i];
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
}
}
);
export const sbench_create_1to8 = create_sbench_test(
'sbench_create_1to8',
COUNT,
COUNT / 8,
(n, sources) => {
for (let i = 0; i < n / 8; i++) {
const source = sources[i];
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
create_derived(source);
}
}
);
export const sbench_create_1to1000 = create_sbench_test(
'sbench_create_1to1000',
COUNT,
COUNT / 1000,
(n, sources) => {
for (let i = 0; i < n / 1000; i++) {
const source = sources[i];
for (let j = 0; j < 1000; j++) {
create_derived(source);
}
}
}
);
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_avoidable.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
import { busy } from '../util.js';
export default () => {
let head = $.state(0);
let computed1 = $.derived(() => $.get(head));
let computed2 = $.derived(() => ($.get(computed1), 0));
let computed3 = $.derived(() => (busy(), $.get(computed2) + 1)); // heavy computation
let computed4 = $.derived(() => $.get(computed3) + 2);
let computed5 = $.derived(() => $.get(computed4) + 3);
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(computed5);
busy(); // heavy side effect
});
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
assert.equal($.get(computed5), 6);
for (let i = 0; i < 1000; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(computed5), 6);
}
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_broad.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
export default () => {
let head = $.state(0);
let last = head;
let counter = 0;
const destroy = $.effect_root(() => {
for (let i = 0; i < 50; i++) {
let current = $.derived(() => {
return $.get(head) + i;
});
let current2 = $.derived(() => {
return $.get(current) + 1;
});
$.render_effect(() => {
$.get(current2);
counter++;
});
last = current2;
}
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
counter = 0;
for (let i = 0; i < 50; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(last), i + 50);
}
assert.equal(counter, 50 * 50);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_deep.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
let len = 50;
const iter = 50;
export default () => {
let head = $.state(0);
let current = head;
for (let i = 0; i < len; i++) {
let c = current;
current = $.derived(() => {
return $.get(c) + 1;
});
}
let counter = 0;
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(current);
counter++;
});
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
counter = 0;
for (let i = 0; i < iter; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(current), len + i);
}
assert.equal(counter, iter);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_diamond.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
let width = 5;
export default () => {
let head = $.state(0);
let current = [];
for (let i = 0; i < width; i++) {
current.push(
$.derived(() => {
return $.get(head) + 1;
})
);
}
let sum = $.derived(() => {
return current.map((x) => $.get(x)).reduce((a, b) => a + b, 0);
});
let counter = 0;
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(sum);
counter++;
});
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
assert.equal($.get(sum), 2 * width);
counter = 0;
for (let i = 0; i < 500; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(sum), (i + 1) * width);
}
assert.equal(counter, 500);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_mux.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
export default () => {
let heads = new Array(100).fill(null).map((_) => $.state(0));
const mux = $.derived(() => {
return Object.fromEntries(heads.map((h) => $.get(h)).entries());
});
const splited = heads
.map((_, index) => $.derived(() => $.get(mux)[index]))
.map((x) => $.derived(() => $.get(x) + 1));
const destroy = $.effect_root(() => {
splited.forEach((x) => {
$.render_effect(() => {
$.get(x);
});
});
});
return {
destroy,
run() {
for (let i = 0; i < 10; i++) {
$.flush(() => {
$.set(heads[i], i);
});
assert.equal($.get(splited[i]), i + 1);
}
for (let i = 0; i < 10; i++) {
$.flush(() => {
$.set(heads[i], i * 2);
});
assert.equal($.get(splited[i]), i * 2 + 1);
}
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_repeated.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
let size = 30;
export default () => {
let head = $.state(0);
let current = $.derived(() => {
let result = 0;
for (let i = 0; i < size; i++) {
result += $.get(head);
}
return result;
});
let counter = 0;
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(current);
counter++;
});
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
assert.equal($.get(current), size);
counter = 0;
for (let i = 0; i < 100; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(current), i * size);
}
assert.equal(counter, 100);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_triangle.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
let width = 10;
function count(number) {
return new Array(number)
.fill(0)
.map((_, i) => i + 1)
.reduce((x, y) => x + y, 0);
}
export default () => {
let head = $.state(0);
let current = head;
let list = [];
for (let i = 0; i < width; i++) {
let c = current;
list.push(current);
current = $.derived(() => {
return $.get(c) + 1;
});
}
let sum = $.derived(() => {
return list.map((x) => $.get(x)).reduce((a, b) => a + b, 0);
});
let counter = 0;
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(sum);
counter++;
});
});
return {
destroy,
run() {
const constant = count(width);
$.flush(() => {
$.set(head, 1);
});
assert.equal($.get(sum), constant);
counter = 0;
for (let i = 0; i < 100; i++) {
$.flush(() => {
$.set(head, i);
});
assert.equal($.get(sum), constant - width + i * width);
}
assert.equal(counter, 100);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/kairo_unstable.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
export default () => {
let head = $.state(0);
const double = $.derived(() => $.get(head) * 2);
const inverse = $.derived(() => -$.get(head));
let current = $.derived(() => {
let result = 0;
for (let i = 0; i < 20; i++) {
result += $.get(head) % 2 ? $.get(double) : $.get(inverse);
}
return result;
});
let counter = 0;
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(current);
counter++;
});
});
return {
destroy,
run() {
$.flush(() => {
$.set(head, 1);
});
assert.equal($.get(current), 40);
counter = 0;
for (let i = 0; i < 100; i++) {
$.flush(() => {
$.set(head, i);
});
}
assert.equal(counter, 100);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/mol.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
/**
* @param {number} n
*/
function fib(n) {
if (n < 2) return 1;
return fib(n - 1) + fib(n - 2);
}
/**
* @param {number} n
*/
function hard(n) {
return n + fib(16);
}
const numbers = Array.from({ length: 5 }, (_, i) => i);
export default () => {
let res = [];
const A = $.state(0);
const B = $.state(0);
const C = $.derived(() => ($.get(A) % 2) + ($.get(B) % 2));
const D = $.derived(() => numbers.map((i) => i + ($.get(A) % 2) - ($.get(B) % 2)));
D.equals = function (/** @type {number[]} */ l) {
var r = this.v;
return r !== null && l.length === r.length && l.every((v, i) => v === r[i]);
};
const E = $.derived(() => hard($.get(C) + $.get(A) + $.get(D)[0]));
const F = $.derived(() => hard($.get(D)[0] && $.get(B)));
const G = $.derived(() => $.get(C) + ($.get(C) || $.get(E) % 2) + $.get(D)[0] + $.get(F));
const destroy = $.effect_root(() => {
$.render_effect(() => {
res.push(hard($.get(G)));
});
$.render_effect(() => {
res.push($.get(G));
});
$.render_effect(() => {
res.push(hard($.get(F)));
});
});
return {
destroy,
/**
* @param {number} i
*/
run(i) {
res.length = 0;
$.flush(() => {
$.set(B, 1);
$.set(A, 1 + i * 2);
});
$.flush(() => {
$.set(A, 2 + i * 2);
$.set(B, 2);
});
assert.equal(res[0], 3198);
assert.equal(res[1], 1601);
assert.equal(res[2], 3195);
assert.equal(res[3], 1598);
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/tests/repeated_deps.bench.js
================================================
import assert from 'node:assert';
import * as $ from 'svelte/internal/client';
const ARRAY_SIZE = 1000;
export default () => {
const signals = Array.from({ length: ARRAY_SIZE }, (_, i) => $.state(i));
const order = $.state(0);
// break skipped_deps fast path by changing order of reads
const total = $.derived(() => {
const ord = $.get(order);
let sum = 0;
for (let i = 0; i < ARRAY_SIZE; i++) {
sum += /** @type {number} */ ($.get(signals[(i + ord) % ARRAY_SIZE]));
}
return sum;
});
const destroy = $.effect_root(() => {
$.render_effect(() => {
$.get(total);
});
});
return {
destroy,
run() {
for (let i = 0; i < 5; i++) {
$.flush(() => $.set(order, i));
assert.equal($.get(total), (ARRAY_SIZE * (ARRAY_SIZE - 1)) / 2); // sum of 0..999
}
}
};
};
================================================
FILE: benchmarking/benchmarks/reactivity/util.js
================================================
import * as $ from 'svelte/internal/client';
import { fastest_test } from '../../utils.js';
export function busy() {
let a = 0;
for (let i = 0; i < 1_00; i++) {
a++;
}
}
/**
*
* @param {string} label
* @param {() => { run: (i?: number) => void, destroy: () => void }} setup
*/
export function create_test(label, setup) {
return {
unowned: {
label: `${label}_unowned`,
fn: async () => {
// Do 10 loops to warm up JIT
for (let i = 0; i < 10; i++) {
const { run, destroy } = setup();
run(0);
destroy();
}
const { run, destroy } = setup();
const result = await fastest_test(10, () => {
for (let i = 0; i < 1000; i++) {
run(i);
}
});
destroy();
return result;
}
},
owned: {
label: `${label}_owned`,
fn: async () => {
let run, destroy;
const destroy_owned = $.effect_root(() => {
// Do 10 loops to warm up JIT
for (let i = 0; i < 10; i++) {
const { run, destroy } = setup();
run(0);
destroy();
}
({ run, destroy } = setup());
});
const result = await fastest_test(10, () => {
for (let i = 0; i < 1000; i++) {
run(i);
}
});
// @ts-ignore
destroy();
destroy_owned();
return result;
}
}
};
}
================================================
FILE: benchmarking/benchmarks/ssr/index.js
================================================
import { wrapper_bench } from './wrapper/wrapper_bench.js';
export const ssr_benchmarks = [wrapper_bench];
================================================
FILE: benchmarking/benchmarks/ssr/wrapper/App.svelte
================================================
<script>
const wrapperWidth = 960;
const wrapperHeight = 720;
const cellSize = 10;
const centerX = wrapperWidth / 2;
const centerY = wrapperHeight / 2;
let angle = 0;
let radius = 0;
let tiles = [];
const step = cellSize;
while (radius < Math.min(wrapperWidth, wrapperHeight) / 2) {
let x = centerX + Math.cos(angle) * radius;
let y = centerY + Math.sin(angle) * radius;
if (x >= 0 && x <= wrapperWidth - cellSize && y >= 0 && y <= wrapperHeight - cellSize) {
tiles.push({ x, y });
}
angle += 0.2;
radius += step * 0.015;
}
</script>
<div id="wrapper">
{#each tiles as { x, y }}
<div class="tile" style="left: {x.toFixed(2)}px; top: {y.toFixed(2)}px;"></div>
{/each}
</div>
================================================
FILE: benchmarking/benchmarks/ssr/wrapper/wrapper_bench.js
================================================
import * as fs from 'node:fs';
import * as path from 'node:path';
import { render } from 'svelte/server';
import { fastest_test } from '../../../utils.js';
import { compile } from 'svelte/compiler';
const dir = `${process.cwd()}/benchmarking/benchmarks/ssr/wrapper`;
async function compile_svelte() {
const output = compile(read(`${dir}/App.svelte`), {
generate: 'server'
});
write(`${dir}/output/App.js`, output.js.code);
const module = await import(`${dir}/output/App.js`);
return module.default;
}
export const wrapper_bench = {
label: 'wrapper_bench',
fn: async () => {
const App = await compile_svelte();
// Do 3 loops to warm up JIT
for (let i = 0; i < 3; i++) {
render(App);
}
return await fastest_test(10, () => {
for (let i = 0; i < 100; i++) {
render(App);
}
});
}
};
/**
* @param {string} file
*/
function read(file) {
return fs.readFileSync(file, 'utf-8').replace(/\r\n/g, '\n');
}
/**
* @param {string} file
* @param {string} contents
*/
function write(file, contents) {
try {
fs.mkdirSync(path.dirname(file), { recursive: true });
} catch {}
fs.writeFileSync(file, contents);
}
================================================
FILE: benchmarking/compare/index.js
================================================
import fs from 'node:fs';
import path from 'node:path';
import { execSync, fork } from 'node:child_process';
import { fileURLToPath } from 'node:url';
// if (execSync('git status --porcelain').toString().trim()) {
// console.error('Working directory is not clean');
// process.exit(1);
// }
const filename = fileURLToPath(import.meta.url);
const runner = path.resolve(filename, '../runner.js');
const outdir = path.resolve(filename, '../.results');
const report_file = `${outdir}/report.txt`;
if (fs.existsSync(outdir)) fs.rmSync(outdir, { recursive: true });
fs.mkdirSync(outdir);
const branches = [];
let PROFILE_DIR = path.resolve(filename, '../.profiles');
if (fs.existsSync(PROFILE_DIR)) fs.rmSync(PROFILE_DIR, { recursive: true });
fs.mkdirSync(PROFILE_DIR, { recursive: true });
for (const arg of process.argv.slice(2)) {
if (arg.startsWith('--')) continue;
if (arg === filename) continue;
branches.push(arg);
}
if (branches.length === 0) {
branches.push(
execSync('git symbolic-ref --short -q HEAD || git rev-parse --short HEAD').toString().trim()
);
}
if (branches.length === 1) {
branches.push('main');
}
process.on('exit', () => {
execSync(`git checkout ${branches[0]}`);
});
for (const branch of branches) {
console.group(`Benchmarking ${branch}`);
execSync(`git checkout ${branch}`);
await new Promise((fulfil, reject) => {
const child = fork(runner, [], {
env: {
...process.env,
BENCH_PROFILE_DIR: `${PROFILE_DIR}/${safe(branch)}`
}
});
child.on('message', (results) => {
fs.writeFileSync(`${outdir}/${branch}.json`, JSON.stringify(results, null, ' '));
fulfil();
});
child.on('error', reject);
});
console.groupEnd();
}
if (PROFILE_DIR !== null) {
console.log(`\nCPU profiles written to ${PROFILE_DIR}`);
}
const results = branches.map((branch) => {
return JSON.parse(fs.readFileSync(`${outdir}/${branch}.json`, 'utf-8'));
});
fs.writeFileSync(report_file, '');
const write = (str) => {
fs.appendFileSync(report_file, str + '\n');
console.log(str);
};
for (let i = 0; i < results[0].length; i += 1) {
write(`${results[0][i].benchmark}`);
for (const metric of ['time', 'gc_time']) {
const times = results.map((result) => +result[i][metric]);
let min = Infinity;
let max = -Infinity;
let min_index = -1;
for (let b = 0; b < times.length; b += 1) {
const time = times[b];
if (time < min) {
min = time;
min_index = b;
}
if (time > max) {
max = time;
}
}
if (min !== 0) {
write(` ${metric}: fastest is ${char(min_index)} (${branches[min_index]})`);
times.forEach((time, b) => {
const SIZE = 20;
const n = Math.round(SIZE * (time / max));
write(` ${char(b)}: ${'◼'.repeat(n)}${' '.repeat(SIZE - n)} ${time.toFixed(2)}ms`);
});
}
}
write('');
}
function char(i) {
return String.fromCharCode(97 + i);
}
function safe(name) {
return name.replace(/[^a-z0-9._-]+/gi, '_');
}
================================================
FILE: benchmarking/compare/runner.js
================================================
import { reactivity_benchmarks } from '../benchmarks/reactivity/index.js';
import { with_cpu_profile } from '../utils.js';
const results = [];
const PROFILE_DIR = process.env.BENCH_PROFILE_DIR;
for (let i = 0; i < reactivity_benchmarks.length; i += 1) {
const benchmark = reactivity_benchmarks[i];
process.stderr.write(`Running ${i + 1}/${reactivity_benchmarks.length} ${benchmark.label} `);
results.push({
benchmark: benchmark.label,
...(await with_cpu_profile(PROFILE_DIR, benchmark.label, () => benchmark.fn()))
});
process.stderr.write('\x1b[2K\r');
}
process.send(results);
================================================
FILE: benchmarking/run.js
================================================
import * as $ from '../packages/svelte/src/internal/client/index.js';
import { reactivity_benchmarks } from './benchmarks/reactivity/index.js';
import { ssr_benchmarks } from './benchmarks/ssr/index.js';
import { with_cpu_profile } from './utils.js';
// e.g. `pnpm bench kairo` to only run the kairo benchmarks
const filters = process.argv.slice(2);
const PROFILE_DIR = './benchmarking/.profiles';
const suites = [
{
benchmarks: reactivity_benchmarks.filter(
(b) => filters.length === 0 || filters.some((f) => b.label.includes(f))
),
name: 'reactivity benchmarks'
},
{
benchmarks: ssr_benchmarks.filter(
(b) => filters.length === 0 || filters.some((f) => b.label.includes(f))
),
name: 'server-side rendering benchmarks'
}
].filter((suite) => suite.benchmarks.length > 0);
if (suites.length === 0) {
console.log('No benchmarks matched provided filters');
process.exit(1);
}
const COLUMN_WIDTHS = [25, 9, 9];
const TOTAL_WIDTH = COLUMN_WIDTHS.reduce((a, b) => a + b);
const pad_right = (str, n) => str + ' '.repeat(n - str.length);
const pad_left = (str, n) => ' '.repeat(n - str.length) + str;
let total_time = 0;
let total_gc_time = 0;
$.push({}, true);
try {
for (const { benchmarks, name } of suites) {
let suite_time = 0;
let suite_gc_time = 0;
console.log(`\nRunning ${name}...\n`);
console.log(
pad_right('Benchmark', COLUMN_WIDTHS[0]) +
pad_left('Time', COLUMN_WIDTHS[1]) +
pad_left('GC time', COLUMN_WIDTHS[2])
);
console.log('='.repeat(TOTAL_WIDTH));
for (const benchmark of benchmarks) {
const results = await with_cpu_profile(PROFILE_DIR, benchmark.label, () => benchmark.fn());
console.log(
pad_right(benchmark.label, COLUMN_WIDTHS[0]) +
pad_left(results.time.toFixed(2), COLUMN_WIDTHS[1]) +
pad_left(results.gc_time.toFixed(2), COLUMN_WIDTHS[2])
);
total_time += results.time;
total_gc_time += results.gc_time;
suite_time += results.time;
suite_gc_time += results.gc_time;
}
console.log('='.repeat(TOTAL_WIDTH));
console.log(
pad_right('suite', COLUMN_WIDTHS[0]) +
pad_left(suite_time.toFixed(2), COLUMN_WIDTHS[1]) +
pad_left(suite_gc_time.toFixed(2), COLUMN_WIDTHS[2])
);
console.log('='.repeat(TOTAL_WIDTH));
}
if (PROFILE_DIR !== null) {
console.log(`\nCPU profiles written to ${PROFILE_DIR}`);
}
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
process.exit(1);
}
$.pop();
console.log('');
console.log(
pad_right('total', COLUMN_WIDTHS[0]) +
pad_left(total_time.toFixed(2), COLUMN_WIDTHS[1]) +
pad_left(total_gc_time.toFixed(2), COLUMN_WIDTHS[2])
);
================================================
FILE: benchmarking/tsconfig.json
================================================
{
"compilerOptions": {
"moduleResolution": "Bundler",
"target": "ESNext",
"module": "ESNext",
"verbatimModuleSyntax": true,
"isolatedModules": true,
"resolveJsonModule": true,
"sourceMap": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"allowJs": true,
"checkJs": true
},
"include": ["./run.js", "./utils.js", "./benchmarks"]
}
================================================
FILE: benchmarking/utils.js
================================================
import { performance, PerformanceObserver } from 'node:perf_hooks';
import fs from 'node:fs';
import path from 'node:path';
import inspector from 'node:inspector/promises';
import v8 from 'v8-natives';
// Credit to https://github.com/milomg/js-reactivity-benchmark for the logic for timing + GC tracking.
async function track(fn) {
v8.collectGarbage();
/** @type {PerformanceEntry[]} */
const entries = [];
const observer = new PerformanceObserver((list) => entries.push(...list.getEntries()));
observer.observe({ entryTypes: ['gc'] });
const start = performance.now();
fn();
const end = performance.now();
await new Promise((f) => setTimeout(f, 10));
const gc_time = entries
.filter((e) => e.startTime >= start && e.startTime < end)
.reduce((t, e) => e.duration + t, 0);
observer.disconnect();
return { time: end - start, gc_time };
}
/**
* @param {number} times
* @param {() => void} fn
*/
export async function fastest_test(times, fn) {
/** @type {Array<{ time: number, gc_time: number }>} */
const results = [];
for (let i = 0; i < times; i++) {
results.push(await track(fn));
}
return results.reduce((a, b) => (a.time < b.time ? a : b));
}
function safe(name) {
return name.replace(/[^a-z0-9._-]+/gi, '_');
}
/**
* @template T
* @param {string | null} profile_dir
* @param {string} profile_name
* @param {() => T | Promise<T>} fn
* @returns {Promise<T>}
*/
export async function with_cpu_profile(profile_dir, profile_name, fn) {
if (profile_dir === null) {
return await fn();
}
fs.mkdirSync(profile_dir, { recursive: true });
const session = new inspector.Session();
session.connect();
await session.post('Profiler.enable');
await session.post('Profiler.start');
try {
return await fn();
} finally {
const { profile } = /** @type {{ profile: object }} */ (await session.post('Profiler.stop'));
const file = path.join(profile_dir, `${safe(profile_name)}.cpuprofile`);
fs.writeFileSync(file, JSON.stringify(profile));
session.disconnect();
}
}
================================================
FILE: documentation/docs/01-introduction/01-overview.md
================================================
---
title: Overview
---
Svelte is a framework for building user interfaces on the web. It uses a compiler to turn declarative components written in HTML, CSS and JavaScript...
```svelte
<!--- file: App.svelte --->
<script>
function greet() {
alert('Welcome to Svelte!');
}
</script>
<button onclick={greet}>click me</button>
<style>
button {
font-size: 2em;
}
</style>
```
...into lean, tightly optimized JavaScript.
You can use it to build anything on the web, from standalone components to ambitious full stack apps (using Svelte's companion application framework, [SvelteKit](../kit)) and everything in between.
These pages serve as reference documentation. If you're new to Svelte, we recommend starting with the [interactive tutorial](/tutorial) and coming back here when you have questions.
You can also try Svelte online in the [playground](/playground) or, if you need a more fully-featured environment, on [StackBlitz](https://sveltekit.new).
================================================
FILE: documentation/docs/01-introduction/02-getting-started.md
================================================
---
title: Getting started
---
We recommend using [SvelteKit](../kit), which lets you [build almost anything](../kit/project-types). It's the official application framework from the Svelte team and powered by [Vite](https://vite.dev/). Create a new project with:
```sh
npx sv create myapp
cd myapp
npm install
npm run dev
```
Don't worry if you don't know Svelte yet! You can ignore all the nice features SvelteKit brings on top for now and dive into it later.
## Alternatives to SvelteKit
You can also use Svelte directly with Vite via [vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte) by running `npm create vite@latest` and selecting the `svelte` option (or, if working with an existing project, adding the plugin to your `vite.config.js` file). With this, `npm run build` will generate HTML, JS, and CSS files inside the `dist` directory. In most cases, you will probably need to [choose a routing library](/packages#routing) as well.
>[!NOTE] Vite is often used in standalone mode to build [single page apps (SPAs)](../kit/glossary#SPA), which you can also [build with SvelteKit](../kit/single-page-apps).
There are also [plugins for other bundlers](/packages#bundler-plugins), but we recommend Vite.
## Editor tooling
The Svelte team maintains a [VS Code extension](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode), and there are integrations with various other [editors](https://sveltesociety.dev/collection/editor-support-c85c080efc292a34) and tools as well.
You can also check your code from the command line using [`npx sv check`](https://svelte.dev/docs/cli/sv-check).
## Getting help
Don't be shy about asking for help in the [Discord chatroom](/chat)! You can also find answers on [Stack Overflow](https://stackoverflow.com/questions/tagged/svelte).
================================================
FILE: documentation/docs/01-introduction/03-svelte-files.md
================================================
---
title: .svelte files
---
Components are the building blocks of Svelte applications. They are written into `.svelte` files, using a superset of HTML.
All three sections — script, styles and markup — are optional.
<!-- prettier-ignore -->
```svelte
/// file: MyComponent.svelte
<script module>
// module-level logic goes here
// (you will rarely use this)
</script>
<script>
// instance-level logic goes here
</script>
<!-- markup (zero or more items) goes here -->
<style>
/* styles go here */
</style>
```
## `<script>`
A `<script>` block contains JavaScript (or TypeScript, when adding the `lang="ts"` attribute) that runs when a component instance is created. Variables declared (or imported) at the top level can be referenced in the component's markup.
In addition to normal JavaScript, you can use _runes_ to declare [component props]($props) and add reactivity to your component. Runes are covered in the next section.
<!-- TODO describe behaviour of `export` -->
## `<script module>`
A `<script>` tag with a `module` attribute runs once when the module first evaluates, rather than for each component instance. Variables declared in this block can be referenced elsewhere in the component, but not vice versa.
```svelte
<script module>
let total = 0;
</script>
<script>
total += 1;
console.log(`instantiated ${total} times`);
</script>
```
You can `export` bindings from this block, and they will become exports of the compiled module. You cannot `export default`, since the default export is the component itself.
> [!NOTE] If you are using TypeScript and import such exports from a `module` block into a `.ts` file, make sure to have your editor setup so that TypeScript knows about them. This is the case for our VS Code extension and the IntelliJ plugin, but in other cases you might need to setup our [TypeScript editor plugin](https://www.npmjs.com/package/typescript-svelte-plugin).
> [!LEGACY]
> In Svelte 4, this script tag was created using `<script context="module">`
## `<style>`
CSS inside a `<style>` block will be scoped to that component.
```svelte
<style>
p {
/* this will only affect <p> elements in this component */
color: burlywood;
}
</style>
```
For more information, head to the section on [styling](scoped-styles).
================================================
FILE: documentation/docs/01-introduction/04-svelte-js-files.md
================================================
---
title: .svelte.js and .svelte.ts files
---
Besides `.svelte` files, Svelte also operates on `.svelte.js` and `.svelte.ts` files.
These behave like any other `.js` or `.ts` module, except that you can use runes. This is useful for creating reusable reactive logic, or sharing reactive state across your app (though note that you [cannot export reassigned state]($state#Passing-state-across-modules)).
> [!LEGACY]
> This is a concept that didn't exist prior to Svelte 5
================================================
FILE: documentation/docs/01-introduction/index.md
================================================
---
title: Introduction
---
================================================
FILE: documentation/docs/02-runes/01-what-are-runes.md
================================================
---
title: What are runes?
---
> [!NOTE] **rune** /ruːn/ _noun_
>
> A letter or mark used as a mystical or magic symbol.
Runes are symbols that you use in `.svelte` and `.svelte.js`/`.svelte.ts` files to control the Svelte compiler. If you think of Svelte as a language, runes are part of the syntax — they are _keywords_.
Runes have a `$` prefix and look like functions:
```js
let message = $state('hello');
```
They differ from normal JavaScript functions in important ways, however:
- You don't need to import them — they are part of the language
- They're not values — you can't assign them to a variable or pass them as arguments to a function
- Just like JavaScript keywords, they are only valid in certain positions (the compiler will help you if you put them in the wrong place)
> [!LEGACY]
> Runes didn't exist prior to Svelte 5.
================================================
FILE: documentation/docs/02-runes/02-$state.md
================================================
---
title: $state
tags: rune-state
---
The `$state` rune allows you to create _reactive state_, which means that your UI _reacts_ when it changes.
```svelte
<script>
let count = $state(0);
</script>
<button onclick={() => count++}>
clicks: {count}
</button>
```
Unlike other frameworks you may have encountered, there is no API for interacting with state — `count` is just a number, rather than an object or a function, and you can update it like you would update any other variable.
### Deep state
If `$state` is used with an array or a simple object, the result is a deeply reactive _state proxy_. [Proxies](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) allow Svelte to run code when you read or write properties, including via methods like `array.push(...)`, triggering granular updates.
State is proxified recursively until Svelte finds something other than an array or simple object (like a class or an object created with `Object.create`). In a case like this...
```js
let todos = $state([
{
done: false,
text: 'add more todos'
}
]);
```
...modifying an individual todo's property will trigger updates to anything in your UI that depends on that specific property:
```js
let todos = [{ done: false, text: 'add more todos' }];
// ---cut---
todos[0].done = !todos[0].done;
```
If you push a new object to the array, it will also be proxified:
```js
let todos = [{ done: false, text: 'add more todos' }];
// ---cut---
todos.push({
done: false,
text: 'eat lunch'
});
```
> [!NOTE] When you update properties of proxies, the original object is _not_ mutated. If you need to use your own proxy handlers in a state proxy, [you should wrap the object _after_ wrapping it in `$state`](https://svelte.dev/playground/hello-world?version=latest#H4sIAAAAAAAACpWR3WoDIRCFX2UqhWyIJL3erAulL9C7XnQLMe5ksbUqOpsfln33YuyGFNJC8UKdc2bOhw7Myk9kJXsJ0nttO9jcR5KEG9AWJDwHdzwxznbaYGTl68Do5JM_FRifuh-9X8Y9Gkq1rYx4q66cJbQUWcmqqIL2VDe2IYMEbvuOikBADi-GJDSkXG-phId0G-frye2DO2psQYDFQ0Ys8gQO350dUkEydEg82T0GOs0nsSG9g2IqgxACZueo2ZUlpdvoDC6N64qsg1QKY8T2bpZp8gpIfbCQ85Zn50Ud82HkeY83uDjspenxv3jXcSDyjPWf9L1vJf0GH666J-jLu1ery4dV257IWXBWGa0-xFDMQdTTn2ScxWKsn86ROsLwQxqrVR5QM84Ij8TKFD2-cUZSm4O2LSt30kQcvwCgCmfZnAIAAA==).
Note that if you destructure a reactive value, the references are not reactive — as in normal JavaScript, they are evaluated at the point of destructuring:
```js
let todos = [{ done: false, text: 'add more todos' }];
// ---cut---
let { done, text } = todos[0];
// this will not affect the value of `done`
todos[0].done = !todos[0].done;
```
### Classes
Class instances are not proxied. Instead, you can use `$state` in class fields (whether public or private), or as the first assignment to a property immediately inside the `constructor`:
```js
// @errors: 7006 2554
class Todo {
done = $state(false);
constructor(text) {
this.text = $state(text);
}
reset() {
this.text = '';
this.done = false;
}
}
```
> [!NOTE] The compiler transforms `done` and `text` into `get`/`set` methods on the class prototype referencing private fields. This means the properties are not enumerable.
When calling methods in JavaScript, the value of [`this`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) matters. This won't work, because `this` inside the `reset` method will be the `<button>` rather than the `Todo`:
```svelte
<button onclick={todo.reset}>
reset
</button>
```
You can either use an inline function...
```svelte
<button onclick=+++{() => todo.reset()}>+++
reset
</button>
```
...or use an arrow function in the class definition:
```js
// @errors: 7006 2554
class Todo {
done = $state(false);
constructor(text) {
this.text = $state(text);
}
+++reset = () => {+++
this.text = '';
this.done = false;
}
}
```
### Built-in classes
Svelte provides reactive implementations of built-in classes like `Set`, `Map`, `Date` and `URL` that can be imported from [`svelte/reactivity`](svelte-reactivity).
## `$state.raw`
In cases where you don't want objects and arrays to be deeply reactive you can use `$state.raw`.
State declared with `$state.raw` cannot be mutated; it can only be _reassigned_. In other words, rather than assigning to a property of an object, or using an array method like `push`, replace the object or array altogether if you'd like to update it:
```js
let person = $state.raw({
name: 'Heraclitus',
age: 49
});
// this will have no effect
person.age += 1;
// this will work, because we're creating a new person
person = {
name: 'Heraclitus',
age: 50
};
```
This can improve performance with large arrays and objects that you weren't planning to mutate anyway, since it avoids the cost of making them reactive. Note that raw state can _contain_ reactive state (for example, a raw array of reactive objects).
As with `$state`, you can declare class fields using `$state.raw`.
## `$state.snapshot`
To take a static snapshot of a deeply reactive `$state` proxy, use `$state.snapshot`:
```svelte
<script>
let counter = $state({ count: 0 });
function onclick() {
// Will log `{ count: ... }` rather than `Proxy { ... }`
console.log($state.snapshot(counter));
}
</script>
```
This is handy when you want to pass some state to an external library or API that doesn't expect a proxy, such as `structuredClone`.
## `$state.eager`
When state changes, it may not be reflected in the UI immediately if it is used by an `await` expression, because [updates are synchronized](await-expressions#Synchronized-updates).
In some cases, you may want to update the UI as soon as the state changes. For example, you might want to update a navigation bar when the user clicks on a link, so that they get visual feedback while waiting for the new page to load. To do this, use `$state.eager(value)`:
```svelte
<nav>
<a href="/" aria-current={$state.eager(pathname) === '/' ? 'page' : null}>home</a>
<a href="/about" aria-current={$state.eager(pathname) === '/about' ? 'page' : null}>about</a>
</nav>
```
Use this feature sparingly, and only to provide feedback in response to user action — in general, allowing Svelte to coordinate updates will provide a better user experience.
## Passing state into functions
JavaScript is a _pass-by-value_ language — when you call a function, the arguments are the _values_ rather than the _variables_. In other words:
```js
/// file: index.js
// @filename: index.js
// ---cut---
/**
* @param {number} a
* @param {number} b
*/
function add(a, b) {
return a + b;
}
let a = 1;
let b = 2;
let total = add(a, b);
console.log(total); // 3
a = 3;
b = 4;
console.log(total); // still 3!
```
If `add` wanted to have access to the _current_ values of `a` and `b`, and to return the current `total` value, you would need to use functions instead:
```js
/// file: index.js
// @filename: index.js
// ---cut---
/**
* @param {() => number} getA
* @param {() => number} getB
*/
function add(+++getA, getB+++) {
return +++() => getA() + getB()+++;
}
let a = 1;
let b = 2;
let total = add+++(() => a, () => b)+++;
console.log(+++total()+++); // 3
a = 3;
b = 4;
console.log(+++total()+++); // 7
```
State in Svelte is no different — when you reference something declared with the `$state` rune...
```js
let a = +++$state(1)+++;
let b = +++$state(2)+++;
```
...you're accessing its _current value_.
Note that 'functions' is broad — it encompasses properties of proxies and [`get`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get)/[`set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set) properties...
```js
/// file: index.js
// @filename: index.js
// ---cut---
/**
* @param {{ a: number, b: number }} input
*/
function add(input) {
return {
get value() {
return input.a + input.b;
}
};
}
let input = $state({ a: 1, b: 2 });
let total = add(input);
console.log(total.value); // 3
input.a = 3;
input.b = 4;
console.log(total.value); // 7
```
...though if you find yourself writing code like that, consider using [classes](#Classes) instead.
## Passing state across modules
You can declare state in `.svelte.js` and `.svelte.ts` files, but you can only _export_ that state if it's not directly reassigned. In other words you can't do this:
```js
/// file: state.svelte.js
export let count = $state(0);
export function increment() {
count += 1;
}
```
That's because every reference to `count` is transformed by the Svelte compiler — the code above is roughly equivalent to this:
```js
/// file: state.svelte.js (compiler output)
// @filename: index.ts
interface Signal<T> {
value: T;
}
interface Svelte {
state<T>(value?: T): Signal<T>;
get<T>(source: Signal<T>): T;
set<T>(source: Signal<T>, value: T): void;
}
declare const $: Svelte;
// ---cut---
export let count = $.state(0);
export function increment() {
$.set(count, $.get(count) + 1);
}
```
> [!NOTE] You can see the code Svelte generates by clicking the 'JS Output' tab in the [playground](/playground).
Since the compiler only operates on one file at a time, if another file imports `count` Svelte doesn't know that it needs to wrap each reference in `$.get` and `$.set`:
```js
// @filename: state.svelte.js
export let count = 0;
// @filename: index.js
// ---cut---
import { count } from './state.svelte.js';
console.log(typeof count); // 'object', not 'number'
```
This leaves you with two options for sharing state between modules — either don't reassign it...
```js
// This is allowed — since we're updating
// `counter.count` rather than `counter`,
// Svelte doesn't wrap it in `$.state`
export const counter = $state({
count: 0
});
export function increment() {
counter.count += 1;
}
```
...or don't directly export it:
```js
let count = $state(0);
export function getCount() {
return count;
}
export function increment() {
count += 1;
}
```
================================================
FILE: documentation/docs/02-runes/03-$derived.md
================================================
---
title: $derived
tags: rune-derived
---
Derived state is declared with the `$derived` rune:
```svelte
<script>
let count = $state(0);
let doubled = $derived(count * 2);
</script>
<button onclick={() => count++}>
{doubled}
</button>
<p>{count} doubled is {doubled}</p>
```
The expression inside `$derived(...)` should be free of side-effects. Svelte will disallow state changes (e.g. `count++`) inside derived expressions.
As with `$state`, you can mark class fields as `$derived`.
> [!NOTE] Code in Svelte components is only executed once at creation. Without the `$derived` rune, `doubled` would maintain its original value even when `count` changes.
## `$derived.by`
Sometimes you need to create complex derivations that don't fit inside a short expression. In these cases, you can use `$derived.by` which accepts a function as its argument.
```svelte
<script>
let numbers = $state([1, 2, 3]);
let total = $derived.by(() => {
let total = 0;
for (const n of numbers) {
total += n;
}
return total;
});
</script>
<button onclick={() => numbers.push(numbers.length + 1)}>
{numbers.join(' + ')} = {total}
</button>
```
In essence, `$derived(expression)` is equivalent to `$derived.by(() => expression)`.
## Understanding dependencies
Anything read synchronously inside the `$derived` expression (or `$derived.by` function body) is considered a _dependency_ of the derived state. When the state changes, the derived will be marked as _dirty_ and recalculated when it is next read.
In addition, if an expression contains an [`await`](await-expressions), Svelte transforms it such that any state _after_ the `await` is also tracked — in other words, in a case like this...
```js
let a = Promise.resolve(1);
let b = 2;
// ---cut---
let total = $derived(await a + b);
```
...both `a` and `b` are tracked, even though `b` is only read once `a` has resolved, after the initial execution. (This does not apply to `await` in functions that are called by the expression, only the expression itself.)
To exempt a piece of state from being treated as a dependency, use [`untrack`](svelte#untrack).
## Overriding derived values
Derived expressions are recalculated when their dependencies change, but you can temporarily override their values by reassigning them (unless they are declared with `const`). This can be useful for things like _optimistic UI_, where a value is derived from the 'source of truth' (such as data from your server) but you'd like to show immediate feedback to the user:
```svelte
<script>
let { post, like } = $props();
let likes = $derived(post.likes);
async function onclick() {
// increment the `likes` count immediately...
likes += 1;
// and tell the server, which will eventually update `post`
try {
await like();
} catch {
// failed! roll back the change
likes -= 1;
}
}
</script>
<button {onclick}>🧡 {likes}</button>
```
> [!NOTE] Prior to Svelte 5.25, deriveds were read-only.
## Deriveds and reactivity
Unlike `$state`, which converts objects and arrays to [deeply reactive proxies]($state#Deep-state), `$derived` values are left as-is. For example, [in a case like this](/playground/untitled#H4sIAAAAAAAAE4VU22rjMBD9lUHd3aaQi9PdstS1A3t5XvpQ2Ic4D7I1iUUV2UjjNMX431eS7TRdSosxgjMzZ45mjt0yzffIYibvy0ojFJWqDKCQVBk2ZVup0LJ43TJ6rn2aBxw-FP2o67k9oCKP5dziW3hRaUJNjoYltjCyplWmM1JIIAn3FlL4ZIkTTtYez6jtj4w8WwyXv9GiIXiQxLVs9pfTMR7EuoSLIuLFbX7Z4930bZo_nBrD1bs834tlfvsBz9_SyX6PZXu9XaL4gOWn4sXjeyzftv4ZWfyxubpzxzg6LfD4MrooxELEosKCUPigQCMPKCZh0OtQE1iSxcsmdHuBvCiHZXALLXiN08EL3RRkaJ_kDVGle0HcSD5TPEeVtj67O4Nrg9aiSNtBY5oODJkrL5QsHtN2cgXp6nSJMWzpWWGasdlsGEMbzi5jPr5KFr0Ep7pdeM2-TCelCddIhDxAobi1jqF3cMaC1RKp64bAW9iFAmXGIHfd4wNXDabtOLN53w8W53VvJoZLh7xk4Rr3CoL-UNoLhWHrT1JQGcM17u96oES5K-kc2XOzkzqGCKL5De79OUTyyrg1zgwXsrEx3ESfx4Bz0M5UjVMHB24mw9SuXtXFoN13fYKOM1tyUT3FbvbWmSWCZX2Er-41u5xPoml45svRahl9Wb9aasbINJixDZwcPTbyTLZSUsAvrg_cPuCR7s782_WU8343Y72Qtlb8OYatwuOQvuN13M_hJKNfxann1v1U_B1KZ_D_mzhzhz24fw85CSz2irtN9w9HshBK7AQAAA==)...
```js
// @errors: 7005
let items = $state([ /*...*/ ]);
let index = $state(0);
let selected = $derived(items[index]);
```
...you can change (or `bind:` to) properties of `selected` and it will affect the underlying `items` array. If `items` was _not_ deeply reactive, mutating `selected` would have no effect.
## Destructuring
If you use destructuring with a `$derived` declaration, the resulting variables will all be reactive — this...
```js
function stuff() { return { a: 1, b: 2, c: 3 } }
// ---cut---
let { a, b, c } = $derived(stuff());
```
...is roughly equivalent to this:
```js
function stuff() { return { a: 1, b: 2, c: 3 } }
// ---cut---
let _stuff = $derived(stuff());
let a = $derived(_stuff.a);
let b = $derived(_stuff.b);
let c = $derived(_stuff.c);
```
## Update propagation
Svelte uses something called _push-pull reactivity_ — when state is updated, everything that depends on the state (whether directly or indirectly) is immediately notified of the change (the 'push'), but derived values are not re-evaluated until they are actually read (the 'pull').
If the new value of a derived is referentially identical to its previous value, downstream updates will be skipped. In other words, Svelte will only update the text inside the button when `large` changes, not when `count` changes, even though `large` depends on `count`:
```svelte
<script>
let count = $state(0);
let large = $derived(count > 10);
</script>
<button onclick={() => count++}>
{large}
</button>
```
================================================
FILE: documentation/docs/02-runes/04-$effect.md
================================================
---
title: $effect
tags: rune-effect
---
Effects are functions that run when state updates, and can be used for things like calling third-party libraries, drawing on `<canvas>` elements, or making network requests. They only run in the browser, not during server-side rendering.
Generally speaking, you should _not_ update state inside effects, as it will make code more convoluted and will often lead to never-ending update cycles. If you find yourself doing so, see [when not to use `$effect`](#When-not-to-use-$effect) to learn about alternative approaches.
You can create an effect with the `$effect` rune ([demo](/playground/untitled#H4sIAAAAAAAAE31S246bMBD9lZF3pSRSAqTVvrCAVPUP2sdSKY4ZwJJjkD0hSVH-vbINuWxXfQH5zMyZc2ZmZLVUaFn6a2R06ZGlHmBrpvnBvb71fWQHVOSwPbf4GS46TajJspRlVhjZU1HqkhQSWPkHIYdXS5xw-Zas3ueI6FRn7qHFS11_xSRZhIxbFtcDtw7SJb1iXaOg5XIFeQGjzyPRaevYNOGZIJ8qogbpe8CWiy_VzEpTXiQUcvPDkSVrSNZz1UlW1N5eLcqmpdXUvaQ4BmqlhZNUCgxuzFHDqUWNAxrYeUM76AzsnOsdiJbrBp_71lKpn3RRbii-4P3f-IMsRxS-wcDV_bL4PmSdBa2wl7pKnbp8DMgVvJm8ZNskKRkEM_OzyOKQFkgqOYBQ3Nq89Ns0nbIl81vMFN-jKoLMTOr-SOBOJS-Z8f5Y6D1wdcR8dFqvEBdetK-PHwj-z-cH8oHPY54wRJ8Ys7iSQ3Bg3VA9azQbmC9k35kKzYa6PoVtfwbbKVnBixBiGn7Pq0rqJoUtHiCZwAM3jdTPWCVtr_glhVrhecIa3vuksJ_b7TqFs4DPyriSjd5IwoNNQaAmNI-ESfR2p8zimzvN1swdCkvJHPH6-_oX8o1SgcIDAAA=)):
```svelte
<script>
let size = $state(50);
let color = $state('#ff3e00');
let canvas;
$effect(() => {
const context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
// this will re-run whenever `color` or `size` change
context.fillStyle = color;
context.fillRect(0, 0, size, size);
});
</script>
<canvas bind:this={canvas} width="100" height="100"></canvas>
```
When Svelte runs an effect function, it tracks which pieces of state (and derived state) are accessed (unless accessed inside [`untrack`](svelte#untrack)), and re-runs the function when that state later changes.
> [!NOTE] If you're having difficulty understanding why your `$effect` is rerunning or is not running see [understanding dependencies](#Understanding-dependencies). Effects are triggered differently than the `$:` blocks you may be used to if coming from Svelte 4.
### Understanding lifecycle
Your effects run after the component has been mounted to the DOM, and in a [microtask](https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API/Microtask_guide) after state changes. Re-runs are batched (i.e. changing `color` and `size` in the same moment won't cause two separate runs), and happen after any DOM updates have been applied.
You can use `$effect` anywhere, not just at the top level of a component, as long as it is called while a parent effect is running.
> [!NOTE] Svelte uses effects internally to represent logic and expressions in your template — this is how `<h1>hello {name}!</h1>` updates when `name` changes.
An effect can return a _teardown function_ which will run immediately before the effect re-runs:
<!-- codeblock:start {"title":"Effect teardown"} -->
```svelte
<!--- file: App.svelte --->
<script>
let count = $state(0);
let milliseconds = $state(1000);
$effect(() => {
// This will be recreated whenever `milliseconds` changes
const interval = setInterval(() => {
count += 1;
}, milliseconds);
return () => {
// if a teardown function is provided, it will run
// a) immediately before the effect re-runs
// b) when the component is destroyed
clearInterval(interval);
};
});
</script>
<h1>{count}</h1>
<button onclick={() => (milliseconds *= 2)}>slower</button>
<button onclick={() => (milliseconds /= 2)}>faster</button>
```
<!-- codeblock:end -->
Teardown functions also run when the effect is destroyed, which happens when its parent is destroyed (for example, a component is unmounted) or the parent effect re-runs.
### Understanding dependencies
`$effect` automatically picks up any reactive values (`$state`, `$derived`, `$props`) that are _synchronously_ read inside its function body (including indirectly, via function calls) and registers them as dependencies. When those dependencies change, the `$effect` schedules a re-run.
If `$state` and `$derived` are used directly inside the `$effect` (for example, during creation of a [reactive class](https://svelte.dev/docs/svelte/$state#Classes)), those values will _not_ be treated as dependencies.
Values that are read _asynchronously_ — after an `await` or inside a `setTimeout`, for example — will not be tracked. Here, the canvas will be repainted when `color` changes, but not when `size` changes ([demo](/playground/untitled#H4sIAAAAAAAAE31T246bMBD9lZF3pWSlBEirfaEQqdo_2PatVIpjBrDkGGQPJGnEv1e2IZfVal-wfHzmzJyZ4cIqqdCy9M-F0blDlnqArZjmB3f72XWRHVCRw_bc4me4aDWhJstSlllhZEfbQhekkMDKfwg5PFvihMvX5OXH_CJa1Zrb0-Kpqr5jkiwC48rieuDWQbqgZ6wqFLRcvkC-hYvnkWi1dWqa8ESQTxFRjfQWsOXiWzmr0sSLhEJu3p1YsoJkNUcdZUnN9dagrBu6FVRQHAM10sJRKgUG16bXcGxQ44AGdt7SDkTDdY02iqLHnJVU6hedlWuIp94JW6Tf8oBt_8GdTxlF0b4n0C35ZLBzXb3mmYn3ae6cOW74zj0YVzDNYXRHFt9mprNgHfZSl6mzml8CMoLvTV6wTZIUDEJv5us2iwMtiJRyAKG4tXnhl8O0yhbML0Wm-B7VNlSSSd31BG7z8oIZZ6dgIffAVY_5xdU9Qrz1Bnx8fCfwtZ7v8Qc9j3nB8PqgmMWlHIID6-bkVaPZwDySfWtKNGtquxQ23Qlsq2QJT0KIqb8dL0up6xQ2eIBkAg_c1FI_YqW0neLnFCqFpwmreedJYT7XX8FVOBfwWRhXstZrSXiwKQjUhOZeMIleb5JZfHWn2Yq5pWEpmR7Hv-N_wEqT8hEEAAA=)):
```ts
// @filename: index.ts
declare let canvas: {
width: number;
height: number;
getContext(type: '2d', options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D;
};
declare let color: string;
declare let size: number;
// ---cut---
$effect(() => {
const context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
// this will re-run whenever `color` changes...
context.fillStyle = color;
setTimeout(() => {
// ...but not when `size` changes
context.fillRect(0, 0, size, size);
}, 0);
});
```
An effect only reruns when the object it reads changes, not when a property inside it changes. (If you want to observe changes _inside_ an object at dev time, you can use [`$inspect`]($inspect).)
```svelte
<script>
let state = $state({ value: 0 });
let derived = $derived({ value: state.value * 2 });
// this will run once, because `state` is never reassigned (only mutated)
$effect(() => {
state;
});
// this will run whenever `state.value` changes...
$effect(() => {
state.value;
});
// ...and so will this, because `derived` is a new object each time
$effect(() => {
derived;
});
</script>
<button onclick={() => (state.value += 1)}>
{state.value}
</button>
<p>{state.value} doubled is {derived.value}</p>
```
An effect only depends on the values that it read the last time it ran. This has interesting implications for effects that have conditional code.
For instance, if `condition` is `true` in the code snippet below, the code inside the `if` block will run and `color` will be evaluated. This means that changes to either `condition` or `color` [will cause the effect to re-run](/playground/untitled#H4sIAAAAAAAAE21RQW6DMBD8ytaNBJHaJFLViwNIVZ8RcnBgXVk1xsILTYT4e20TQg89IOPZ2fHM7siMaJBx9tmaWpFqjQNlAKXEihx7YVJpdIyfRkY3G4gB8Pi97cPanRtQU8AuwuF_eNUaQuPlOMtc1SlLRWlKUo1tOwJflUikQHZtA0klzCDc64Imx0ANn8bInV1CDhtHgjClrsftcSXotluLybOUb3g4JJHhOZs5WZpuIS9gjNqkJKQP5e2ClrR4SMdZ13E4xZ8zTPOTJU2A2uE_PQ9COCI926_hTVarIU4hu_REPlBrKq2q73ycrf1N-vS4TMUsulaVg3EtR8H9rFgsg8uUsT1B2F9eshigZHBRpuaD0D3mY8Qm2BfB5N2YyRzdNEYVDy0Ja-WsFjcOUuP1HvFLWA6H3XuHTUSmmDV2--0TXonxsKbp7G9C6R__NONS-MFNvxj_d6mBAgAA).
Conversely, if `condition` is `false`, `color` will not be evaluated, and the effect will _only_ re-run again when `condition` changes.
```ts
// @filename: ambient.d.ts
declare module 'canvas-confetti' {
interface ConfettiOptions {
colors: string[];
}
function confetti(opts?: ConfettiOptions): void;
export default confetti;
}
// @filename: index.js
// ---cut---
import confetti from 'canvas-confetti';
let condition = $state(true);
let color = $state('#ff3e00');
$effect(() => {
if (condition) {
confetti({ colors: [color] });
} else {
confetti();
}
});
```
## `$effect.pre`
In rare cases, you may need to run code _before_ the DOM updates. For this we can use the `$effect.pre` rune:
```svelte
<script>
import { tick } from 'svelte';
let div = $state();
let messages = $state([]);
// ...
$effect.pre(() => {
if (!div) return; // not yet mounted
// reference `messages` array length so that this code re-runs whenever it changes
messages.length;
// autoscroll when new messages are added
if (div.offsetHeight + div.scrollTop > div.scrollHeight - 20) {
tick().then(() => {
div.scrollTo(0, div.scrollHeight);
});
}
});
</script>
<div bind:this={div}>
{#each messages as message}
<p>{message}</p>
{/each}
</div>
```
Apart from the timing, `$effect.pre` works exactly like `$effect`.
## `$effect.tracking`
The `$effect.tracking` rune is an advanced feature that tells you whether or not the code is running inside a tracking context, such as an effect or inside your template:
<!-- codeblock:start {"title":"$effect.tracking()"} -->
```svelte
<!--- file: App.svelte --->
<script>
console.log('in component setup:', $effect.tracking()); // false
$effect(() => {
console.log('in effect:', $effect.tracking()); // true
});
</script>
<p>in template: {$effect.tracking()}</p> <!-- true -->
```
<!-- codeblock:end -->
It is used to implement abstractions like [`createSubscriber`](/docs/svelte/svelte-reactivity#createSubscriber), which will create listeners to update reactive values but _only_ if those values are being tracked (rather than, for example, read inside an event handler).
## `$effect.pending`
When using [`await`](await-expressions) in components, the `$effect.pending()` rune tells you how many promises are pending in the current [boundary](svelte-boundary), not including child boundaries:
<!-- codeblock:start {"title":"$effect.pending"} -->
```svelte
<!--- file: App.svelte --->
<script>
let a = $state(1);
let b = $state(2);
async function add(a, b) {
await new Promise((f) => setTimeout(f, 500)); // artificial delay
return a + b;
}
</script>
<button onclick={() => a++}>a++</button>
<button onclick={() => b++}>b++</button>
<p>{a} + {b} = {await add(a, b)}</p>
{#if $effect.pending()}
<p>pending promises: {$effect.pending()}</p>
{/if}
```
<!-- codeblock:end -->
## `$effect.root`
The `$effect.root` rune is an advanced feature that creates a non-tracked scope that doesn't auto-cleanup. This is useful for nested effects that you want to manually control. This rune also allows for the creation of effects outside of the component initialisation phase.
```js
const destroy = $effect.root(() => {
$effect(() => {
// setup
});
return () => {
// cleanup
};
});
// later...
destroy();
```
## When not to use `$effect`
In general, `$effect` is best considered something of an escape hatch — useful for things like analytics and direct DOM manipulation — rather than a tool you should use frequently. In particular, avoid using it to synchronise state. Instead of this...
```svelte
<script>
let count = $state(0);
let doubled = $state();
// don't do this!
$effect(() => {
doubled = count * 2;
});
</script>
```
...do this:
```svelte
<script>
let count = $state(0);
let doubled = $derived(count * 2);
</script>
```
> [!NOTE] For things that are more complicated than a simple expression like `count * 2`, you can also use `$derived.by`.
If you're using an effect because you want to be able to reassign the derived value (to build an optimistic UI, for example) note that [deriveds can be directly overridden]($derived#Overriding-derived-values) as of Svelte 5.25.
You might be tempted to do something convoluted with effects to link one value to another. The following example shows two inputs for "money spent" and "money left" that are connected to each other. If you update one, the other should update accordingly. Instead of using effects for this...
<!-- codeblock:start {"title":"Setting state in effects (don't do this!)"} -->
```svelte
<!--- file: App.svelte --->
<script>
const total = 100;
let spent = $state(0);
let left = $state(total);
$effect(() => {
left = total - spent;
});
$effect(() => {
spent = total - left;
});
</script>
<label>
<input type="range" bind:value={spent} max={total} />
{spent}/{total} spent
</label>
<label>
<input type="range" bind:value={left} max={total} />
{left}/{total} left
</label>
<style>
label {
display: flex;
gap: 0.5em;
}
</style>
```
<!-- codeblock:end -->
...use `oninput` callbacks or — better still — [function bindings](bind#Function-bindings) where possible:
<!-- codeblock:start {"title":"Setting state with function bindings"} -->
```svelte
<!--- file: App.svelte --->
<script>
const total = 100;
let spent = $state(0);
let left = $derived(total - spent);
+++ function updateLeft(left) {
spent = total - left;
}+++
</script>
<label>
<input type="range" bind:value={spent} max={total} />
{spent}/{total} spent
</label>
<label>
<input type="range" +++bind:value={() => left, updateLeft}+++ max={total} />
{left}/{total} left
</label>
<style>
label {
display: flex;
gap: 0.5em;
}
</style>
```
<!-- codeblock:end -->
If you absolutely have to update `$state` within an effect and run into an infinite loop because you read and write to the same `$state`, use [untrack](svelte#untrack).
================================================
FILE: documentation/docs/02-runes/05-$props.md
================================================
---
title: $props
tags: rune-props
---
The inputs to a component are referred to as _props_, which is short for _properties_. You pass props to components just like you pass attributes to elements:
```svelte
<!--- file: App.svelte --->
<script>
import MyComponent from './MyComponent.svelte';
</script>
<MyComponent adjective="cool" />
```
On the other side, inside `MyComponent.svelte`, we can receive props with the `$props` rune...
```svelte
<!--- file: MyComponent.svelte --->
<script>
let props = $props();
</script>
<p>this component is {props.adjective}</p>
```
...though more commonly, you'll [_destructure_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) your props:
```svelte
<!--- file: MyComponent.svelte --->
<script>
let +++{ adjective }+++ = $props();
</script>
<p>this component is {+++adjective+++}</p>
```
## Fallback values
Destructuring allows us to declare fallback values, which are used if the parent component does not set a given prop (or the value is `undefined`):
```js
let { adjective = 'happy' } = $props();
```
> [!NOTE] Fallback values are not turned into reactive state proxies (see [Updating props](#Updating-props) for more info)
## Renaming props
We can also use the destructuring assignment to rename props, which is necessary if they're invalid identifiers, or a JavaScript keyword like `super`:
```js
let { super: trouper = 'lights are gonna find me' } = $props();
```
## Rest props
Finally, we can use a _rest property_ to get, well, the rest of the props:
```js
let { a, b, c, ...others } = $props();
```
## Updating props
References to a prop inside a component update when the prop itself updates — when `count` changes in `App.svelte`, it will also change inside `Child.svelte`. But the child component is able to temporarily override the prop value, which can be useful for unsaved ephemeral state:
<!-- codeblock:start {"title":"Temporarily updating props","selected":"Child.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Child from './Child.svelte';
let count = $state(0);
</script>
<button onclick={() => (count += 1)}>
clicks (parent): {count}
</button>
<Child {count} />
```
```svelte
<!--- file: Child.svelte --->
<script>
let { count } = $props();
</script>
<button onclick={() => (count += 1)}>
clicks (child): {count}
</button>
```
<!-- codeblock:end -->
While you can temporarily _reassign_ props, you should not _mutate_ props unless they are [bindable]($bindable).
If the prop is a regular object, the mutation will have no effect:
<!-- codeblock:start {"title":"Non-reactive props","selected":"Child.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Child from './Child.svelte';
</script>
<Child object={{ count: 0 }} />
```
```svelte
<!--- file: Child.svelte --->
<script>
let { object } = $props();
</script>
<button onclick={() => {
// has no effect
object.count += 1
}}>
clicks: {object.count}
</button>
```
<!-- codeblock:end -->
If the prop is a reactive state proxy, however, then mutations _will_ have an effect but you will see an [`ownership_invalid_mutation`](runtime-warnings#Client-warnings-ownership_invalid_mutation) warning, because the component is mutating state that does not 'belong' to it:
<!-- codeblock:start {"title":"Invalid mutation","selected":"Child.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Child from './Child.svelte';
let object = $state({count: 0});
</script>
<Child {object} />
```
```svelte
<!--- file: Child.svelte --->
<script>
let { object } = $props();
</script>
<button onclick={() => {
// will cause the count below to update,
// but with a warning. Don't mutate
// objects you don't own!
object.count += 1
}}>
clicks: {object.count}
</button>
```
<!-- codeblock:end -->
The fallback value of a prop not declared with `$bindable` is left untouched — it is not turned into a reactive state proxy — meaning mutations will not cause updates:
<!-- codeblock:start {"title":"Non-reactive fallback props","selected":"Child.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Child from './Child.svelte';
</script>
<Child />
```
```svelte
<!--- file: Child.svelte --->
<script>
let { object = { count: 0 } } = $props();
</script>
<button onclick={() => {
// has no effect if the fallback value is used
object.count += 1
}}>
clicks: {object.count}
</button>
```
<!-- codeblock:end -->
In summary: don't mutate props. Either use callback props to communicate changes, or — if parent and child should share the same object — use the [`$bindable`]($bindable) rune.
## Type safety
You can add type safety to your components by annotating your props, as you would with any other variable declaration. In TypeScript that might look like this...
```svelte
<script lang="ts">
let { adjective }: { adjective: string } = $props();
</script>
```
...while in JSDoc you can do this:
```svelte
<script>
/** @type {{ adjective: string }} */
let { adjective } = $props();
</script>
```
You can, of course, separate the type declaration from the annotation:
```svelte
<script lang="ts">
interface Props {
adjective: string;
}
let { adjective }: Props = $props();
</script>
```
> [!NOTE] Interfaces for native DOM elements are provided in the `svelte/elements` module (see [Typing wrapper components](typescript#Typing-wrapper-components))
If your component exposes [snippet](snippet) props like `children`, these should be typed using the `Snippet` interface imported from `'svelte'` — see [Typing snippets](snippet#Typing-snippets) for examples.
Adding types is recommended, as it ensures that people using your component can easily discover which props they should provide.
## `$props.id()`
This rune, added in version 5.20.0, generates an ID that is unique to the current component instance. When hydrating a server-rendered component, the value will be consistent between server and client.
This is useful for linking elements via attributes like `for` and `aria-labelledby`.
```svelte
<script>
const uid = $props.id();
</script>
<form>
<label for="{uid}-firstname">First Name: </label>
<input id="{uid}-firstname" type="text" />
<label for="{uid}-lastname">Last Name: </label>
<input id="{uid}-lastname" type="text" />
</form>
```
================================================
FILE: documentation/docs/02-runes/06-$bindable.md
================================================
---
title: $bindable
---
Ordinarily, props go one way, from parent to child. This makes it easy to understand how data flows around your app.
In Svelte, component props can be _bound_, which means that data can also flow _up_ from child to parent. This isn't something you should do often — overuse can make your data flow unpredictable and your components harder to maintain — but it can simplify your code if used sparingly and carefully.
It also means that a state proxy can be _mutated_ in the child.
> [!NOTE] Mutation is also possible with normal props, but is strongly discouraged — Svelte will warn you if it detects that a component is mutating state it does not 'own'.
To mark a prop as bindable, we use the `$bindable` rune:
<!-- prettier-ignore -->
```svelte
/// file: FancyInput.svelte
<script>
let { value = $bindable(), ...props } = $props();
</script>
<input bind:value={value} {...props} />
<style>
input {
font-family: 'Comic Sans MS';
color: deeppink;
}
</style>
```
Now, a component that uses `<FancyInput>` can add the [`bind:`](bind) directive ([demo](/playground/untitled#H4sIAAAAAAAAE3WQwWrDMBBEf2URBSfg2nfFMZRCoYeecqx6UJx1IyqvhLUONcb_XqSkTUOSk1az7DBvJtEai0HI90nw6FHIJIhckO7i78n7IhzQctS2OuAtvXHESByEFFVoeuO5VqTYdN71DC-amvGV_MDQ9q6DrCjP0skkWymKJxYZOgxBfyKs4SGwZlxke7TWZcuVoqo8-1P1z3lraCcP2g64nk4GM5S1osrXf0JV-lrkgvGbheR-wDm_g30V8JL-1vpOCZFogpQsEsWcemtxscyhKArfOx9gjps0Lq4hzRVfemaYfu-PoIqqwKPFY_XpaIqj4tYRP7a6M3aUkD27zjSw0RTgbZN6Z8WNs66XsEP03tBXUueUJFlelvYx_wCuI3leNwIAAA==)):
<!-- prettier-ignore -->
```svelte
/// file: App.svelte
<script>
import FancyInput from './FancyInput.svelte';
let message = $state('hello');
</script>
<FancyInput bind:value={message} />
<p>{message}</p>
```
The parent component doesn't _have_ to use `bind:` — it can just pass a normal prop. Some parents don't want to listen to what their children have to say.
In this case, you can specify a fallback value for when no prop is passed at all:
```js
/// file: FancyInput.svelte
let { value = $bindable('fallback'), ...props } = $props();
```
================================================
FILE: documentation/docs/02-runes/07-$inspect.md
================================================
---
title: $inspect
tags: rune-inspect
---
> [!NOTE] `$inspect` only works during development. In a production build it becomes a noop.
The `$inspect` rune is roughly equivalent to `console.log`, with the exception that it will re-run whenever its argument changes. `$inspect` tracks reactive state deeply, meaning that updating something inside an object or array using fine-grained reactivity will cause it to re-fire:
<!-- codeblock:start {"title":"$inspect(...)"} -->
```svelte
<!--- file: App.svelte --->
<script>
let count = $state(0);
let message = $state('hello');
$inspect(count, message); // will console.log when `count` or `message` change
</script>
<button onclick={() => count++}>Increment</button>
<input bind:value={message} />
```
<!-- codeblock:end -->
On updates, a stack trace will be printed, making it easy to find the origin of a state change (unless you're in the playground, due to technical limitations).
## $inspect(...).with
`$inspect(...)` returns an object with a `with` method, which you can invoke with a callback that will then be invoked instead of `console.log`. The first argument to the callback is either `"init"` or `"update"`; subsequent arguments are the values passed to `$inspect`:
<!-- codeblock:start {"title":"$inspect(...).with(...)"} -->
```svelte
<!--- file: App.svelte --->
<script>
let count = $state(0);
$inspect(count).with((type, count) => {
if (type === 'update') {
debugger; // or `console.trace`, or whatever you want
}
});
</script>
<button onclick={() => count++}>Increment</button>
```
<!-- codeblock:end -->
## $inspect.trace(...)
This rune, added in 5.14, causes the surrounding function to be _traced_ in development. Any time the function re-runs as part of an [effect]($effect) or a [derived]($derived), information will be printed to the console about which pieces of reactive state caused the effect to fire.
```svelte
<script>
import { doSomeWork } from './elsewhere';
$effect(() => {
+++// $inspect.trace must be the first statement of a function body+++
+++$inspect.trace();+++
doSomeWork();
});
</script>
```
`$inspect.trace` takes an optional first argument which will be used as the label.
================================================
FILE: documentation/docs/02-runes/08-$host.md
================================================
---
title: $host
---
When compiling a component as a [custom element](custom-elements), the `$host` rune provides access to the host element, allowing you to (for example) dispatch custom events ([demo](/playground/untitled#H4sIAAAAAAAAE41Ry2rDMBD8FSECtqkTt1fHFpSSL-ix7sFRNkTEXglrnTYY_3uRlDgxTaEHIfYxs7szA9-rBizPPwZOZwM89wmecqxbF70as7InaMjltrWFR3mpkQDJ8pwXVnbKkKiwItUa3RGLVtk7gTHQXRDR2lXda4CY1D0SK9nCUk0QPyfrCovsRoNFe17aQOAwGncgO2gBqRzihJXiQrEs2csYOhQ-7HgKHaLIbpRhhBG-I2eD_8ciM4KnnOCbeE5dD2P6h0Dz0-Yi_arNhPLJXBtSGi2TvSXdbpqwdsXvjuYsC1veabvvUTog2ylrapKH2G2XsMFLS4uDthQnq2t1cwKkGOGLvYU5PvaQxLsxOkPmsm97Io1Mo2yUPF6VnOZFkw1RMoopKLKAE_9gmGxyDFMwMcwN-Bx_ABXQWmOtAgAA)):
<!-- prettier-ignore -->
```svelte
/// file: Stepper.svelte
<svelte:options customElement="my-stepper" />
<script>
function dispatch(type) {
+++$host()+++.dispatchEvent(new CustomEvent(type));
}
</script>
<button onclick={() => dispatch('decrement')}>decrement</button>
<button onclick={() => dispatch('increment')}>increment</button>
```
<!-- prettier-ignore -->
```svelte
/// file: App.svelte
<script>
import './Stepper.svelte';
let count = $state(0);
</script>
<my-stepper
ondecrement={() => count -= 1}
onincrement={() => count += 1}
></my-stepper>
<p>count: {count}</p>
```
================================================
FILE: documentation/docs/02-runes/index.md
================================================
---
title: Runes
---
================================================
FILE: documentation/docs/03-template-syntax/01-basic-markup.md
================================================
---
title: Basic markup
---
Markup inside a Svelte component can be thought of as HTML++.
## Tags
A lowercase tag, like `<div>`, denotes a regular HTML element. A capitalised tag or a tag that uses dot notation, such as `<Widget>` or `<my.stuff>`, indicates a _component_.
```svelte
<script>
import Widget from './Widget.svelte';
</script>
<div>
<Widget />
</div>
```
## Element attributes
By default, attributes work exactly like their HTML counterparts.
```svelte
<div class="foo">
<button disabled>can't touch this</button>
</div>
```
As in HTML, values may be unquoted.
<!-- prettier-ignore -->
```svelte
<input type=checkbox />
```
Attribute values can contain JavaScript expressions.
```svelte
<a href="page/{p}">page {p}</a>
```
Or they can _be_ JavaScript expressions.
```svelte
<button disabled={!clickable}>...</button>
```
Boolean attributes are included on the element if their value is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy) and excluded if it's [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy).
All other attributes are included unless their value is [nullish](https://developer.mozilla.org/en-US/docs/Glossary/Nullish) (`null` or `undefined`).
```svelte
<input required={false} placeholder="This input field is not required" />
<div title={null}>This div has no title attribute</div>
```
> [!NOTE] Quoting a singular expression does not affect how the value is parsed, but in Svelte 6 it will cause the value to be coerced to a string:
>
> <!-- prettier-ignore -->
> ```svelte
> <button disabled="{number !== 42}">...</button>
> ```
When the attribute name and value match (`name={name}`), they can be replaced with `{name}`.
```svelte
<button {disabled}>...</button>
<!-- equivalent to
<button disabled={disabled}>...</button>
-->
```
## Component props
By convention, values passed to components are referred to as _properties_ or _props_ rather than _attributes_, which are a feature of the DOM.
As with elements, `name={name}` can be replaced with the `{name}` shorthand.
```svelte
<Widget foo={bar} answer={42} text="hello" />
```
## Spread attributes
_Spread attributes_ allow many attributes or properties to be passed to an element or component at once.
An element or component can have multiple spread attributes, interspersed with regular ones. Order matters — if `things.a` exists it will take precedence over `a="b"`, while `c="d"` would take precedence over `things.c`:
```svelte
<Widget a="b" {...things} c="d" />
```
## Events
Listening to DOM events is possible by adding attributes to the element that start with `on`. For example, to listen to the `click` event, add the `onclick` attribute to a button:
```svelte
<button onclick={() => console.log('clicked')}>click me</button>
```
Event attributes are case sensitive. `onclick` listens to the `click` event, `onClick` listens to the `Click` event, which is different. This ensures you can listen to custom events that have uppercase characters in them.
Because events are just attributes, the same rules as for attributes apply:
- you can use the shorthand form: `<button {onclick}>click me</button>`
- you can spread them: `<button {...thisSpreadContainsEventAttributes}>click me</button>`
Timing-wise, event attributes always fire after events from bindings (e.g. `oninput` always fires after an update to `bind:value`). Under the hood, some event handlers are attached directly with `addEventListener`, while others are _delegated_.
When using `ontouchstart` and `ontouchmove` event attributes, the handlers are [passive](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#using_passive_listeners) for better performance. This greatly improves responsiveness by allowing the browser to scroll the document immediately, rather than waiting to see if the event handler calls `event.preventDefault()`.
In the very rare cases that you need to prevent these event defaults, you should use [`on`](svelte-events#on) instead (for example inside an action).
### Event delegation
To reduce memory footprint and increase performance, Svelte uses a technique called event delegation. This means that for certain events — see the list below — a single event listener at the application root takes responsibility for running any handlers on the event's path.
There are a few gotchas to be aware of:
- when you manually dispatch an event with a delegated listener, make sure to set the `{ bubbles: true }` option or it won't reach the application root
- when using `addEventListener` directly, avoid calling `stopPropagation` or the event won't reach the application root and handlers won't be invoked. Similarly, handlers added manually inside the application root will run _before_ handlers added declaratively deeper in the DOM (with e.g. `onclick={...}`), in both capturing and bubbling phases. For these reasons it's better to use the `on` function imported from `svelte/events` rather than `addEventListener`, as it will ensure that order is preserved and `stopPropagation` is handled correctly.
The following event handlers are delegated:
- `beforeinput`
- `click`
- `change`
- `dblclick`
- `contextmenu`
- `focusin`
- `focusout`
- `input`
- `keydown`
- `keyup`
- `mousedown`
- `mousemove`
- `mouseout`
- `mouseover`
- `mouseup`
- `pointerdown`
- `pointermove`
- `pointerout`
- `pointerover`
- `pointerup`
- `touchend`
- `touchmove`
- `touchstart`
## Text expressions
A JavaScript expression can be included as text by surrounding it with curly braces.
```svelte
{expression}
```
Expressions that are `null` or `undefined` will be omitted; all others are [coerced to strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion).
Curly braces can be included in a Svelte template by using their [HTML entity](https://developer.mozilla.org/docs/Glossary/Entity) strings: `{`, `{`, or `{` for `{` and `}`, `}`, or `}` for `}`.
If you're using a regular expression (`RegExp`) [literal notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#literal_notation_and_constructor), you'll need to wrap it in parentheses.
<!-- prettier-ignore -->
```svelte
<h1>Hello {name}!</h1>
<p>{a} + {b} = {a + b}.</p>
<div>{(/^[A-Za-z ]+$/).test(value) ? x : y}</div>
```
The expression will be stringified and escaped to prevent code injections. If you want to render HTML, use the `{@html}` tag instead.
```svelte
{@html potentiallyUnsafeHtmlString}
```
> [!NOTE] Make sure that you either escape the passed string or only populate it with values that are under your control in order to prevent [XSS attacks](https://owasp.org/www-community/attacks/xss/)
## Comments
You can use HTML comments inside components.
```svelte
<!-- this is a comment! --><h1>Hello world</h1>
```
Comments beginning with `svelte-ignore` disable warnings for the next block of markup. Usually, these are accessibility warnings; make sure that you're disabling them for a good reason.
```svelte
<!-- svelte-ignore a11y_autofocus -->
<input bind:value={name} autofocus />
```
You can add a special comment starting with `@component` that will show up when hovering over the component name in other files.
````svelte
<!--
@component
- You can use markdown here.
- You can also use code blocks here.
- Usage:
```html
<Main name="Arethra">
```
-->
<script>
let { name } = $props();
</script>
<main>
<h1>
Hello, {name}
</h1>
</main>
````
================================================
FILE: documentation/docs/03-template-syntax/02-if.md
================================================
---
title: {#if ...}
tags: template-if
---
```svelte
<!--- copy: false --->
{#if expression}...{/if}
```
```svelte
<!--- copy: false --->
{#if expression}...{:else if expression}...{/if}
```
```svelte
<!--- copy: false --->
{#if expression}...{:else}...{/if}
```
Content that is conditionally rendered can be wrapped in an if block.
```svelte
{#if answer === 42}
<p>what was the question?</p>
{/if}
```
Additional conditions can be added with `{:else if expression}`, optionally ending in an `{:else}` clause.
```svelte
{#if porridge.temperature > 100}
<p>too hot!</p>
{:else if 80 > porridge.temperature}
<p>too cold!</p>
{:else}
<p>just right!</p>
{/if}
```
(Blocks don't have to wrap elements, they can also wrap text within elements.)
================================================
FILE: documentation/docs/03-template-syntax/03-each.md
================================================
---
title: {#each ...}
tags: template-each
---
```svelte
<!--- copy: false --->
{#each expression as name}...{/each}
```
```svelte
<!--- copy: false --->
{#each expression as name, index}...{/each}
```
Iterating over values can be done with an each block. The values in question can be arrays, array-like objects (i.e. anything with a `length` property), or iterables like `Map` and `Set`. (Internally, they are converted to arrays with [`Array.from`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from).)
If the value is `null` or `undefined`, it is treated the same as an empty array (which will cause [else blocks](#Else-blocks) to be rendered, where applicable).
```svelte
<h1>Shopping list</h1>
<ul>
{#each items as item}
<li>{item.name} x {item.qty}</li>
{/each}
</ul>
```
An each block can also specify an _index_, equivalent to the second argument in an `array.map(...)` callback:
```svelte
{#each items as item, i}
<li>{i + 1}: {item.name} x {item.qty}</li>
{/each}
```
## Keyed each blocks
```svelte
<!--- copy: false --->
{#each expression as name (key)}...{/each}
```
```svelte
<!--- copy: false --->
{#each expression as name, index (key)}...{/each}
```
If a _key_ expression is provided — which must uniquely identify each list item — Svelte will use it to intelligently update the list when data changes by inserting, moving and deleting items, rather than adding or removing items at the end and updating the state in the middle.
The key can be any object, but strings and numbers are recommended since they allow identity to persist when the objects themselves change.
```svelte
{#each items as item (item.id)}
<li>{item.name} x {item.qty}</li>
{/each}
<!-- or with additional index value -->
{#each items as item, i (item.id)}
<li>{i + 1}: {item.name} x {item.qty}</li>
{/each}
```
You can freely use destructuring and rest patterns in each blocks.
```svelte
{#each items as { id, name, qty }, i (id)}
<li>{i + 1}: {name} x {qty}</li>
{/each}
{#each objects as { id, ...rest }}
<li><span>{id}</span><MyComponent {...rest} /></li>
{/each}
{#each items as [id, ...rest]}
<li><span>{id}</span><MyComponent values={rest} /></li>
{/each}
```
## Each blocks without an item
```svelte
<!--- copy: false --->
{#each expression}...{/each}
```
```svelte
<!--- copy: false --->
{#each expression, index}...{/each}
```
In case you just want to render something `n` times, you can omit the `as` part:
<!-- codeblock:start {"title":"Chess board"} -->
```svelte
<!--- file: App.svelte --->
<div class="chess-board">
{#each { length: 8 }, rank}
{#each { length: 8 }, file}
<div class:black={(rank + file) % 2 === 1}></div>
{/each}
{/each}
</div>
<style>
.chess-board {
display: grid;
grid-template-columns: repeat(8, 1fr);
rows: repeat(8, 1fr);
border: 1px solid black;
aspect-ratio: 1;
.black {
background: black;
}
}
</style>
```
<!-- codeblock:end -->
## Else blocks
```svelte
<!--- copy: false --->
{#each expression as name}...{:else}...{/each}
```
An each block can also have an `{:else}` clause, which is rendered if the list is empty.
```svelte
{#each todos as todo}
<p>{todo.text}</p>
{:else}
<p>No tasks today!</p>
{/each}
```
================================================
FILE: documentation/docs/03-template-syntax/04-key.md
================================================
---
title: {#key ...}
tags: template-key
---
```svelte
<!--- copy: false --->
{#key expression}...{/key}
```
Key blocks destroy and recreate their contents when the value of an expression changes. When used around components, this will cause them to be reinstantiated and reinitialised:
```svelte
{#key value}
<Component />
{/key}
```
It's also useful if you want a transition to play whenever a value changes:
```svelte
{#key value}
<div transition:fade>{value}</div>
{/key}
```
================================================
FILE: documentation/docs/03-template-syntax/05-await.md
================================================
---
title: {#await ...}
tags: template-await
---
```svelte
<!--- copy: false --->
{#await expression}...{:then name}...{:catch name}...{/await}
```
```svelte
<!--- copy: false --->
{#await expression}...{:then name}...{/await}
```
```svelte
<!--- copy: false --->
{#await expression then name}...{/await}
```
```svelte
<!--- copy: false --->
{#await expression catch name}...{/await}
```
Await blocks allow you to branch on the three possible states of a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) — pending, fulfilled or rejected.
```svelte
{#await promise}
<!-- promise is pending -->
<p>waiting for the promise to resolve...</p>
{:then value}
<!-- promise was fulfilled or not a Promise -->
<p>The value is {value}</p>
{:catch error}
<!-- promise was rejected -->
<p>Something went wrong: {error.message}</p>
{/await}
```
> [!NOTE] During server-side rendering, only the pending branch will be rendered.
>
> If the provided expression is not a `Promise`, only the `:then` branch will be rendered, including during server-side rendering.
The `catch` block can be omitted if you don't need to render anything when the promise rejects (or no error is possible).
```svelte
{#await promise}
<!-- promise is pending -->
<p>waiting for the promise to resolve...</p>
{:then value}
<!-- promise was fulfilled -->
<p>The value is {value}</p>
{/await}
```
If you don't care about the pending state, you can also omit the initial block.
```svelte
{#await promise then value}
<p>The value is {value}</p>
{/await}
```
Similarly, if you only want to show the error state, you can omit the `then` block.
```svelte
{#await promise catch error}
<p>The error is {error}</p>
{/await}
```
> [!NOTE] You can use `#await` with [`import(...)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) to render components lazily:
>
> ```svelte
> {#await import('./Component.svelte') then { default: Component }}
> <Component />
> {/await}
> ```
================================================
FILE: documentation/docs/03-template-syntax/06-snippet.md
================================================
---
title: {#snippet ...}
---
```svelte
<!--- copy: false --->
{#snippet name()}...{/snippet}
```
```svelte
<!--- copy: false --->
{#snippet name(param1, param2, paramN)}...{/snippet}
```
Snippets, and [render tags](@render), are a way to create reusable chunks of markup inside your components. Instead of writing duplicative code like [this](/playground/untitled#H4sIAAAAAAAAE5VUYW-kIBD9K8Tmsm2yXXRzvQ-s3eR-R-0HqqOQKhAZb9sz_vdDkV1t000vRmHewMx7w2AflbIGG7GnPlK8gYhFv42JthG-m9Gwf6BGcLbVXZuPSGrzVho8ZirDGpDIhldgySN5GpEMez9kaNuckY1ANJZRamRuu2ZnhEZt6a84pvs43mzD4pMsUDDi8DMkQFYCGdkvsJwblFq5uCik9bmJ4JZwUkv1eoknWigX2eGNN6aGXa6bjV8ybP-X7sM36T58SVcrIIV2xVIaA41xeD5kKqWXuqpUJEefOqVuOkL9DfBchGrzWfu0vb-RpTd3o-zBR045Ga3HfuE5BmJpKauuhbPtENlUF2sqR9jqpsPSxWsMrlngyj3VJiyYjJXb1-lMa7IWC-iSk2M5Zzh-SJjShe-siq5kpZRPs55BbSGU5YPyte4vVV_VfFXxVb10dSLf17pS2lM5HnpPxw4Zpv6x-F57p0jI3OKlVnhv5V9wPQrNYQQ9D_f6aGHlC89fq1Z3qmDkJCTCweOGF4VUFSPJvD_DhreVdA0eu8ehJJ5x91dBaBkpWm3ureCFPt3uzRv56d4kdp-2euG38XZ6dsnd3ZmPG9yRBCrzRUvi-MccOdwz3qE-fOZ7AwAhlrtTUx3c76vRhSwlFBHDtoPhefgHX3dM0PkEAAA=)...
```svelte
{#each images as image}
{#if image.href}
<a href={image.href}>
<figure>
<img src={image.src} alt={image.caption} width={image.width} height={image.height} />
<figcaption>{image.caption}</figcaption>
</figure>
</a>
{:else}
<figure>
<img src={image.src} alt={image.caption} width={image.width} height={image.height} />
<figcaption>{image.caption}</figcaption>
</figure>
{/if}
{/each}
```
...you can write [this](/playground/untitled#H4sIAAAAAAAAE5VUYW-bMBD9KxbRlERKY4jWfSA02n5H6QcXDmwVbMs-lnaI_z6D7TTt1moTAnPvzvfenQ_GpBEd2CS_HxPJekjy5IfWyS7BFz0b9id0CM62ajDVjBS2MkLjqZQldoBE9KwFS-7I_YyUOPqlRGuqnKw5orY5pVpUduj3mitUln5LU3pI0_UuBp9FjTwnDr9AHETLMSeHK6xiGoWSLi9yYT034cwSRjohn17zcQPNFTs8s153sK9Uv_Yh0-5_5d7-o9zbD-UqCaRWrllSYZQxLw_HUhb0ta-y4NnJUxfUvc7QuLJSaO0a3oh2MLBZat8u-wsPnXzKQvTtVVF34xK5d69ThFmHEQ4SpzeVRediTG8rjD5vBSeN3E5JyHh6R1DQK9-iml5kjzQUN_lSgVU8DhYLx7wwjSvRkMDvTjiwF4zM1kXZ7DlF1eN3A7IG85e-zRrYEjjm0FkI4Cc7Ripm0pHOChexhcWXzreeZyRMU6Mk3ljxC9w4QH-cQZ_b3T5pjHxk1VNr1CDrnJy5QDh6XLO6FrLNSRb2l9gz0wo3S6m7HErSgLsPGMHkpDZK31jOanXeHPQz-eruLHUP0z6yTbpbrn223V70uMXNSpQSZjpL0y8hcxxpNqA6_ql3BQAxlxvfpQ_uT9GrWjQC6iRHM8D0MP0GQsIi92QEAAA=):
```svelte
{#snippet figure(image)}
<figure>
<img src={image.src} alt={image.caption} width={image.width} height={image.height} />
<figcaption>{image.caption}</figcaption>
</figure>
{/snippet}
{#each images as image}
{#if image.href}
<a href={image.href}>
{@render figure(image)}
</a>
{:else}
{@render figure(image)}
{/if}
{/each}
```
Like function declarations, snippets can have an arbitrary number of parameters, which can have default values, and you can destructure each parameter. You cannot use rest parameters, however.
## Snippet scope
Snippets can be declared anywhere inside your component. They can reference values declared outside themselves, for example in the `<script>` tag or in `{#each ...}` blocks...
<!-- codeblock:start {"title":"Snippets"} -->
```svelte
<!--- file: App.svelte --->
<script>
let { message = `it's great to see you!` } = $props();
</script>
{#snippet hello(name)}
<p>hello {name}! {message}!</p>
{/snippet}
{@render hello('alice')}
{@render hello('bob')}
```
<!-- codeblock:end -->
...and they are 'visible' to everything in the same lexical scope (i.e. siblings, and children of those siblings):
```svelte
<div>
{#snippet x()}
{#snippet y()}...{/snippet}
<!-- this is fine -->
{@render y()}
{/snippet}
<!-- this will error, as `y` is not in scope -->
{@render y()}
</div>
<!-- this will also error, as `x` is not in scope -->
{@render x()}
```
Snippets can reference themselves and each other:
<!-- codeblock:start {"title":"Self-referencing snippets"} -->
```svelte
<!--- file: App.svelte --->
{#snippet blastoff()}
<span>🚀</span>
{/snippet}
{#snippet countdown(n)}
{#if n > 0}
<span>{n}...</span>
{@render countdown(n - 1)}
{:else}
{@render blastoff()}
{/if}
{/snippet}
{@render countdown(10)}
```
<!-- codeblock:end -->
## Passing snippets to components
### Explicit props
Within the template, snippets are values just like any other. As such, they can be passed to components as props:
<!-- codeblock:start {"title":"Explicit snippet props"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Table from './Table.svelte';
const fruits = [
{ name: 'apples', qty: 5, price: 2 },
{ name: 'bananas', qty: 10, price: 1 },
{ name: 'cherries', qty: 20, price: 0.5 }
];
</script>
{#snippet header()}
<th>fruit</th>
<th>qty</th>
<th>price</th>
<th>total</th>
{/snippet}
{#snippet row(d)}
<td>{d.name}</td>
<td>{d.qty}</td>
<td>{d.price}</td>
<td>{d.qty * d.price}</td>
{/snippet}
<Table data={fruits} +++{header} {row}+++ />
```
```svelte
<!--- file: Table.svelte --->
<script>
let { data, header, row } = $props();
</script>
<table>
{#if header}
<thead>
<tr>{@render header()}</tr>
</thead>
{/if}
<tbody>
{#each data as d}
<tr>{@render row(d)}</tr>
{/each}
</tbody>
</table>
<style>
table {
text-align: left;
border-spacing: 0;
}
tbody tr:nth-child(2n+1) {
background: ButtonFace;
}
table :global(th), table :global(td) {
padding: 0.5em;
}
</style>
```
<!-- codeblock:end -->
Think about it like passing content instead of data to a component. The concept is similar to slots in web components.
### Implicit props
As an authoring convenience, snippets declared directly _inside_ a component implicitly become props _on_ the component:
<!-- codeblock:start {"title":"Implicit snippet props"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Table from './Table.svelte';
const fruits = [
{ name: 'apples', qty: 5, price: 2 },
{ name: 'bananas', qty: 10, price: 1 },
{ name: 'cherries', qty: 20, price: 0.5 }
];
</script>
<Table data={fruits}>
{#snippet header()}
<th>fruit</th>
<th>qty</th>
<th>price</th>
<th>total</th>
{/snippet}
{#snippet row(d)}
<td>{d.name}</td>
<td>{d.qty}</td>
<td>{d.price}</td>
<td>{d.qty * d.price}</td>
{/snippet}
</Table>
```
```svelte
<!--- file: Table.svelte --->
<script>
let { data, header, row } = $props();
</script>
<table>
{#if header}
<thead>
<tr>{@render header()}</tr>
</thead>
{/if}
<tbody>
{#each data as d}
<tr>{@render row(d)}</tr>
{/each}
</tbody>
</table>
<style>
table {
text-align: left;
border-spacing: 0;
}
tbody tr:nth-child(2n+1) {
background: ButtonFace;
}
table :global(th), table :global(td) {
padding: 0.5em;
}
</style>
```
<!-- codeblock:end -->
### Implicit `children` snippet
Any content inside the component tags that is _not_ a snippet declaration implicitly becomes part of the `children` snippet:
<!-- codeblock:start {"title":"Implicit children snippet","selected":"Button.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import Button from './Button.svelte';
</script>
<Button>click me</Button>
```
```svelte
<!--- file: Button.svelte --->
<script>
let { children } = $props();
</script>
<!-- result will be <button>click me</button> -->
<button>{@render children()}</button>
```
<!-- codeblock:end -->
> [!NOTE] Note that you cannot have a prop called `children` if you also have content inside the component — for this reason, you should avoid having props with that name
### Optional snippet props
You can declare snippet props as being optional. You can either use optional chaining to not render anything if the snippet isn't set...
```svelte
<script>
let { children } = $props();
</script>
{@render children?.()}
```
...or use an `#if` block to render fallback content:
```svelte
<script>
let { children } = $props();
</script>
{#if children}
{@render children()}
{:else}
fallback content
{/if}
```
## Typing snippets
Snippets implement the `Snippet` interface imported from `'svelte'`:
```svelte
<script lang="ts">
import type { Snippet } from 'svelte';
interface Props {
data: any[];
children: Snippet;
row: Snippet<[any]>;
}
let { data, children, row }: Props = $props();
</script>
```
With this change, red squigglies will appear if you try and use the component without providing a `data` prop and a `row` snippet. Notice that the type argument provided to `Snippet` is a tuple, since snippets can have multiple parameters.
We can tighten things up further by declaring a generic, so that `data` and `row` refer to the same type:
```svelte
<script lang="ts" generics="T">
import type { Snippet } from 'svelte';
let {
data,
children,
row
}: {
data: T[];
children: Snippet;
row: Snippet<[T]>;
} = $props();
</script>
```
## Exporting snippets
Snippets declared at the top level of a `.svelte` file can be exported from a `<script module>` for use in other components, provided they don't reference any declarations in a non-module `<script>` (whether directly or indirectly, via other snippets):
<!-- codeblock:start {"title":"Exported snippets","selected":"snippets.svelte"} -->
```svelte
<!--- file: App.svelte --->
<script>
import { add } from './snippets.svelte';
</script>
{@render add(1, 2)}
```
```svelte
<!--- file: snippets.svelte --->
<script module>
export { add };
</script>
{#snippet add(a, b)}
{a} + {b} = {a + b}
{/snippet}
```
<!-- codeblock:end -->
> [!NOTE]
> This requires Svelte 5.5.0 or newer
## Programmatic snippets
Snippets can be created programmatically with the [`createRawSnippet`](svelte#createRawSnippet) API. This is intended for advanced use cases.
## Snippets and slots
In Svelte 4, content can be passed to components using [slots](legacy-slots). Snippets are more powerful and flexible, and so slots have been deprecated in Svelte 5.
================================================
FILE: documentation/docs/03-template-syntax/07-@render.md
================================================
---
title: {@render ...}
---
To render a [snippet](snippet), use a `{@render ...}` tag.
```svelte
{#snippet sum(a, b)}
<p>{a} + {b} = {a + b}</p>
{/snippet}
{@render sum(1, 2)}
{@render sum(3, 4)}
{@render sum(5, 6)}
```
The expression can be an identifier like `sum`, or an arbitrary JavaScript expression:
```svelte
{@render (cool ? coolSnippet : lameSnippet)()}
```
## Optional snippets
If the snippet is potentially undefined — for example, because it's an incoming prop — then you can use optional chaining to only render it when it _is_ defined:
```svelte
{@render children?.()}
```
Alternatively, use an [`{#if ...}`](if) block with an `:else` clause to render fallback content:
```svelte
{#if children}
{@render children()}
{:else}
<p>fallback content</p>
{/if}
```
================================================
FILE: documentation/docs/03-template-syntax/08-@html.md
================================================
---
title: {@html ...}
tags: template-html
---
To inject raw HTML into your component, use the `{@html ...}` tag:
```svelte
<article>
{@html content}
</article>
```
> [!NOTE] Make sure that you either escape the passed string or only populate it with values that are under your control in order to prevent [XSS attacks](https://owasp.org/www-community/attacks/xss/). Never render unsanitized content.
The expression should be valid standalone HTML — this will not work, because `</div>` is not valid HTML:
```svelte
{@html '<div>'}content{@html '</div>'}
```
It also will not compile Svelte code.
## Styling
Content rendered this way is 'invisible' to Svelte and as such will not receive [scoped styles](scoped-styles). In other words, this will not work, and the `a` and `img` styles will be regarded as unused:
<!-- prettier-ignore -->
```svelte
<article>
{@html content}
</article>
<style>
article {
a { color: hotpink }
img { width: 100% }
}
</style>
```
Instead, use the `:global` modifier to target everything inside the `<article>`:
<!-- prettier-ignore -->
```svelte
<style>
article +++:global+++ {
a { color: hotpink }
img { width: 100% }
}
</style>
```
================================================
FILE: documentation/docs/03-template-syntax/09-@attach.md
================================================
---
title: {@attach ...}
tags: attachments
---
Attachments are functions that run in an [effect]($effect) when an element is mounted to the DOM or when [state]($state) read inside the function updates.
Optionally, they can return a function that is called before the attachment re-runs, or after the element is later removed from the DOM.
> [!NOTE]
> Attachments are available in Svelte 5.29 and newer.
```svelte
<!--- file: App.svelte --->
<script>
/** @type {import('svelte/attachments').Attachment} */
function myAttachment(element) {
console.log(element.nodeName); // 'DIV'
return () => {
console.log('cleaning up');
};
}
</script>
<div {@attach myAttachment}>...</div>
```
An element can have any number of attachments.
## Attachment factories
A useful pattern is for a function, such as `tooltip` in this example, to _return_ an attachment ([demo](/playground/untitled#H4sIAAAAAAAAE3VT0XLaMBD8lavbDiaNCUlbHhTItG_5h5AH2T5ArdBppDOEMv73SkbGJGnH47F9t3un3TsfMyO3mInsh2SW1Sa7zlZKo8_E0zHjg42pGAjxBPxp7cTvUHOMldLjv-IVGUbDoUw295VTlh-WZslqa8kxsLL2ACtHWxh175NffnQfAAGikSGxYQGfPEvGfPSIWtOH0TiBVo2pWJEBJtKhQp4YYzjG9JIdcuMM5IZqHMPioY8vOSA997zQoevf4a7heO7cdp34olRiTGr07OhwH1IdoO2A7dLMbwahZq6MbRhKZWqxk7rBxTGVbuHmhCgb5qDgmIx_J6XtHHukHTrYYqx_YpzYng8aO4RYayql7hU-1ZJl0akqHBE_D9KLolwL-Dibzc7iSln9XjtqTF1UpMkJ2EmXR-BgQErsN4pxIJKr0RVO1qrxAqaTO4fbc9bKulZm3cfDY3aZDgvFGErWjmzhN7KmfX5rXyDeX8Pt1mU-hXjdBOrtuB97vK4GPUtmJ41XcRMEGDLD8do0nJ73zhUhSlyRw0t3vPqD8cjfLs-axiFgNBrkUd9Ulp50c-GLxlXAVlJX-ffpZyiSn7H0eLCUySZQcQdXlxj4El0Yv_FZvIKElqqGTruVLhzu7VRKCh22_5toOyxsWqLwwzK-cCbYNdg-hy-p9D7sbiZWUnts_wLUOF3CJgQAAA==)):
```svelte
<!--- file: App.svelte --->
<script>
import tippy from 'tippy.js';
let content = $state('Hello!');
/**
* @param {string} content
* @returns {import('svelte/attachments').Attachment}
*/
function tooltip(content) {
return (element) => {
const tooltip = tippy(element, { content });
return tooltip.destroy;
};
}
</script>
<input bind:value={content} />
<button {@attach tooltip(content)}>
Hover me
</button>
```
Since the `tooltip(content)` expression runs inside an [effect]($effect), the attachment will be destroyed and recreated whenever `content` changes. The same thing would happen for any state read _inside_ the attachment function when it first runs. (If this isn't what you want, see [Controlling when attachments re-run](#Controlling-when-attachments-re-run).)
## Inline attachments
Attachments can also be created inline ([demo](/playground/untitled#H4sIAAAAAAAAE71Wf3OaWBT9KoyTTnW3MS-I3dYmnWXVtnRAazRJzbozRSQEApiRhwKO333vuY8m225m_9yZGOT9OPfcc84D943UTfxGr_G7K6Xr3TVeNW7D2M8avT_3DVk-YAoDNF4vNB8e2tnWjyXGlm7mPzfurVPpp5JgGmeZtwkf5PtFupCxLzVvHa832rl2lElX-s2Xm2DZFNqp_hs-rZetd4v07ORpT3qmQHu7MF2td0BZp8k6z_xkvfXP902_pZ2_1_aYWEiqm0kN8I4r79qbdZ6umnq3q_2iNf22F4dE6qt2oimwdpim_uY6XMm7Fuo-IQT_iTD_CeGTHwZ38ieIJUFQRxirR1Xf39Dw0X5z0I72Af4tD61vvPNwWKQnqmfPTbduhsEd2J3vO_oBd3dc6fF2X7umNdWGf0vBRhSS6qoV7cCXfTXWfKmvWG61_si_vfU92Wz-E4RhsLhNIYinsox9QKGVd8-tuACCeKXRX12P-T_eKf7fhTq0Hvt-f3ailtSeoxJHRo1-58NoPe1UiBc1hkL8Yeh45y_vQ3mcuNl9T8s3cXPRWLnS7YWJG_gn2Tb4tUjid8jua-PVl08j_ab8I14mH8Llx0s5Tz5Err4ql52r_GYg0mVy1bEGZuD0ze64b5TWYFiM-16wSuJ4JT5vfVpDcztrcG_YkRU4s6HxufzDWF4XuVeJ1P10IbzBemt3Vp1V2e04ZXfrJd7Wicyd039brRIv_RIVu_nXi7X1cfL2sy66ztToUp1TO7qJ7NlwZ0f30pld5qNSVE5o6PbMojFHjgZB7oSicPpGteyLclQap7SvY0dXtM_LR1NT2JFHey3aaxa0VxCeYJ7RMHemoiCcgPZV9pR7o7kgcOjeGliYk9hjDZx8FAq6enwlTPSZj_vYPw9Il64dXdIY8ZmapzwfEd8-1ZyaxWhqkIZOibXUd-6Upqi1pD4uMicCV1GA_7zi73UN8BaF4sC8peJtMjfmjbHZBFwq5ov50qRaE0l96NZggnW4KqypYRAW-uhSz9ADvklwJF2J-5W0Z5fQPBhDX92R6I_0IFxRgDftge4l4dP-gH1hjD7uqU6fsOEZ9UNrCdPB-nys6uXgY6O3ZMd9sy5T9PghqrWHdjo4jB51CgLiKJaDYYA-7WgYONf1FbjkI-mE3EAfUY_rijfuJ_CVPaR50oe9JF7Q0pI8Dw3osxxYHdYPGbp2CnwHF8KvwJv2wEv0Z3ilQI6U9uwbZxbYJXvEmjjQjjCHkvNLvNg3yhzXQd1olamsT4IRrZmX0MUDpwL7R8zzHj7pSh9hPHFSHjLezKqAST51uC5zmtQ87skDUaneLokT5RbXkPWSYz53Abgjc8_o4KFGUZ-Hgv2Z1l5OTYM9D-HfUD0L-EwxH5wRnIG61gS-khfgY1bq7IAP_DA4l5xRuh9xlm8yGjutc8t-wHtkhWv3hc7aqGwiK5KzgvM5xRkZYn193uEln-su55j1GaIv7oM4iPrsVHiG0Dx7TR9-1lBfqFdwfvSd5LNL5xyZVp5NoHFZ57FkfiF6vKs4k5zvIfrX5xX6MXmt0gM5MTu8DjnhukrHHzTRd3jm0dma0_f_x5cxP9f4jBdqHvmbq2fUjzqcKh2Cp-yWj9ntcHanXmBXxhu7Q--eyjhfNFpaV7zgz4nWEUb7zUOhpevjjf_gu_KZ99pxFlZ-T3sttkmYqrco_26q35v0Ewzv5EZPbnL_8BfduWGMnyyN3q0bZ_7hb_7KG_L4CQAA)):
```svelte
<!--- file: App.svelte --->
<canvas
width={32}
height={32}
{@attach (canvas) => {
const context = canvas.getContext('2d');
$effect(() => {
context.fillStyle = color;
context.fillRect(0, 0, canvas.width, canvas.height);
});
}}
></canvas>
```
> [!NOTE]
> The nested effect runs whenever `color` changes, while the outer effect (where `canvas.getContext(...)` is called) only runs once, since it doesn't read any reactive state.
## Conditional attachments
Falsy values like `false` or `undefined` are treated as no attachment, enabling conditional usage:
```svelte
<div {@attach enabled && myAttachment}>...</div>
```
## Passing attachments to components
When used on a component, `{@attach ...}` will create a prop whose key is a [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol). If the component then [spreads](/tutorial/svelte/spread-props) props onto an element, the element will receive those attachments.
This allows you to create _wrapper components_ that augment elements ([demo](/playground/untitled#H4sIAAAAAAAAE3VUS3ObMBD-KxvajnFqsJM2PhA7TXrKob31FjITAbKtRkiMtDhJPfz3LiAMdpxhGJvdb1_fPnaeYjn3Iu-WIbJ04028lZDcetHDzsO3olbVApI74F1RhHbLJdayhFl-Sp5qhVwhufEWNjWiwJtYxSjyQhsEFEXxBiujcxg1_8O_dnQ9APwsEbVyiHDafjrvDZCgkiO4MLCEzxYZcn90z6XUZ6OxA61KlaIgV6i1pFC-sxjDrlbHaDiWRoGvdMbHsLzp5DES0mJnRxGaRBvcBHb7yFUTCQeunEWYcYtGv12TqgFUDbCK1WLaM6IWQhUlQiJUFm2ZLPly51xXMG0Rjoyd69C7UqqG2nu95QZyXvtvLVpri2-SN4hoLXXCZFfhQ8aQBU1VgdEaH_vSgyBZR_BpPp_vi0tY-rw2ulRZkGqpTQRbZvwa2BPgFC8bgbw31CbjJjAsE6WNYBZeGp7vtQXLMqHWnZx-5kM1TR5ycpkZXQR2wzL94l8Ur1C_3-g168SfQf1MyfRi3LW9fs77emJEw5QV9SREoLTq06tcczq7d6xEUcJX2vAhO1b843XK34e5unZEMBr15ekuKEusluWAF8lXhE2ZTP2r2RcIHJ-163FPKerCgYJLOB9i4GvNwviI5-gAQiFFBk3tBTOU3HFXEk0R8o86WvUD64aINhv5K3oRmpJXkw8uxMG6Hh6JY9X7OwGSqfUy9tDG3sHNoEi0d_d_fv9qndxRU0VClFqo3KVo3U655Hnt1PXB3Qra2Y2QGdEwgTAMCxopsoxOe6SD0gD8movDhT0LAnhqlE8gVCpLWnRoV7OJCkFAwEXitrYL1W7p7pbiE_P7XH6E_rihODm5s52XtiH9Ekaw0VgI9exadWL1uoEYjPtg2672k5szsxbKyWB2fdT0w5Y_0hcT8oXOlRetmLS8-g-6TLXXQgYAAA==)):
```svelte
<!--- file: Button.svelte --->
<script>
/** @type {import('svelte/elements').HTMLButtonAttributes} */
let { children, ...props } = $props();
</script>
<!-- `props` includes attachments -->
<button {...props}>
{@render children?.()}
</button>
```
```svelte
<!--- file: App.svelte --->
<script>
import tippy from 'tippy.js';
import Button from './Button.svelte';
let content = $state('Hello!');
/**
* @param {string} content
* @returns {import('svelte/attachments').Attachment}
*/
function tooltip(content) {
return (element) => {
const tooltip = tippy(element, { content });
return tooltip.destroy;
};
}
</script>
<input bind:value={content} />
<Button {@attach tooltip(content)}>
Hover me
</Button>
```
## Controlling when attachments re-run
Attachments, unlike [actions](use), are fully reactive: `{@attach foo(bar)}` will re-run on changes to `foo` _or_ `bar` (or any state read inside `foo`):
```js
// @errors: 7006 2304 2552
function foo(bar) {
return (node) => {
veryExpensiveSetupWork(node);
update(node, bar);
};
}
```
In the rare case that this is a problem (for example, if `foo` does expensive and unavoidable setup work) consider passing the data inside a function and reading it in a child effect:
```js
// @errors: 7006 2304 2552
function foo(+++getBar+++) {
return (node) => {
veryExpensiveSetupWork(node);
+++ $effect(() => {
update(node, getBar());
});+++
}
}
```
## Creating attachments programmatically
To add attachments to an object that will be spread onto a component or element, use [`createAttachmentKey`](svelte-attachments#createAttachmentKey).
## Converting actions to attachments
If you're using a library that only provides actions, you can convert them to attachments with [`fromAction`](svelte-attachments#fromAction), allowing you to (for example) use them with components.
================================================
FILE: documentation/docs/03-template-syntax/10-@const.md
================================================
---
title: {@const ...}
---
The `{@const ...}` tag defines a local constant.
```svelte
{#each boxes as box}
{@const area = box.width * box.height}
{box.width} * {box.height} = {area}
{/each}
```
`{@const}` is only allowed as an immediate child of a block — `{#if ...}`, `{#each ...}`, `{#snippet ...}` and so on — a `<Component />` or a `<svelte:boundary>`.
================================================
FILE: documentation/docs/03-template-syntax/11-@debug.md
================================================
---
title: {@debug ...}
---
The `{@debug ...}` tag offers an alternative to `console.log(...)`. It logs the values of specific variables whenever they change, and pauses code execution if you have devtools open.
```svelte
<script>
let user = {
firstname: 'Ada',
lastname: 'Lovelace'
};
</script>
{@debug user}
<h1>Hello {user.firstname}!</h1>
```
`{@debug ...}` accepts a comma-separated list of variable names (not arbitrary expressions).
```svelte
<!-- Compiles -->
{@debug user}
{@debug user1, user2, user3}
<!-- WON'T compile -->
{@debug user.firstname}
{@debug myArray[0]}
{@debug !isReady}
{@debug typeof user === 'object'}
```
The `{@debug}` tag without any arguments will insert a `debugger` statement that gets triggered when _any_ state changes, as opposed to the specified variables.
================================================
FILE: documentation/docs/03-template-syntax/12-bind.md
================================================
---
title: bind:
---
Data ordinarily flows down, from parent to child. The `bind:` directive allows data to flow the other way, from child to parent.
The general syntax is `bind:property={expression}`, where `expression` is an [_lvalue_](https://press.rebus.community/programmingfundamentals/chapter/lvalue-and-rvalue/) (i.e. a variable or an object property). When the expression is an identifier with the same name as the property, we can omit the expression — in other words these are equivalent:
<!-- prettier-ignore -->
```svelte
<input bind:value={value} />
<input bind:value />
```
Svelte creates an event listener that updates the bound value. If an element already has a listener for the same event, that listener will be fired before the bound value is updated.
Most bindings are _two-way_, meaning that changes to the value will affect the element and vice versa. A few bindings are _readonly_, meaning that changing their value will have no effect on the element.
## Function bindings
You can also use `bind:property={get, set}`, where `get` and `set` are functions, allowing you to perform validation and transformation:
```svelte
<input bind:value={
() => value,
(v) => value = v.toLowerCase()}
/>
```
In the case of readonly bindings like [dimension bindings](#Dimensions), the `get` value should be `null`:
```svelte
<div
bind:clientWidth={null, redraw}
bind:clientHeight={null, redraw}
>...</div>
```
> [!NOTE]
> Function bindings are available in Svelte 5.9.0 and newer.
## `<input bind:value>`
A `bind:value` directive on an `<input>` element binds the input's `value` property:
<!-- prettier-ignore -->
```svelte
<script>
let message = $state('hello');
</script>
<input bind:value={message} />
<p>{message}</p>
```
In the case of a numeric input (`type="number"` or `type="range"`), the value will be coerced to a number:
<!-- codeblock:start {"title":"Numeric bindings"} -->
```svelte
<!--- file: App.svelte --->
<script>
let a = $state(1);
let b = $state(2);
</script>
<label>
<input type="number" bind:value={a} min="0" max="10" />
<input type="range" bind:value={a} min="0" max="10" />
</label>
<label>
<input type="number" bind:value={b} min="0" max="10" />
<input type="range" bind:value={b} min="0" max="10" />
</label>
<p>{a} + {b} = {a + b}</p>
```
<!-- codeblock:end -->
If the input is empty or invalid (in the case of `type="number"`), the value is `undefined`.
Since 5.6.0, if an `<input>` has a `defaultValue` and is part of a form, it will revert to that value instead of the empty string when the form is reset. Note that for the initial render the value of the binding takes precedence unless it is `null` or `undefined`.
```svelte
<script>
let value = $state('');
</script>
<form>
<input bind:value defaultValue="not the empty string">
<input type="reset" value="Reset">
</form>
```
> [!NOTE]
> Use reset buttons sparingly, and ensure that users won't accidentally click them while trying to submit the form.
## `<input bind:checked>`
Checkbox inputs can be bound with `bind:checked`:
```svelte
<label>
<input type="checkbox" bind:checked={accepted} />
Accept terms and conditions
</label>
```
Since 5.6.0, if an `<input>` has a `defaultChecked` attribute and is part of a form, it will revert to that value instead of `false` when the form is reset. Note that for the initial render the value of the binding takes precedence unless it is `null` or `undefined`.
```svelte
<script>
let checked = $state(true);
</script>
<form>
<input type="checkbox" bind:checked defaultChecked={true}>
<input type="reset" value="Reset">
</form>
```
> [!NOTE] Use `bind:group` for radio inputs instead of `bind:checked`.
## `<input bind:indeterminate>`
Checkboxes can be in an [indeterminate](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate) state, independently of whether they are checked or unchecked:
```svelte
<script>
let checked = $state(false);
let indeterminate = $state(true);
</script>
<form>
<input type="checkbox" bind:checked bind:indeterminate>
{#if indeterminate}
waiting...
{:else if checked}
checked
{:else}
unchecked
{/if}
</form>
```
## `<input bind:group>`
Inputs that work together can use `bind:group`:
<!-- codeblock:start {"title":"bind:group"} -->
```svelte
<!--- file: App.svelte --->
<script>
let tortilla = $state('Plain');
/** @type {string[]} */
let fillings = $state([]);
</script>
<h1>Customize your burrito</h1>
<!-- grouped radio inputs are mutually exclusive -->
<label><input type="radio" bind:group={tortilla} value="Plain" /> Plain</label>
<label><input type="radio" bind:group={tortilla} value="Whole wheat" /> Whole wheat</label>
<label><input type="radio" bind:group={tortilla} value="Spinach" /> Spinach</label>
<!-- grouped checkbox inputs populate an array -->
<label><input type="checkbox" bind:group={fillings} value="Rice" /> Rice</label>
<label><input type="checkbox" bind:group={fillings} value="Beans" /> Beans</label>
<label><input type="checkbox" bind:group={fillings} value="Cheese" /> Cheese</label>
<label><input type="checkbox" bind:group={fillings} value="Guac (extra)" /> Guac (extra)</label>
<p>Tortilla: {tortilla}</p>
<p>Fillings: {fillings.join(', ') || 'None'}</p>
<style>
label {
display: block;
}
</style>
```
<!-- codeblock:end -->
> [!NOTE] `bind:group` only works if the inputs are in the same Svelte component.
## `<input bind:files>`
On `<input>` elements with `type="file"`, you can use `bind:files` to get the [`FileList` of selected files](https://developer.mozilla.org/en-US/docs/Web/API/FileList). When you want to update the files programmatically, you always need to use a `FileList` object. Currently `FileList` objects cannot be constructed directly, so you need to create a new [`DataTransfer`](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object and get `files` from there.
```svelte
<script>
let files = $state();
function clear() {
files = new DataTransfer().files; // null or undefined does not work
}
</script>
<label for="avatar">Upload a picture:</label>
<input accept="image/png, image/jpeg" bind:files id="avatar" name="avatar" type="file" />
<button onclick={clear}>clear</button>
```
`FileList` objects also cannot be modified, so if you want to e.g. delete a single file from the list, you need to create a new `DataTransfer` object and add the files you want to keep.
> [!NOTE] `DataTransfer` may not be available in server-side JS runtimes. Leaving the state that is bound to `files` uninitialized prevents potential errors if components are server-side rendered.
## `<select bind:value>`
A `<select>` value binding corresponds to the `value` property on the selected `<option>`, which can be any value (not just strings, as is normally the case in the DOM).
```svelte
<select bind:value={selected}>
<option value={a}>a</option>
<option value={b}>b</option>
<option value={c}>c</option>
</select>
```
A `<select multiple>` element behaves similarly to a checkbox group. The bound variable is an array with an entry corresponding to the `value` property of each selected `<option>`.
```svelte
<select multiple bind:value={fillings}>
<option value="Rice">Rice</option>
<option value="Beans">Beans</option>
<option value="Cheese">Cheese</option>
<option value="Guac (extra)">Guac (extra)</option>
</select>
```
When the value of an `<option>` matches its text content, the attribute can be omitted.
```svelte
<select multiple bind:value={fillings}>
<option>Rice</option>
<option>Beans</option>
<option>Cheese</option>
<option>Guac (extra)</option>
</select>
```
You can give the `<select>` a default value by adding a `selected` attribute to the`<option>` (or options, in the case of `<select multiple>`) that should be initially selected. If the `<select>` is part of a form, it will revert to that selection when the form is reset. Note that for the initial render the value of the binding takes precedence if it's not `undefined`.
```svelte
<select bind:value={selected}>
<option value={a}>a</option>
<option value={b} selected>b</option>
<option value={c}>c</option>
</select>
```
## `<audio>`
`<audio>` elements have their own set of bindings — five two-way ones...
- [`currentTime`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/currentTime)
- [`playbackRate`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/playbackRate)
- [`paused`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/paused)
- [`volume`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/volume)
- [`muted`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/muted)
...and six readonly ones:
- [`duration`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/duration)
- [`buffered`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered)
- [`seekable`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seekable)
- [`seeking`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seeking_event)
- [`ended`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ended)
- [`readyState`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState)
- [`played`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/played)
```svelte
<audio src={clip} bind:duration bind:currentTime bind:paused></audio>
```
## `<video>`
`<video>` elements have all the same bindings as [`<audio>`](#audio) elements, plus readonly [`videoWidth`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement/videoWidth) and [`videoHeight`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement/videoHeight) bindings.
## `<img>`
`<img>` elements have two readonly bindings:
- [`naturalWidth`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalWidth)
- [`naturalHeight`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalHeight)
## `<details bind:open>`
`<details>` elements support binding to the `open` property.
```svelte
<details bind:open={isOpen}>
<summary>How do you comfort a JavaScript bug?</summary>
<p>You console it.</p>
</details>
```
## `window` and `document`
To bind to properties of `window` and `document`, see [`<svelte:window>`](svelte-window) and [`<svelte:document>`](svelte-document).
## Contenteditable bindings
Elements with the `contenteditable` attribute support the following bindings:
- [`innerHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)
- [`innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText)
- [`textContent`](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent)
> [!NOTE] There are [subtle differences between `innerText` and `textContent`](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext).
<!-- for some reason puts the comment and html on same line -->
<!-- prettier-ignore -->
```svelte
<div contenteditable="true" bind:innerHTML={html}></div>
```
## Dimensions
All visible elements have the following readonly bindings, measured with a `ResizeObserver`:
- [`clientWidth`](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth)
- [`clientHeight`](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight)
- [`offsetWidth`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth)
- [`offsetHeight`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight)
- [`contentRect`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentRect)
- [`contentBoxSize`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentBoxSize)
- [`borderBoxSize`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/borderBoxSize)
- [`devicePixelContentBoxSize`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/devicePixelContentBoxSize)
```svelte
<div bind:offsetWidth={width} bind:offsetHeight={height}>
<Chart {width} {height} />
</div>
```
> [!NOTE] `display: inline` elements do not have a width or height (except for elements with 'intrinsic' dimensions, like `<img>` and `<canvas>`), and cannot be observed with a `ResizeObserver`. You will need to change the `display` style of these elements to something else, such as `inline-block`. Note that CSS transformations do not trigger `ResizeObserver` callbacks.
## bind:this
```svelte
<!--- copy: false --->
bind:this={dom_node}
```
To get a reference to a DOM node, use `bind:this`. The value will be `undefined` until the component is mounted — in other words, you should read it inside an effect or an event handler, but not during component initialisation:
```svelte
<script>
/** @type {HTMLCanvasElement} */
let canvas;
$effect(() => {
const ctx = canvas.getContext('2d');
drawStuff(ctx);
});
</script>
<canvas bind:this={canvas}></canvas>
```
Components also support `bind:this`, allowing you to interact with component instances programmatically.
```svelte
<!--- file: App.svelte --->
<ShoppingCart bind:this={cart} />
<button onclick={() => cart.empty()}> Empty shopping cart </button>
```
```svelte
<!--- file: ShoppingCart.svelte --->
<script>
// All instance exports are available on the instance object
export function empty() {
// ...
}
</script>
```
> [!NOTE] In case of using [the function bindings](#Function-bindings), the getter is required to ensure that the correct value is nullified on component or element destruction.
## bind:_property_ for components
```svelte
bind:property={variable}
```
You can bind to component props using the same syntax as for elements.
```svelte
<Keypad bind:value={pin} />
```
While Svelte props are reactive without binding, that reactivity only flows downward into the component by default. Using `bind:property` allows changes to the property from within the component to flow back up out of the component.
To mark a property as bindable, use the [`$bindable`]($bindable) rune:
```svelte
<script>
let { readonlyProperty, bindableProperty = $bindable() } = $props();
</script>
```
Declaring a property as bindable means it _can_ be used using `bind:`, not that it _must_ be used using `bind:`.
Bindable properties can have a fallback value:
```svelte
<script>
let { bindableProperty = $bindable('fallback value') } = $props();
</script>
```
This fallback value _only_ applies when the property is _not_ bound. When the property is bound and a fallback value is present, the parent is expected to provide a value other than `undefined`, else a runtime error is thrown. This prevents hard-to-reason-about situations where it's unclear which value should apply.
================================================
FILE: documentation/docs/03-template-syntax/13-use.md
================================================
---
title: use:
---
> [!NOTE]
> In Svelte 5.29 and newer, consider using [attachments](@attach) instead, as they are more flexible and composable.
Actions are functions that are called when an element is mounted. They are added with the `use:` directive, and will typically use an `$effect` so that they can reset any state when the element is unmounted:
```svelte
<!--- file: App.svelte --->
<script>
/** @type {import('svelte/action').Action} */
function myaction(node) {
// the node has been mounted in the DOM
$effect(() => {
// setup goes here
return () => {
// teardown goes here
};
});
}
</script>
<div use:myaction>...</div>
```
An action can be called with an argument:
```svelte
<!--- file: App.svelte --->
<script>
/** @type {import('svelte/action').Action} */
function myaction(node, +++data+++) {
// ...
}
</script>
<div use:myaction={+++data+++}>...</div>
```
The action is only called once (but not during server-side rendering) — it will _not_ run again if the argument changes.
> [!LEGACY]
> Prior to the `$effect` rune, actions could return an object with `update` and `destroy` methods, where `update` would be called with the latest value of the argument if it changed. Using effects is preferred.
## Typing
The `Action` interface receives three optional type arguments — a node type (which can be `Element`, if the action applies to everything), a parameter, and any custom event handlers created by the action:
```svelte
<!--- file: App.svelte --->
<script>
/**
* @type {import('svelte/action').Action<
* HTMLDivElement,
* undefined,
* {
* onswiperight: (e: CustomEvent) => void;
* onswipeleft: (e: CustomEvent) => void;
* // ...
* }
* >}
*/
function gestures(node) {
$effect(() => {
// ...
node.dispatchEvent(new CustomEvent('swipeleft'));
// ...
node.dispatchEvent(new CustomEvent('swiperight'));
});
}
</script>
<div
use:gestures
onswipeleft={next}
onswiperight={prev}
>...</div>
```
================================================
FILE: documentation/docs/03-template-syntax/14-transition.md
================================================
---
title: transition:
tags: transitions
---
A _transition_ is triggered by an element entering or leaving the DOM as a result of a state change.
When a block (such as an `{#if ...}` block) is transitioning out, all elements inside it, including those that do not have their own transitions, are kept in the DOM until every transition in the block has been completed.
The `transition:` directive indicates a _bidirectional_ transition, which means it can be smoothly reversed while the transition is in progress.
```svelte
<script>
+++import { fade } from 'svelte/transition';+++
let visible = $state(false);
</script>
<button onclick={() => visible = !visible}>toggle</button>
{#if visible}
<div +++transition:fade+++>fades in and out</div>
{/if}
```
## Local vs global
Transitions are local by default. Local transitions only play when the block they belong to is created or destroyed, _not_ when parent blocks are created or destroyed.
```svelte
{#if x}
{#if y}
<p transition:fade>fades in and out only when y changes</p>
<p transition:fade|global>fades in and out when x or y change</p>
{/if}
{/if}
```
## Built-in transitions
A selection of built-in transitions can be imported from the [`svelte/transition`](svelte-transition) module.
## Transition parameters
Transitions can have parameters.
(The double `{{curlies}}` aren't a special syntax; this is an object literal inside an expression tag.)
```svelte
{#if visible}
<div transition:fade={{ duration: 2000 }}>fades in and out over two seconds</div>
{/if}
```
## Custom transition functions
```js
/// copy: false
// @noErrors
transition = (node: HTMLElement, params: any, options: { direction: 'in' | 'out' | 'both' }) => {
delay?: number,
duration?: number,
easing?: (t: number) => number,
css?: (t: number, u: number) => string,
tick?: (t: number, u: number) => void
}
```
Transitions can use custom functions. If the returned object has a `css` function, Svelte will generate keyframes for a [web animation](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).
The `t` argument passed to `css` is a value between `0` and `1` after the `easing` function has been applied. _In_ transitions run from `0` to `1`, _out_ transitions run from `1` to `0` — in other words, `1` is the element's natural state, as though no transition had been applied. The `u` argument is equal to `1 - t`.
The function is called repeatedly _before_ the transition begins, with different `t` and `u` arguments.
```svelte
<!--- file: App.svelte --->
<script>
import { elasticOut } from 'svelte/easing';
/** @type {boolean} */
export let visible;
/**
* @param {HTMLElement} node
* @param {{ delay?: number, duration?: number, easing?: (t: number) => number }} params
*/
function whoosh(node, params) {
const existingTransform = getComputedStyle(node).transform.replace('none', '');
return {
delay: params.delay || 0,
duration: params.duration || 400,
easing: params.easing || elasticOut,
css: (t, u) => `transform: ${existingTransform} scale(${t})`
};
}
</script>
{#if visible}
<div in:whoosh>whooshes in</div>
{/if}
```
A custom transition function can also return a `tick` function, which is called _during_ the transition with the same `t` and `u` arguments.
> [!NOTE] If it's possible to use `css` instead of `tick`, do so — web animations can run off the main thread, preventing jank on slower devices.
```svelte
<!--- file: App.svelte --->
<script>
export let visible = false;
/**
* @param {HTMLElement} node
* @param {{ speed?: number }} params
*/
function typewriter(node, { speed = 1 }) {
const valid = node.childNodes.length === 1 && node.childNodes[0].nodeType === Node.TEXT_NODE;
if (!valid) {
throw new Error(`This transition only works on elements with a single text node child`);
}
const text = node.textContent;
const duration = text.length / (speed * 0.01);
return {
duration,
tick: (t) => {
const i = ~~(text.length * t);
node.textContent = text.slice(0, i);
}
};
}
</script>
{#if visible}
<p in:typewriter={{ speed: 1 }}>The quick brown fox jumps over the lazy dog</p>
{/if}
```
If a transition returns a function instead of a transition object, the function will be called in the next microtask. This allows multiple transitions to coordinate, making [crossfade effects](/tutorial/deferred-transitions) possible.
Transition functions also receive a third argument, `options`, which contains information about the transition.
Available values in the `options` object are:
- `direction` - one of `in`, `out`, or `both` depending on the type of transition
## Transition events
An element with transitions will dispatch the following events in addition to any standard DOM events:
- `introstart`
- `introend`
- `outrostart`
- `outroend`
```svelte
{#if visible}
<p
transition:fly={{ y: 200, duration: 2000 }}
onintrostart={() => (status = 'intro started')}
onoutrostart={() => (status = 'outro started')}
onintroend={() => (status = 'intro ended')}
onoutroend={() => (status = 'outro ended')}
>
Flies in and out
</p>
{/if}
```
================================================
FILE: documentation/docs/03-template-syntax/15-in-and-out.md
================================================
---
title: in: and out:
tags: transitions
---
The `in:` and `out:` directives are identical to [`transition:`](transition), except that the resulting transitions are not bidirectional — an `in` transition will continue to 'play' alongside the `out` transition, rather than reversing, if the block is outroed while the transition is in progress. If an out transition is aborted, transitions will restart from scratch.
```svelte
<script>
import { fade, fly } from 'svelte/transition';
let visible = $state(false);
</script>
<label>
<input type="checkbox" bind:checked={visible}>
visible
</label>
{#if visible}
<div in:fly={{ y: 200 }} out:fade>flies in, fades out</div>
{/if}
```
================================================
FILE: documentation/docs/03-template-syntax/16-animate.md
================================================
---
title: animate:
---
An animation is triggered when the contents of a [keyed each block](each#Keyed-each-blocks) are re-ordered. Animations do not run when an element is added or removed, only when the index of an existing data item within the each block changes. Animate directives must be on an element that is an _immediate_ child of a keyed each block.
Animations can be used with Svelte's [built-in animation functions](svelte-animate) or [custom animation functions](#Custom-animation-functions).
```svelte
<!-- When `list` is reordered the animation will run -->
{#each list as item, index (item)}
<li animate:flip>{item}</li>
{/each}
```
## Animation Parameters
As with actions and transitions, animations can have parameters.
(The double `{{curlies}}` aren't a special syntax; this is an object literal inside an expression tag.)
```svelte
{#each list as item, index (item)}
<li animate:flip={{ delay: 500 }}>{item}</li>
{/each}
```
## Custom animation functions
```js
/// copy: false
// @noErrors
animation = (node: HTMLElement, { from: DOMRect, to: DOMRect } , params: any) => {
delay?: number,
duration?: number,
easing?: (t: number) => number,
css?: (t: number, u: number) => string,
tick?: (t: number, u: number) => void
}
```
Animations can use custom functions that provide the `node`, an `animation` object and any `parameters` as arguments. The `animation` parameter is an object containing `from` and `to` properties each containing a [DOMRect](https://developer.mozilla.org/en-US/docs/Web/API/DOMRect#Properties) describing the geometry of the element in its `start` and `end` positions. The `from` property is the DOMRect of the element in its starting position, and the `to` property is the DOMRect of the element in its final position after the list has been reordered and the DOM updated.
If the returned object has a `css` method, Svelte will create a [web animation](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) that plays on the element.
The `t` argument passed to `css` is a value that goes from `0` and `1` after the `easing` function has been applied. The `u` argument is equal to `1 - t`.
The function is called repeatedly _before_ the animation begins, with different `t` and `u` arguments.
<!-- TODO: Types -->
```svelte
<!--- file: App.svelte --->
<script>
import { cubicOut } from 'svelte/easing';
/**
* @param {HTMLElement} node
* @param {{ from: DOMRect; to: DOMRect }} states
* @param {any} params
*/
function whizz(node, { from, to }, params) {
const dx = from.left - to.left;
const dy = from.top - to.top;
const d = Math.sqrt(dx * dx + dy * dy);
return {
delay: 0,
duration: Math.sqrt(d) * 120,
easing: cubicOut,
css: (t, u) => `transform: translate(${u * dx}px, ${u * dy}px) rotate(${t * 360}deg);`
};
}
</script>
{#each list as item, index (item)}
<div animate:whizz>{item}</div>
{/each}
```
A custom animation function can also return a `tick` function, which is called _during_ the animation with the same `t` and `u` arguments.
> [!NOTE] If it's possible to use `css` instead of `tick`, do so — web animations can run off the main thread, preventing jank on slower devices.
```svelte
<!--- file: App.svelte --->
<script>
import { cubicOut } from 'svelte/easing';
/**
* @param {HTMLElement} node
* @param {{ from: DOMRect; to: DOMRect }} states
* @param {any} params
*/
function whizz(node, { from, to }, params) {
const dx = from.left - to.left;
const dy = from.top - to.top;
const d = Math.sqrt(dx * dx + dy * dy);
return {
delay: 0,
duration: Math.sqrt(d) * 120,
easing: cubicOut,
tick: (t, u) => Object.assign(node.style, { color: t > 0.5 ? 'Pink' : 'Blue' })
};
}
</script>
{#each list as item, index (item)}
<div animate:whizz>{item}</div>
{/each}
```
================================================
FILE: documentation/docs/03-template-syntax/17-style.md
================================================
---
title: style:
tags: template-style
---
The `style:` directive provides a shorthand for setting multiple styles on an element.
```svelte
<!-- These are equivalent -->
<div style:color="red">...</div>
<div style="color: red;">...</div>
```
The value can contain arbitrary expressions:
```svelte
<div style:color={myColor}>...</div>
```
The shorthand form is allowed:
```svelte
<div style:color>...</div>
```
Multiple styles can be set on a single element:
```svelte
<div style:color style:width="12rem" style:background-color={darkMode ? 'black' : 'white'}>...</div>
```
To mark a style as important, use the `|important` modifier:
```svelte
<div style:color|important="red">...</div>
```
When `style:` directives are combined with `style` attributes, the directives will take precedence,
even over `!important` properties:
```svelte
<div style:color="red" style="color: blue">This will be red</div>
<div style:color="red" style="color: blue !important">This will still be red</div>
```
================================================
FILE: documentation/docs/03-template-syntax/18-class.md
================================================
---
title: class
tags: template-style
---
There are two ways to set classes on elements: the `class` attribute, and the `class:` directive.
## Attributes
Primitive values are treated like any other attribute:
```svelte
<div class={large ? 'large' : 'small'}>...</div>
```
> [!NOTE]
> For historical reasons, falsy values (like `false` and `NaN`) are stringified (`class="false"`), though `class={undefined}` (or `null`) cause the attribute to be omitted altogether. In a future version of Svelte, all falsy values will cause `class` to be omitted.
### Objects and arrays
Since Svelte 5.16, `class` can be an object or array, and is converted to a string using [clsx](https://github.com/lukeed/clsx).
If the value is an object, the truthy keys are added:
```svelte
<script>
let { cool } = $props();
</script>
<!-- results in `class="cool"` if `cool` is truthy,
`class="lame"` otherwise -->
<div class={{ cool, lame: !cool }}>...</div>
```
If the value is an array, the truthy values are combined:
```svelte
<!-- if `faded` and `large` are both truthy, results in
`class="saturate-0 opacity-50 scale-200"` -->
<div class={[faded && 'saturate-0 opacity-50', large && 'scale-200']}>...</div>
```
Note that whether we're using the array or object form, we can set multiple classes simultaneously with a single condition, which is particularly useful if you're using things like Tailwind.
Arrays can contain arrays and objects, and clsx will flatten them. This is useful for combining local classes with props, for example:
```svelte
<!--- file: Button.svelte --->
<script>
let props = $props();
</script>
<button {...props} class={['cool-button', props.class]}>
{@render props.children?.()}
</button>
```
The user of this component has the same flexibility to use a mixture of objects, arrays and strings:
```svelte
<!--- file: App.svelte --->
<script>
import Button from './Button.svelte';
let useTailwind = $state(false);
</script>
<Button
onclick={() => useTailwind = true}
class={{ 'bg-blue-700 sm:w-1/2': useTailwind }}
>
Accept the inevitability of Tailwind
</Button>
```
Since Svelte 5.19, Svelte also exposes the `ClassValue` type, which is the type of value that the `class` attribute on elements accept. This is useful if you want to use a type-safe class name in component props:
```svelte
<script lang="ts">
import type { ClassValue } from 'svelte/elements';
const props: { class: ClassValue } = $props();
</script>
<div class={['original', props.class]}>...</div>
```
## The `class:` directive
Prior to Svelte 5.16, the `class:` directive was the most convenient way to set classes on elements conditionally.
```svelte
<!-- These are equivalent -->
<div class={{ cool, lame: !cool }}>...</div>
<div class:cool={cool} class:lame={!cool}>...</div>
```
As with other directives, we can use a shorthand when the name of the class coincides with the value:
```svelte
<div class:cool class:lame={!cool}>...</div>
```
> [!NOTE] Unless you're using an older version of Svelte, consider avoiding `class:`, since the attribute is more powerful and composable.
================================================
FILE: documentation/docs/03-template-syntax/19-await-expressions.md
================================================
---
title: await
---
As of Svelte 5.36, you can use the `await` keyword inside your components in three places where it was previously unavailable:
- at the top level of your component's `<script>`
- inside `$derived(...)` declarations
- inside your markup
This feature is currently experimental, and you must opt in by adding the `experimental.async` option wherever you [configure](/docs/kit/configuration) Svelte, usually `svelte.config.js`:
```js
/// file: svelte.config.js
export default {
compilerOptions: {
experimental: {
async: true
}
}
};
```
The experimental flag will be removed in Svelte 6.
## Synchronized updates
When an `await` expression depends on a particular piece of state, changes to that state will not be reflected in the UI until the asynchronous work has completed, so that the UI is not left in an inconsistent state. In other words, in an example like this...
<!-- codeblock:start {"title":"Synchronized updates"} -->
```svelte
<!--- file: App.svelte --->
<script>
let a = $state(1);
let b = $state(2);
async function add(a, b) {
await new Promise((f) => setTimeout(f, 500)); // artificial delay
return a + b;
}
</script>
<input type="number" bind:value={a}>
<input type="number" bind:value={b}>
<p>{a} + {b} = {await add(a, b)}</p>
```
<!-- codeblock:end -->
...if you increment `a`, the contents of the `<p>` will _not_ immediately update to read this —
```html
<p>2 + 2 = 3</p>
```
— instead, the text will update to `2 + 2 = 4` when `add(a, b)` resolves.
Updates can overlap — a fast update will be reflected in the UI while an earlier slow update is still ongoing.
## Concurrency
Svelte will do as much asynchronous work as it can in parallel. For example if you have two `await` expressions in your markup...
```svelte
<p>{await one(x)}</p>
<p>{await two(y)}</p>
```
...both functions will run at the same time, as they are independent expressions, even though they are _visually_ sequential.
This does not apply to sequential `await` expressions inside your `<script>` or inside async functions — these run like any other asynchronous JavaScript. An exception is that independent `$derived` expressions will update independently, even though they will run sequentially when they are first created:
```js
/** @param {number} x */
async function one(x) { return x; }
/** @param {number} y */
async function two(y) { return y; }
let x = $state(1);
let y = $state(2);
// ---cut---
// `b` will not be created until `a` has resolved,
// but once created they will update independently
// even if `x` and `y` update simultaneously
let a = $derived(await one(x));
let b = $derived(await two(y));
```
> [!NOTE] If you write code like this, expect Svelte to give you an [`await_waterfall`](runtime-warnings#Client-warnings-await_waterfall) warning
## Indicating loading states
To render placeholder UI, you can wrap content in a `<svelte:boundary>` with a [`pending`](svelte-boundary#Properties-pending) snippet. This will be shown when the boundary is first created, but not for subsequent updates, which are globally coordinated.
After the contents of a boundary have resolved for the first time and have replaced the `pending` snippet, you can detect subsequent async work with [`$effect.pending()`]($effect#$effect.pending). This is what you would use to display a "we're asynchronously validating your input" spinner next to a form field, for example.
You can also use [`settled()`](svelte#settled) to get a promise that resolves when the current update is complete:
```js
let color = 'red';
let answer = -1;
let updating = false;
// ---cut---
import { tick, settled } from 'svelte';
async function onclick() {
updating = true;
// without this, the change to `updating` will be
// grouped with the other changes, meaning it
// won't be reflected in the UI
await tick();
color = 'octarine';
answer = 42;
await settled();
// any updates affected by `color` or `answer`
// have now been applied
updating = false;
}
```
## Error handling
Errors in `await` expressions will bubble to the nearest [error boundary](svelte-boundary).
## Server-side rendering
Svelte supports asynchronous server-side rendering (SSR) with the `render(...)` API. To use it, simply await the return value:
```js
/// file: server.js
import { render } from 'svelte/server';
import App from './App.svelte';
const { head, body } = +++await+++ render(App);
```
> [!NOTE] If you're using a framework like SvelteKit, this is done on your behalf.
If a `<svelte:boundary>` with a `pending` snippet is encountered during SSR, that snippet will be rendered while the rest of the content is ignored. All `await` expressions encountered outside boundaries with `pending` snippets will resolve and render their contents prior to `await render(...)` returning.
> [!NOTE] In the future, we plan to add a streaming implementation that renders the content in the background.
## Forking
The [`fork(...)`](svelte#fork) API, added in 5.42, makes it possible to run `await` expressions that you _expect_ to happen in the near future. This is mainly intended for frameworks like SvelteKit to implement preloading when (for example) users signal an intent to navigate.
```svelte
<script>
import { fork } from 'svelte';
import Menu from './Menu.svelte';
let open = $state(false);
/** @type {import('svelte').Fork | null} */
let pending = null;
function preload() {
pending ??= fork(() => {
open = true;
});
}
function discard() {
pending?.discard();
pending = null;
}
</script>
<button
onfocusin={preload}
onfocusout={discard}
onpointerenter={preload}
onpointerleave={discard}
onclick={() => {
pending?.commit();
pending = null;
// in case `pending` didn't exist
// (if it did, this is a no-op)
open = true;
}}
>open menu</button>
{#if open}
<!-- any async work inside this component will start
as soon as the fork is created -->
<Menu onclose={() => open = false} />
{/if}
```
## Caveats
As an experimental feature, the details of how `await` is handled (and related APIs like `$effect.pending()`) are subject to breaking changes outside of a semver major release, though we intend to keep such changes to a bare minimum.
## Breaking changes
Effects run in a slightly different order when the `experimental.async` option is `true`. Specifically, _block_ effects like `{#if ...}` and `{#each ...}` now run before an `$effect.pre` or `beforeUpdate` in the same c
Showing preview only (712K chars total). Download the full file or copy to clipboard to get everything.
gitextract_a0sp9qlx/ ├── .changeset/ │ ├── README.md │ ├── config.json │ ├── const-tags.md │ ├── evil-chicken-attend.md │ └── orange-geckos-rest.md ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── autofix.yml │ ├── ci.yml │ ├── ecosystem-ci-trigger.yml │ ├── pkg.pr.new.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode/ │ ├── launch.json │ └── settings.json ├── .well-known/ │ └── funding-manifest-urls ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE.md ├── README.md ├── benchmarking/ │ ├── .gitignore │ ├── benchmarks/ │ │ ├── reactivity/ │ │ │ ├── index.js │ │ │ ├── sbench.js │ │ │ ├── tests/ │ │ │ │ ├── kairo_avoidable.bench.js │ │ │ │ ├── kairo_broad.bench.js │ │ │ │ ├── kairo_deep.bench.js │ │ │ │ ├── kairo_diamond.bench.js │ │ │ │ ├── kairo_mux.bench.js │ │ │ │ ├── kairo_repeated.bench.js │ │ │ │ ├── kairo_triangle.bench.js │ │ │ │ ├── kairo_unstable.bench.js │ │ │ │ ├── mol.bench.js │ │ │ │ └── repeated_deps.bench.js │ │ │ └── util.js │ │ └── ssr/ │ │ ├── index.js │ │ └── wrapper/ │ │ ├── App.svelte │ │ └── wrapper_bench.js │ ├── compare/ │ │ ├── index.js │ │ └── runner.js │ ├── run.js │ ├── tsconfig.json │ └── utils.js ├── documentation/ │ └── docs/ │ ├── 01-introduction/ │ │ ├── 01-overview.md │ │ ├── 02-getting-started.md │ │ ├── 03-svelte-files.md │ │ ├── 04-svelte-js-files.md │ │ └── index.md │ ├── 02-runes/ │ │ ├── 01-what-are-runes.md │ │ ├── 02-$state.md │ │ ├── 03-$derived.md │ │ ├── 04-$effect.md │ │ ├── 05-$props.md │ │ ├── 06-$bindable.md │ │ ├── 07-$inspect.md │ │ ├── 08-$host.md │ │ └── index.md │ ├── 03-template-syntax/ │ │ ├── 01-basic-markup.md │ │ ├── 02-if.md │ │ ├── 03-each.md │ │ ├── 04-key.md │ │ ├── 05-await.md │ │ ├── 06-snippet.md │ │ ├── 07-@render.md │ │ ├── 08-@html.md │ │ ├── 09-@attach.md │ │ ├── 10-@const.md │ │ ├── 11-@debug.md │ │ ├── 12-bind.md │ │ ├── 13-use.md │ │ ├── 14-transition.md │ │ ├── 15-in-and-out.md │ │ ├── 16-animate.md │ │ ├── 17-style.md │ │ ├── 18-class.md │ │ ├── 19-await-expressions.md │ │ └── index.md │ ├── 04-styling/ │ │ ├── 01-scoped-styles.md │ │ ├── 02-global-styles.md │ │ ├── 03-custom-properties.md │ │ ├── 04-nested-style-elements.md │ │ └── index.md │ ├── 05-special-elements/ │ │ ├── 01-svelte-boundary.md │ │ ├── 02-svelte-window.md │ │ ├── 03-svelte-document.md │ │ ├── 04-svelte-body.md │ │ ├── 05-svelte-head.md │ │ ├── 06-svelte-element.md │ │ ├── 07-svelte-options.md │ │ └── index.md │ ├── 06-runtime/ │ │ ├── 01-stores.md │ │ ├── 02-context.md │ │ ├── 03-lifecycle-hooks.md │ │ ├── 04-imperative-component-api.md │ │ ├── 05-hydratable.md │ │ └── index.md │ ├── 07-misc/ │ │ ├── 01-best-practices.md │ │ ├── 02-testing.md │ │ ├── 03-typescript.md │ │ ├── 04-custom-elements.md │ │ ├── 06-v4-migration-guide.md │ │ ├── 07-v5-migration-guide.md │ │ ├── 99-faq.md │ │ └── index.md │ ├── 98-reference/ │ │ ├── .generated/ │ │ │ ├── client-errors.md │ │ │ ├── client-warnings.md │ │ │ ├── compile-errors.md │ │ │ ├── compile-warnings.md │ │ │ ├── server-errors.md │ │ │ ├── server-warnings.md │ │ │ ├── shared-errors.md │ │ │ └── shared-warnings.md │ │ ├── 20-svelte.md │ │ ├── 21-svelte-action.md │ │ ├── 21-svelte-animate.md │ │ ├── 21-svelte-attachments.md │ │ ├── 21-svelte-compiler.md │ │ ├── 21-svelte-easing.md │ │ ├── 21-svelte-events.md │ │ ├── 21-svelte-legacy.md │ │ ├── 21-svelte-motion.md │ │ ├── 21-svelte-reactivity-window.md │ │ ├── 21-svelte-reactivity.md │ │ ├── 21-svelte-server.md │ │ ├── 21-svelte-store.md │ │ ├── 21-svelte-transition.md │ │ ├── 30-compiler-errors.md │ │ ├── 30-compiler-warnings.md │ │ ├── 30-runtime-errors.md │ │ ├── 30-runtime-warnings.md │ │ └── index.md │ ├── 99-legacy/ │ │ ├── 00-legacy-overview.md │ │ ├── 01-legacy-let.md │ │ ├── 02-legacy-reactive-assignments.md │ │ ├── 03-legacy-export-let.md │ │ ├── 04-legacy-$$props-and-$$restProps.md │ │ ├── 10-legacy-on.md │ │ ├── 20-legacy-slots.md │ │ ├── 21-legacy-$$slots.md │ │ ├── 22-legacy-svelte-fragment.md │ │ ├── 30-legacy-svelte-component.md │ │ ├── 31-legacy-svelte-self.md │ │ ├── 40-legacy-component-api.md │ │ └── index.md │ └── index.md ├── eslint.config.js ├── package.json ├── packages/ │ └── svelte/ │ ├── .gitignore │ ├── CHANGELOG-pre-5.md │ ├── CHANGELOG.md │ ├── README.md │ ├── compiler/ │ │ └── package.json │ ├── elements.d.ts │ ├── knip.json │ ├── messages/ │ │ ├── client-errors/ │ │ │ └── errors.md │ │ ├── client-warnings/ │ │ │ └── warnings.md │ │ ├── compile-errors/ │ │ │ ├── options.md │ │ │ ├── script.md │ │ │ ├── style.md │ │ │ └── template.md │ │ ├── compile-warnings/ │ │ │ ├── a11y.md │ │ │ ├── misc.md │ │ │ ├── options.md │ │ │ ├── script.md │ │ │ ├── style.md │ │ │ └── template.md │ │ ├── server-errors/ │ │ │ └── errors.md │ │ ├── server-warnings/ │ │ │ └── warnings.md │ │ ├── shared-errors/ │ │ │ └── errors.md │ │ └── shared-warnings/ │ │ └── warnings.md │ ├── package.json │ ├── rollup.config.js │ ├── scripts/ │ │ ├── check-treeshakeability.js │ │ ├── generate-types.js │ │ ├── generate-version.js │ │ └── process-messages/ │ │ ├── index.js │ │ └── templates/ │ │ ├── client-errors.js │ │ ├── client-warnings.js │ │ ├── compile-errors.js │ │ ├── compile-warnings.js │ │ ├── server-errors.js │ │ ├── server-warnings.js │ │ ├── shared-errors.js │ │ └── shared-warnings.js │ ├── src/ │ │ ├── action/ │ │ │ └── public.d.ts │ │ ├── ambient.d.ts │ │ ├── animate/ │ │ │ ├── index.js │ │ │ └── public.d.ts │ │ ├── attachments/ │ │ │ ├── index.js │ │ │ └── public.d.ts │ │ ├── compiler/ │ │ │ ├── errors.js │ │ │ ├── index.js │ │ │ ├── legacy.js │ │ │ ├── migrate/ │ │ │ │ └── index.js │ │ │ ├── phases/ │ │ │ │ ├── 1-parse/ │ │ │ │ │ ├── acorn.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── read/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── expression.js │ │ │ │ │ │ ├── options.js │ │ │ │ │ │ ├── script.js │ │ │ │ │ │ └── style.js │ │ │ │ │ ├── remove_typescript_nodes.js │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ ├── fragment.js │ │ │ │ │ │ ├── tag.js │ │ │ │ │ │ └── text.js │ │ │ │ │ └── utils/ │ │ │ │ │ ├── bracket.js │ │ │ │ │ ├── create.js │ │ │ │ │ ├── entities.js │ │ │ │ │ ├── fuzzymatch.js │ │ │ │ │ └── html.js │ │ │ │ ├── 2-analyze/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── css-analyze.js │ │ │ │ │ │ ├── css-prune.js │ │ │ │ │ │ ├── css-warn.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── types.d.ts │ │ │ │ │ ├── utils/ │ │ │ │ │ │ └── check_graph_for_cycles.js │ │ │ │ │ └── visitors/ │ │ │ │ │ ├── AnimateDirective.js │ │ │ │ │ ├── ArrowFunctionExpression.js │ │ │ │ │ ├── AssignmentExpression.js │ │ │ │ │ ├── AttachTag.js │ │ │ │ │ ├── Attribute.js │ │ │ │ │ ├── AwaitBlock.js │ │ │ │ │ ├── AwaitExpression.js │ │ │ │ │ ├── BindDirective.js │ │ │ │ │ ├── CallExpression.js │ │ │ │ │ ├── ClassBody.js │ │ │ │ │ ├── ClassDeclaration.js │ │ │ │ │ ├── ClassDirective.js │ │ │ │ │ ├── Component.js │ │ │ │ │ ├── ConstTag.js │ │ │ │ │ ├── DebugTag.js │ │ │ │ │ ├── EachBlock.js │ │ │ │ │ ├── ExportDefaultDeclaration.js │ │ │ │ │ ├── ExportNamedDeclaration.js │ │ │ │ │ ├── ExportSpecifier.js │ │ │ │ │ ├── ExpressionStatement.js │ │ │ │ │ ├── ExpressionTag.js │ │ │ │ │ ├── Fragment.js │ │ │ │ │ ├── FunctionDeclaration.js │ │ │ │ │ ├── FunctionExpression.js │ │ │ │ │ ├── HtmlTag.js │ │ │ │ │ ├── Identifier.js │ │ │ │ │ ├── IfBlock.js │ │ │ │ │ ├── ImportDeclaration.js │ │ │ │ │ ├── KeyBlock.js │ │ │ │ │ ├── LabeledStatement.js │ │ │ │ │ ├── LetDirective.js │ │ │ │ │ ├── Literal.js │ │ │ │ │ ├── MemberExpression.js │ │ │ │ │ ├── NewExpression.js │ │ │ │ │ ├── OnDirective.js │ │ │ │ │ ├── PropertyDefinition.js │ │ │ │ │ ├── RegularElement.js │ │ │ │ │ ├── RenderTag.js │ │ │ │ │ ├── SlotElement.js │ │ │ │ │ ├── SnippetBlock.js │ │ │ │ │ ├── SpreadAttribute.js │ │ │ │ │ ├── SpreadElement.js │ │ │ │ │ ├── StyleDirective.js │ │ │ │ │ ├── SvelteBody.js │ │ │ │ │ ├── SvelteBoundary.js │ │ │ │ │ ├── SvelteComponent.js │ │ │ │ │ ├── SvelteDocument.js │ │ │ │ │ ├── SvelteElement.js │ │ │ │ │ ├── SvelteFragment.js │ │ │ │ │ ├── SvelteHead.js │ │ │ │ │ ├── SvelteSelf.js │ │ │ │ │ ├── SvelteWindow.js │ │ │ │ │ ├── TaggedTemplateExpression.js │ │ │ │ │ ├── TemplateElement.js │ │ │ │ │ ├── Text.js │ │ │ │ │ ├── TitleElement.js │ │ │ │ │ ├── TransitionDirective.js │ │ │ │ │ ├── UpdateExpression.js │ │ │ │ │ ├── UseDirective.js │ │ │ │ │ ├── VariableDeclarator.js │ │ │ │ │ └── shared/ │ │ │ │ │ ├── a11y/ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── attribute.js │ │ │ │ │ ├── component.js │ │ │ │ │ ├── element.js │ │ │ │ │ ├── fragment.js │ │ │ │ │ ├── function.js │ │ │ │ │ ├── snippets.js │ │ │ │ │ ├── special-element.js │ │ │ │ │ └── utils.js │ │ │ │ ├── 3-transform/ │ │ │ │ │ ├── client/ │ │ │ │ │ │ ├── transform-client.js │ │ │ │ │ │ ├── transform-template/ │ │ │ │ │ │ │ ├── fix-attribute-casing.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── template.js │ │ │ │ │ │ │ └── types.d.ts │ │ │ │ │ │ ├── types.d.ts │ │ │ │ │ │ ├── utils.js │ │ │ │ │ │ └── visitors/ │ │ │ │ │ │ ├── AnimateDirective.js │ │ │ │ │ │ ├── ArrowFunctionExpression.js │ │ │ │ │ │ ├── AssignmentExpression.js │ │ │ │ │ │ ├── AttachTag.js │ │ │ │ │ │ ├── Attribute.js │ │ │ │ │ │ ├── AwaitBlock.js │ │ │ │ │ │ ├── AwaitExpression.js │ │ │ │ │ │ ├── BinaryExpression.js │ │ │ │ │ │ ├── BindDirective.js │ │ │ │ │ │ ├── BlockStatement.js │ │ │ │ │ │ ├── BreakStatement.js │ │ │ │ │ │ ├── CallExpression.js │ │ │ │ │ │ ├── ClassBody.js │ │ │ │ │ │ ├── Comment.js │ │ │ │ │ │ ├── Component.js │ │ │ │ │ │ ├── ConstTag.js │ │ │ │ │ │ ├── DebugTag.js │ │ │ │ │ │ ├── EachBlock.js │ │ │ │ │ │ ├── ExportNamedDeclaration.js │ │ │ │ │ │ ├── ExpressionStatement.js │ │ │ │ │ │ ├── ForOfStatement.js │ │ │ │ │ │ ├── Fragment.js │ │ │ │ │ │ ├── FunctionDeclaration.js │ │ │ │ │ │ ├── FunctionExpression.js │ │ │ │ │ │ ├── HtmlTag.js │ │ │ │ │ │ ├── Identifier.js │ │ │ │ │ │ ├── IfBlock.js │ │ │ │ │ │ ├── KeyBlock.js │ │ │ │ │ │ ├── LabeledStatement.js │ │ │ │ │ │ ├── LetDirective.js │ │ │ │ │ │ ├── MemberExpression.js │ │ │ │ │ │ ├── OnDirective.js │ │ │ │ │ │ ├── Program.js │ │ │ │ │ │ ├── RegularElement.js │ │ │ │ │ │ ├── RenderTag.js │ │ │ │ │ │ ├── SlotElement.js │ │ │ │ │ │ ├── SnippetBlock.js │ │ │ │ │ │ ├── SpreadAttribute.js │ │ │ │ │ │ ├── SvelteBody.js │ │ │ │ │ │ ├── SvelteBoundary.js │ │ │ │ │ │ ├── SvelteComponent.js │ │ │ │ │ │ ├── SvelteDocument.js │ │ │ │ │ │ ├── SvelteElement.js │ │ │ │ │ │ ├── SvelteFragment.js │ │ │ │ │ │ ├── SvelteHead.js │ │ │ │ │ │ ├── SvelteSelf.js │ │ │ │ │ │ ├── SvelteWindow.js │ │ │ │ │ │ ├── TitleElement.js │ │ │ │ │ │ ├── TransitionDirective.js │ │ │ │ │ │ ├── UpdateExpression.js │ │ │ │ │ │ ├── UseDirective.js │ │ │ │ │ │ ├── VariableDeclaration.js │ │ │ │ │ │ └── shared/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── declarations.js │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ ├── events.js │ │ │ │ │ │ ├── fragment.js │ │ │ │ │ │ ├── function.js │ │ │ │ │ │ ├── special_element.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── server/ │ │ │ │ │ │ ├── transform-server.js │ │ │ │ │ │ ├── types.d.ts │ │ │ │ │ │ └── visitors/ │ │ │ │ │ │ ├── AssignmentExpression.js │ │ │ │ │ │ ├── AwaitBlock.js │ │ │ │ │ │ ├── AwaitExpression.js │ │ │ │ │ │ ├── CallExpression.js │ │ │ │ │ │ ├── ClassBody.js │ │ │ │ │ │ ├── Component.js │ │ │ │ │ │ ├── ConstTag.js │ │ │ │ │ │ ├── DebugTag.js │ │ │ │ │ │ ├── EachBlock.js │ │ │ │ │ │ ├── ExpressionStatement.js │ │ │ │ │ │ ├── Fragment.js │ │ │ │ │ │ ├── HtmlTag.js │ │ │ │ │ │ ├── Identifier.js │ │ │ │ │ │ ├── IfBlock.js │ │ │ │ │ │ ├── KeyBlock.js │ │ │ │ │ │ ├── LabeledStatement.js │ │ │ │ │ │ ├── MemberExpression.js │ │ │ │ │ │ ├── Program.js │ │ │ │ │ │ ├── PropertyDefinition.js │ │ │ │ │ │ ├── RegularElement.js │ │ │ │ │ │ ├── RenderTag.js │ │ │ │ │ │ ├── SlotElement.js │ │ │ │ │ │ ├── SnippetBlock.js │ │ │ │ │ │ ├── SpreadAttribute.js │ │ │ │ │ │ ├── SvelteBoundary.js │ │ │ │ │ │ ├── SvelteComponent.js │ │ │ │ │ │ ├── SvelteElement.js │ │ │ │ │ │ ├── SvelteFragment.js │ │ │ │ │ │ ├── SvelteHead.js │ │ │ │ │ │ ├── SvelteSelf.js │ │ │ │ │ │ ├── TitleElement.js │ │ │ │ │ │ ├── UpdateExpression.js │ │ │ │ │ │ ├── VariableDeclaration.js │ │ │ │ │ │ └── shared/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── assignments.js │ │ │ │ │ │ └── transform-async.js │ │ │ │ │ ├── types.d.ts │ │ │ │ │ └── utils.js │ │ │ │ ├── bindings.js │ │ │ │ ├── css.js │ │ │ │ ├── nodes.js │ │ │ │ ├── patterns.js │ │ │ │ ├── scope.js │ │ │ │ └── types.d.ts │ │ │ ├── preprocess/ │ │ │ │ ├── decode_sourcemap.js │ │ │ │ ├── index.js │ │ │ │ ├── legacy-public.d.ts │ │ │ │ ├── private.d.ts │ │ │ │ ├── public.d.ts │ │ │ │ └── replace_in_code.js │ │ │ ├── print/ │ │ │ │ ├── index.js │ │ │ │ └── types.d.ts │ │ │ ├── private.d.ts │ │ │ ├── public.d.ts │ │ │ ├── state.js │ │ │ ├── types/ │ │ │ │ ├── css.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── legacy-interfaces.d.ts │ │ │ │ ├── legacy-nodes.d.ts │ │ │ │ └── template.d.ts │ │ │ ├── utils/ │ │ │ │ ├── assert.js │ │ │ │ ├── ast.js │ │ │ │ ├── builders.js │ │ │ │ ├── compile_diagnostic.js │ │ │ │ ├── extract_svelte_ignore.js │ │ │ │ ├── mapped_code.js │ │ │ │ ├── push_array.js │ │ │ │ ├── sanitize_template_string.js │ │ │ │ ├── slot.js │ │ │ │ └── string.js │ │ │ ├── validate-options.js │ │ │ └── warnings.js │ │ ├── constants.js │ │ ├── easing/ │ │ │ └── index.js │ │ ├── escaping.js │ │ ├── events/ │ │ │ ├── index.js │ │ │ └── public.d.ts │ │ ├── html-tree-validation.js │ │ ├── index-client.js │ │ ├── index-server.js │ │ ├── index.d.ts │ │ ├── internal/ │ │ │ ├── client/ │ │ │ │ ├── constants.js │ │ │ │ ├── context.js │ │ │ │ ├── dev/ │ │ │ │ │ ├── assign.js │ │ │ │ │ ├── console-log.js │ │ │ │ │ ├── css.js │ │ │ │ │ ├── debug.js │ │ │ │ │ ├── elements.js │ │ │ │ │ ├── equality.js │ │ │ │ │ ├── hmr.js │ │ │ │ │ ├── inspect.js │ │ │ │ │ ├── legacy.js │ │ │ │ │ ├── ownership.js │ │ │ │ │ ├── tracing.js │ │ │ │ │ └── validation.js │ │ │ │ ├── dom/ │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ ├── await.js │ │ │ │ │ │ ├── boundary.js │ │ │ │ │ │ ├── branches.js │ │ │ │ │ │ ├── css-props.js │ │ │ │ │ │ ├── each.js │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ ├── if.js │ │ │ │ │ │ ├── key.js │ │ │ │ │ │ ├── slot.js │ │ │ │ │ │ ├── snippet.js │ │ │ │ │ │ ├── svelte-component.js │ │ │ │ │ │ ├── svelte-element.js │ │ │ │ │ │ └── svelte-head.js │ │ │ │ │ ├── css.js │ │ │ │ │ ├── elements/ │ │ │ │ │ │ ├── actions.js │ │ │ │ │ │ ├── attachments.js │ │ │ │ │ │ ├── attributes.js │ │ │ │ │ │ ├── bindings/ │ │ │ │ │ │ │ ├── document.js │ │ │ │ │ │ │ ├── input.js │ │ │ │ │ │ │ ├── media.js │ │ │ │ │ │ │ ├── navigator.js │ │ │ │ │ │ │ ├── props.js │ │ │ │ │ │ │ ├── select.js │ │ │ │ │ │ │ ├── shared.js │ │ │ │ │ │ │ ├── size.js │ │ │ │ │ │ │ ├── this.js │ │ │ │ │ │ │ ├── universal.js │ │ │ │ │ │ │ └── window.js │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ ├── custom-element.js │ │ │ │ │ │ ├── customizable-select.js │ │ │ │ │ │ ├── events.js │ │ │ │ │ │ ├── misc.js │ │ │ │ │ │ ├── style.js │ │ │ │ │ │ └── transitions.js │ │ │ │ │ ├── hydration.js │ │ │ │ │ ├── legacy/ │ │ │ │ │ │ ├── event-modifiers.js │ │ │ │ │ │ ├── lifecycle.js │ │ │ │ │ │ └── misc.js │ │ │ │ │ ├── operations.js │ │ │ │ │ ├── reconciler.js │ │ │ │ │ ├── task.js │ │ │ │ │ ├── template.js │ │ │ │ │ └── types.d.ts │ │ │ │ ├── error-handling.js │ │ │ │ ├── errors.js │ │ │ │ ├── hydratable.js │ │ │ │ ├── index.js │ │ │ │ ├── legacy.js │ │ │ │ ├── loop.js │ │ │ │ ├── proxy.js │ │ │ │ ├── proxy.test.ts │ │ │ │ ├── reactivity/ │ │ │ │ │ ├── async.js │ │ │ │ │ ├── batch.js │ │ │ │ │ ├── deriveds.js │ │ │ │ │ ├── effects.js │ │ │ │ │ ├── equality.js │ │ │ │ │ ├── props.js │ │ │ │ │ ├── sources.js │ │ │ │ │ ├── status.js │ │ │ │ │ ├── store.js │ │ │ │ │ ├── types.d.ts │ │ │ │ │ └── utils.js │ │ │ │ ├── render.js │ │ │ │ ├── runtime.js │ │ │ │ ├── timing.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── validate.js │ │ │ │ └── warnings.js │ │ │ ├── disclose-version.js │ │ │ ├── flags/ │ │ │ │ ├── async.js │ │ │ │ ├── index.js │ │ │ │ ├── legacy.js │ │ │ │ └── tracing.js │ │ │ ├── index.js │ │ │ ├── server/ │ │ │ │ ├── abort-signal.js │ │ │ │ ├── blocks/ │ │ │ │ │ ├── html.js │ │ │ │ │ └── snippet.js │ │ │ │ ├── context.js │ │ │ │ ├── crypto.js │ │ │ │ ├── crypto.test.ts │ │ │ │ ├── dev.js │ │ │ │ ├── errors.js │ │ │ │ ├── hydratable.js │ │ │ │ ├── hydration.js │ │ │ │ ├── index.js │ │ │ │ ├── render-context.js │ │ │ │ ├── renderer.js │ │ │ │ ├── renderer.test.ts │ │ │ │ ├── types.d.ts │ │ │ │ └── warnings.js │ │ │ ├── shared/ │ │ │ │ ├── attributes.js │ │ │ │ ├── clone.js │ │ │ │ ├── clone.test.ts │ │ │ │ ├── dev.js │ │ │ │ ├── errors.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── utils.js │ │ │ │ ├── validate.js │ │ │ │ └── warnings.js │ │ │ └── types.d.ts │ │ ├── legacy/ │ │ │ ├── legacy-client.js │ │ │ └── legacy-server.js │ │ ├── motion/ │ │ │ ├── index.js │ │ │ ├── private.d.ts │ │ │ ├── public.d.ts │ │ │ ├── spring.js │ │ │ ├── tweened.js │ │ │ └── utils.js │ │ ├── reactivity/ │ │ │ ├── create-subscriber.js │ │ │ ├── date.js │ │ │ ├── date.test.ts │ │ │ ├── index-client.js │ │ │ ├── index-server.js │ │ │ ├── map.js │ │ │ ├── map.test.ts │ │ │ ├── media-query.js │ │ │ ├── reactive-value.js │ │ │ ├── set.js │ │ │ ├── set.test.ts │ │ │ ├── url-search-params.js │ │ │ ├── url-search-params.test.ts │ │ │ ├── url.js │ │ │ ├── url.test.ts │ │ │ └── window/ │ │ │ └── index.js │ │ ├── server/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── store/ │ │ │ ├── index-client.js │ │ │ ├── index-server.js │ │ │ ├── private.d.ts │ │ │ ├── public.d.ts │ │ │ ├── shared/ │ │ │ │ └── index.js │ │ │ └── utils.js │ │ ├── transition/ │ │ │ ├── index.js │ │ │ └── public.d.ts │ │ ├── utils.js │ │ └── version.js │ ├── svelte-html.d.ts │ ├── tests/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── animation-helpers.js │ │ ├── compiler-errors/ │ │ │ ├── samples/ │ │ │ │ ├── attribute-empty/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-sequence-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-sequence-expression-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unique/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unique-binding/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unique-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unique-shorthand/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unique-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── catch-before-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── catch-without-await/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-state-field-static/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── comment-unclosed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-invalid-name/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error-4/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error-5/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-duplicate-error-6/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-error/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-error-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-error-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-cyclical/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-sequence/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-snippet-invalid-reference-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-snippet-invalid-reference-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-whitespace/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-combinator-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-declaration/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-in-pseudoclass/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-multiple-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-block-multiple-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-modifier/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-modifier-start-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-global-modifier-start-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-nesting-selector-root/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dollar-binding-declaration-legacy/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dollar-binding-declaration-runes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dollar-binding-declaration-runes-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dollar-binding-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dollar-binding-global-js/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── dollar-binding-import/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dynamic-element-binding-invalid/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-key-without-as/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── effect-active-rune/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── element-invalid-name/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-before-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-before-closing-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-before-closing-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-if-before-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-if-before-closing-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── else-if-without-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── empty-attribute-shorthand/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── empty-classname-binding/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── empty-directive-name/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── export-default-derived-state-indirect/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-default-state-indirect/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-derived-state/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-derived-state-indirect/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-not-defined-module/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── export-state/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-state-indirect/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── export-state-module/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── illegal-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── invalid-arguments-usage/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── invalid-rune-name/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── invalid-rune-name-shadowed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── invalid-snippet-binding/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── invalid-snippet-mutation/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── legacy-no-const-assignment/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── legacy-no-const-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── malformed-snippet/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── malformed-snippet-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── multiple-styles/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── options-children/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-mustaches-whitespace/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── render-tag-invalid-call/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-before-after-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-bindable-not-called/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-duplicate-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-export-let/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-export-named-state/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-invalid-each-binding/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-invalid-each-binding-this/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-invalid-each-mutation/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-module-store-subscription/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-no-const-assignment/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-no-const-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-no-rune-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-props-illegal-name-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-props-illegal-name-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-props-not-called/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-wrong-bindable-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-wrong-bindable-placement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-derived-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-derived-placement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-effect-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-effect-placement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-host-placement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-props-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-wrong-props-placement-instance/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── runes-wrong-props-placement-module/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-state-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-state-placement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-state-raw-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── runes-wrong-state-snapshot-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── script-unclosed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── script-unclosed-eof/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── self-reference/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── slot-conflicting-with-render-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── snippet-children-conflict/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── snippet-invalid-export/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── snippet-rest-args/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-autosub-context-module/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-contextual/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-global-disallowed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-prevent-user-declarations/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-shadow-scope/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-shadow-scope-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-shadow-scope-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── store-template-expression-scope/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── style-unclosed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── style-unclosed-eof/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-internal-import/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── main.svelte.js │ │ │ │ ├── svelte-selfdestructive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── then-before-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── then-without-await/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unbalanced-curly-component/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unbalanced-curly-element/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unclosed-attribute-self-close-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unexpected-end-of-input/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unexpected-end-of-input-b/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unexpected-end-of-input-c/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unexpected-end-of-input-d/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unmatched-closing-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unmatched-closing-tag-autoclose/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── unmatched-closing-tag-autoclose-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── void-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── window-children/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── window-duplicate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── window-inside-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ └── window-inside-element/ │ │ │ │ ├── _config.js │ │ │ │ └── main.svelte │ │ │ └── test.ts │ │ ├── css/ │ │ │ ├── samples/ │ │ │ │ ├── animations/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── at-layer/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── at-rule-nested-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-bind/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-case-sensitive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-details-open/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-dialog-open/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-html-case-insensitive/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-matches-derictive/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-only-name/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-unquoted/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── attribute-selector-word-arbitrary-whitespace/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── basic/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── child-combinator/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── class-directive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── clsx-can-prune/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── clsx-cannot-prune-1/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── clsx-cannot-prune-2/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── clsx-cannot-prune-3/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── combinator-child/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── comment-html/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── comment-repeated/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── comments-after-last-selector/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── container-query/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── css-prune-edge-cases/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── css-vars/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── custom-css-hash/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── descendant-selector-non-top-level-outer/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── descendant-selector-unmatched/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── directive-special-character/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── double-hyphen/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── dynamic-element/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── dynamic-element-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── empty-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── empty-rule/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── empty-rule-dev/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-await/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-await-not-exhaustive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-each/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-each-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-each-else/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-each-else-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-each-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-former-element-in-slot/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-if-not-exhaustive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-if-not-exhaustive-with-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-key/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-nested-slots/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-nested-slots-flattened/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-render-tag/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-rendertag-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-selects-slot-fallback/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-slot/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-slot-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-slots-between/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-star/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── general-siblings-combinator-svelteelement/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-keyframes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-keyframes-with-no-elements/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-local/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-local-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-nested-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-child-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-child-combinator-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-data-attribute/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-nesting/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-root/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── global-with-unused-descendant/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── has/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── has-with-render-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── host/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── is/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── keyframes/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── keyframes-autoprefixed/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── keyframes-from-to/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── local-inside-global/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── media-query/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── media-query-word/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── nested-css/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── nested-css-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── nesting-selectors/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── not-selector/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── not-selector-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-contains/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals-case-insensitive/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-equals-dynamic/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-pipe-equals/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-prefix/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-suffix/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-attribute-selector-word-equals/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-class-dynamic/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-class-static/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant-global-inner/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant-global-inner-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant-global-inner-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant-global-outer/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-descendant-global-outer-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-global-children/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-global-descendants/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-id/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-multiple-descendants/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-whitespace/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── omit-scoping-attribute-whitespace-multiple/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── preserve-specificity/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── pseudo-element/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── quote-mark-inside-string/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── render-tag-loop/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── root/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── selectedcontent/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── selector-list/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-await/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-await-not-exhaustive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-component/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-component-default-snippet/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-component-named-snippet/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-each/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-each-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-each-else/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-each-else-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-each-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-former-element-in-slot/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-global/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-if-not-exhaustive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-if-not-exhaustive-with-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-key/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-missing-fallback/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-nested-slots/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-nested-slots-flattened/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-render-tag/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-selects-slot-fallback/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-slot/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-slot-named-between-default/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-slots-between/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-star/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── siblings-combinator-with-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── snippets/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── snippets-elements/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── special-characters/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── spread/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-charset/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-font-face/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-import/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-namespace/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-nested-page/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-page/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── supports-query/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── undefined-with-scope/ │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── unicode-identifier/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── universal-selector/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unknown-at-rule/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unknown-at-rule-with-following-rules/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-nested-at-rule/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-child-combinator/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-empty-attribute/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-in-between/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-leading/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-string-concat/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-ternary/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ ├── expected.html │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-ternary-bailed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-ternary-concat/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-ternary-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-selector-trailing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── unused-ts-as-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ ├── view-transition/ │ │ │ │ │ ├── expected.css │ │ │ │ │ └── input.svelte │ │ │ │ └── weird-selectors/ │ │ │ │ ├── expected.css │ │ │ │ └── input.svelte │ │ │ └── test.ts │ │ ├── css-parse.test.ts │ │ ├── helpers.js │ │ ├── html_equal.js │ │ ├── hydration/ │ │ │ ├── samples/ │ │ │ │ ├── basic/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── boundary-pending-attribute/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── claim-comment/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── claim-static/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── claim-text/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── Layout.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── cloudflare-mirage-borking/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ ├── _override.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── cloudflare-mirage-borking-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ ├── _override.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── component/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-in-element/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-props-hmr/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── custom-element-with-settable-only-property/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── dynamic-text/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dynamic-text-changed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── dynamic-text-nil/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block-0-on-server-more-on-client/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block-arg-clash/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block-fallback-mismatch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block-less-nodes-on-client/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-block-more-nodes-on-client/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-else/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-preserve-whitespace/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── each-text-only/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-attribute-added/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-attribute-changed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-attribute-removed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-attribute-unchanged/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-attribute-unchanged-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-dir-attribute-sibling/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-nested/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-nested-sibling/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-ref/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── event-handler/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── expression-sibling/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── head-html-and-component/ │ │ │ │ │ ├── HeadNested.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ └── main.svelte │ │ │ │ ├── head-meta-hydrate-duplicate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── head-missing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected_head.html │ │ │ │ │ ├── _override_head.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── html-tag-hydration/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-anchor/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-empty/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-false/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-mismatch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-mismatch-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── if-block-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── ignore-mismatched-href/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── img-src-mismatch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── input-checked-attribute-sibling/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── input-value-changed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── no-reset-debug/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── no-reset-snippet/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── noscript/ │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── optgroup-rich-content/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── option-rich-content-continues/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── option-rich-content-static/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── pre-first-node-newline/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-empty/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-mismatch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-mismatch-static/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.client.svelte │ │ │ │ │ └── main.server.svelte │ │ │ │ ├── raw-repair/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ ├── inner.svelte │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-svg/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── raw-with-empty-line-at-top/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── removes-undefined-attributes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── repair-mismatched-a-href/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── repairs-apparent-static-content/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── rich-select/ │ │ │ │ │ ├── Option.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── safari-borking/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ ├── _override.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── safari-borking-2/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _override.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── script/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── snippet-raw-hydrate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── standalone-component/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── standalone-snippet/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── surrounding-whitespace/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ ├── _override.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── text-empty/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── text-empty-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── _expected.html │ │ │ │ │ └── main.svelte │ │ │ │ ├── text-fallback/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── top-level-text/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ └── whitespace-at-block-start/ │ │ │ │ ├── Nested.svelte │ │ │ │ ├── _config.js │ │ │ │ ├── _expected.html │ │ │ │ ├── _override.html │ │ │ │ └── main.svelte │ │ │ └── test.ts │ │ ├── manual/ │ │ │ └── each-stress-test/ │ │ │ └── main.svelte │ │ ├── migrate/ │ │ │ ├── samples/ │ │ │ │ ├── $$slots-used-as-variable/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── $$slots-used-as-variable-$$props/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── accessors/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── css-ignore/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── derivations/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── each-block-const/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── effects/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── effects-with-alias-run/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── event-handlers/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── event-handlers-with-alias/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── export-props-multiple-declarations/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── import-type-$-prefix/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$bindable-bindable-var-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$derived-derived-var-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$derived-derived-var-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$derived-derived-var-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$derived-derived-var-4/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$props-props-var-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$state-state-var-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$state-state-var-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-$state-state-var-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-beforeUpdate-afterUpdate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-prop-and-$$props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-prop-non-identifier/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-slot-change-name/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-slot-non-identifier/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── impossible-migrate-with-errors/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── is-not-where-has/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── jsdoc-with-comments/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── labeled-statement-reassign-state/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── named-slots/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── not-blank-css-if-error/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── not-prepend-props-to-export-let/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-and-labeled/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-export-alias/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-interface/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-rest-props/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-rest-props-jsdoc/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-rest-props-ts/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── props-ts/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reactive-statements-inner-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reactive-statements-reorder-1/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reactive-statements-reorder-2/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reactive-statements-reorder-not-deleting-additions/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reactive-statements-reorder-with-comments/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── reassigned-deriveds/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── remove-blocks-whitespace/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── script-context-module/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── self-closing-elements/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── self-closing-named-slot/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── shadowed-forwarded-slot/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── single-assignment-labeled/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-dont-mess-with-attributes/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-non-identifier/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-shadow-props/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-usages/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-use_ts/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-use_ts-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-use_ts-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slots/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slots-below-imports/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slots-custom-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slots-multiple/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slots-with-$$props/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── state-and-derivations-sequence/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── state-no-initial/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── state-ts/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-component/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-ignore/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-self/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-self-name-conflict/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-self-skip-filename/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── unused-beforeUpdate-afterUpdate/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ └── unused-beforeUpdate-afterUpdate-extra-imports/ │ │ │ │ ├── input.svelte │ │ │ │ └── output.svelte │ │ │ └── test.ts │ │ ├── motion/ │ │ │ └── test.ts │ │ ├── parser-legacy/ │ │ │ ├── samples/ │ │ │ │ ├── action/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── action-duplicate/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── action-with-call/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── action-with-identifier/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── action-with-literal/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── animation/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-class-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-containing-solidus/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-curly-bracket/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-dynamic/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-dynamic-boolean/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-empty/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-escaped/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-multiple/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-shorthand/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-static/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-static-boolean/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-style/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-style-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-style-directive-modifiers/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-style-directive-shorthand/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-style-directive-string/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-unquoted/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── attribute-with-whitespace/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── await-catch/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── await-then-catch/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── binding/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── binding-shorthand/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── comment/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── comment-with-ignores/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── component-dynamic/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── convert-entities/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── convert-entities-in-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── css/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── dynamic-element-string/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── dynamic-element-variable/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── dynamic-import/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-destructured/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-else/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-indexed/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-keyed/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── element-with-attribute/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── element-with-attribute-empty-string/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── element-with-mustache/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── element-with-text/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── elements/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── event-handler/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── generic-snippets/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block-else/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block-elseif/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── implicitly-closed-li/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── implicitly-closed-li-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── javascript-comments/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-invalid-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-invalid-expression/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-unclosed-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-unclosed-open-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-unclosed-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── nbsp/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── no-error-if-before-closing/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── raw-mustaches/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── refs/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── script/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── script-attribute-with-curly-braces/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── script-comment-only/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── script-context-module-unquoted/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── self-closing-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── self-reference/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── slotted-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── space-between-mustaches/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── spread/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── style-inside-head/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── textarea-children/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── textarea-end-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── transition-intro/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── transition-intro-no-params/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── unusual-identifier/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── whitespace-after-script-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── whitespace-after-style-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── whitespace-leading-trailing/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ └── whitespace-normal/ │ │ │ │ ├── input.svelte │ │ │ │ └── output.json │ │ │ └── test.ts │ │ ├── parser-modern/ │ │ │ ├── samples/ │ │ │ │ ├── attachments/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── comment-before-function-binding/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── comment-before-script/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── comment-in-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── css-nth-syntax/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── css-pseudo-classes/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-object-pattern/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── each-block-object-pattern-special-characters/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── generic-snippets/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block-else/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── if-block-elseif/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-invalid-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-invalid-expression/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-unclosed-open-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-unclosed-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── loose-valid-each-as/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── options/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── script-style-no-markup/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── semicolon-inside-quotes/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── snippets/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ ├── template-shadowroot/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.json │ │ │ │ └── typescript-in-event-handler/ │ │ │ │ ├── input.svelte │ │ │ │ └── output.json │ │ │ └── test.ts │ │ ├── preprocess/ │ │ │ ├── samples/ │ │ │ │ ├── attributes-with-closing-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── attributes-with-equals/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── comments/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── dependencies/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── empty-sourcemap/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── filename/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── ignores-null/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── markup/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── multiple-preprocessors/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── partial-names/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── script/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected_map.json │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── script-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── script-self-closing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style-async/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style-attributes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected_map.json │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style-attributes-modified/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected_map.json │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style-attributes-modified-longer/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── expected_map.json │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ └── style-self-closing/ │ │ │ │ ├── _config.js │ │ │ │ ├── input.svelte │ │ │ │ └── output.svelte │ │ │ └── test.ts │ │ ├── print/ │ │ │ ├── samples/ │ │ │ │ ├── animate-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── attach-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── attribute/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── await-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── bind-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── block-element-separation/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── class-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── comment/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── component/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── const-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── each-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── expression-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── formatting/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── html-document/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── html-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── if-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── key-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── let-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── on-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── regular-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── render-tag/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── script/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── slot-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── snippet-block/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── spread-attribute/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── style-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-boundary/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-component/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-document/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-element/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-fragment/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-head/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-options/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-self/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── svelte-window/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── text/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ ├── transition-directive/ │ │ │ │ │ ├── input.svelte │ │ │ │ │ └── output.svelte │ │ │ │ └── use-directive/ │ │ │ │ ├── input.svelte │ │ │ │ └── output.svelte │ │ │ └── test.ts │ │ ├── runtime-browser/ │ │ │ ├── assert.js │ │ │ ├── custom-elements-samples/ │ │ │ │ ├── $$props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── $$slot/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── $$slot-dynamic-content/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── my-widget.svelte │ │ │ │ ├── action/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── camel-case-attribute/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── ce-options-valid/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── closed-shadow-dom/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── custom-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── custom-method/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── effect-sequence/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── element-effect-context/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── escaped-css/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── events/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── events-slotted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── extend-with-ts/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── extended-builtin/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── custom-button.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── host-rune/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── host-rune-access-injected-css/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── html/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── html-slots/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── late-ce-mount/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── nested/ │ │ │ │ │ ├── Counter.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── new-styled/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── no-shadow-dom/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── no-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── no-tag-ce-options/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── oncreate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── ondestroy/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── propagate-prop-changes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── my-widget.svelte │ │ │ │ ├── props-rune-attributes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── my-widget.svelte │ │ │ │ ├── reflect-attributes/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── my-widget.svelte │ │ │ │ ├── reflect-attributes-add-remove/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── set-property-before-mounted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ └── shadow-root-init-options/ │ │ │ │ ├── _config.js │ │ │ │ └── main.svelte │ │ │ ├── driver-ssr.js │ │ │ ├── driver.js │ │ │ ├── samples/ │ │ │ │ ├── bind-muted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bind-playbackrate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bind-volume/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-files/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-width-height-initialize/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-width-height-this-timing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── log.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── browser-events-ending-with-capture/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-css-custom-properties/ │ │ │ │ │ ├── Slider.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-css-custom-properties-dynamic/ │ │ │ │ │ ├── Slider.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-css-custom-properties-dynamic-svg/ │ │ │ │ │ ├── Svg.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-event-handler-contenteditable-false/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-binding-dimensions/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── css-props-dynamic-component/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── B.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── dynamic-element-custom-element/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── fine-grained-hydration-clean-attr/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── head-script/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── head-scripts/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── html-tag-script/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── html-tag-script-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── hydrate-large-text-node/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── inline-style-directive-important/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── inline-style-directive-precedence/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── inline-style-directive-update-with-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── mount-in-iframe/ │ │ │ │ │ ├── App.svelte │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── GrandChild.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── sole-script-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-component-css-custom-properties/ │ │ │ │ │ ├── Slider1.svelte │ │ │ │ │ ├── Slider2.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-component-css-custom-properties-dynamic/ │ │ │ │ │ ├── Slider.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-component-css-custom-properties2/ │ │ │ │ │ ├── Slider1.svelte │ │ │ │ │ ├── Slider2.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-self-css-custom-properties/ │ │ │ │ │ ├── Slider1.svelte │ │ │ │ │ ├── Slider2.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── svelte-self-css-custom-properties-dynamic/ │ │ │ │ │ ├── Slider.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ └── svelte-self-css-custom-properties2/ │ │ │ │ ├── Slider1.svelte │ │ │ │ ├── Slider2.svelte │ │ │ │ ├── _config.js │ │ │ │ └── main.svelte │ │ │ ├── test-ssr.ts │ │ │ └── test.ts │ │ ├── runtime-legacy/ │ │ │ ├── samples/ │ │ │ │ ├── action/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-body/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-component/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── sub.svelte │ │ │ │ ├── action-custom-event-handler/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-custom-event-handler-in-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-custom-event-handler-in-each-destructured/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-custom-event-handler-node-context/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-custom-event-handler-this/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-custom-event-handler-with-context/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-document/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-function/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-object/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-object-deep/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-receives-element-mounted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-ternary-template/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-this/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── action-update-before-destroy/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── after-render-prevents-loop/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── after-render-triggers-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-css/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-flip/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-flip-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-js/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-js-delay/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── animation-js-easing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── apply-directives-in-order/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── apply-directives-in-order-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── array-literal-spread-deopt/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── array-rest-is-array-or-object/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── assignment-in-init/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── assignment-to-computed-property/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── assignment-to-const1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── assignment-to-const2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── async-generator-object-methods/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── attachment-in-mutated-state/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-after-property/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-case-insensitive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-false/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-hidden/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-indeterminate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-inert/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-true/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-boolean-with-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-casing/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-casing-custom-element/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-custom-element-inheritance/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dataset-without-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic-no-dependencies/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic-quotemarks/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic-shorthand/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-dynamic-type/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-empty/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-empty-svg/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-false/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-microdata/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-namespaced/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-classname-no-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-classname-with-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-classnames-no-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-classnames-with-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-func-classname-no-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-func-classname-with-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-func-classnames-no-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-null-func-classnames-with-style/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-partial-number/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-prefer-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-static/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-static-at-symbol/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-static-boolean/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-static-quotemarks/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-undefined/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-unknown-without-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── attribute-url/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── autofocus/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── autofocus-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── autofocus-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-block-func-function/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-catch-no-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-catch-shorthand/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-component-oncreate/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-conservative-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── sleep.js │ │ │ │ ├── await-containing-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-function-promise/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-in-dynamic-component/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-in-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-in-removed-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-mount-and-unmount-immediately/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-mutate-array/ │ │ │ │ │ ├── Card.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-set-simultaneous/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-set-simultaneous-reactive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-blowback-reactive/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-anchor/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-event/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-in-slot/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-no-values/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-non-promise/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-order/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-catch-static/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-array/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-array-nested-rest/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-computed-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-default/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-number-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-object/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-object-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-rest/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-destruct-string-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-no-context/ │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-no-expression/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-shadowed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-then-shorthand/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-with-components/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-with-update/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-with-update-2/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-with-update-catch-scope/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── await-without-catch/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── before-render-chain/ │ │ │ │ │ ├── Item.svelte │ │ │ │ │ ├── List.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── before-render-chain-2/ │ │ │ │ │ ├── Item.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── before-render-prevents-loop/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bind-export-const-with-spread/ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-backflow/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── Parent.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-circular/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-contenteditable-html/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-contenteditable-html-initial/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-contenteditable-innertext/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-contenteditable-text/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-contenteditable-text-initial/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-details-open/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-focused/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-indirect/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-indirect-computed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-indirect-fn/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-indirect-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-indirect-value/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-deep-contextual/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-deep-contextual-b/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-group/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-group-outside-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-indeterminate/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-checkbox-with-event-in-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-duplicate-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-10/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-11/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-12/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-13/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-14/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-15/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-16/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-4/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-5/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-6/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-7/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-8/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-each-9/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-if-gh-8372-1/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-if-gh-8372-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-group-undefined/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-member-expression-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-number/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-number-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-radio-group/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-range/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-range-change-with-max/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-contextual/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-contextual-deconflicted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-contextual-reactive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-contextual-reactive-prop/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deconflicted/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deep/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deep-computed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deep-computed-dynamic/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deep-contextual/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-deep-contextual-computed-dynamic/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-text-undefined/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-input-with-event/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-member-expression-no-warning/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-no-unnecessary-invalidation/ │ │ │ │ │ ├── Tab.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-from-let/ │ │ │ │ │ ├── Parent.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-from-let-2/ │ │ │ │ │ ├── Parent.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-implicit-option-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-in-each-block/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-in-yield/ │ │ │ │ │ ├── Modal.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-initial-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-initial-value-undefined/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-initial-value-undefined-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-initial-value-undefined-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-late/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-late-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-late-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-late-4/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-null-placeholder/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-null-placeholder-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-optgroup/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-reactive-derived/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-unmatched/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-unmatched-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-select-unmatched-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-store/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-store-deep/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-store-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-textarea/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-and-value/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-component-computed-key/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-component-each-block/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-component-each-block-value/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-component-reactive/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-block-property/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-block-property-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-block-property-component/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-key/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-object-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-each-object-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-element-reactive/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-element-reactive-b/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-legacy-component-api/ │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── sub.svelte │ │ │ │ ├── binding-this-member-expression-update/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-multiple/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-no-innerhtml/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-store/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-unset/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-this-with-context/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-using-props/ │ │ │ │ │ ├── TextInput.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── binding-value-prop/ │ │ │ │ │ ├── Field.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bindings-before-onmount/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bindings-coalesced/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bindings-global-dependency/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-3/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-if/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-if-2/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot/ │ │ │ │ │ ├── Echo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot-2/ │ │ │ │ │ ├── Echo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot-3/ │ │ │ │ │ ├── Echo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot-4/ │ │ │ │ │ ├── Echo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot-5/ │ │ │ │ │ ├── Echo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── bitmask-overflow-slot-6/ │ │ │ │ │ ├── Slotted.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── block-expression-assign/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── block-expression-fn-call/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── block-expression-member-access/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-boolean/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-helper/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-in-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-shortcut/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-shortcut-with-class/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-shortcut-with-transition/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-with-attribute/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-with-dynamic-attribute/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-with-dynamic-attribute-and-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-with-spread/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── class-with-spread-and-bind/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding/ │ │ │ │ │ ├── Counter.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-accessors/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-aliased/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback-b/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback-c/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback-d/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback-e/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-blowback-f/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-computed/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-conditional/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Baz.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-conditional-b/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Baz.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-deep/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-deep2/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each-nested/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each-object/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each-reassigned/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each-remount-keyed/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── InnerChild.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-each-remount-unkeyed/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── InnerChild.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-infinite-loop/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── B.svelte │ │ │ │ │ ├── C.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-nested/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Baz.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-non-leaky/ │ │ │ │ │ ├── Counter.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-onMount/ │ │ │ │ │ ├── Mount.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-parent-supercedes-child/ │ │ │ │ │ ├── Counter.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-parent-supercedes-child-b/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-parent-supercedes-child-c/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-private-state/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-reactive-property-no-extra-call/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-reactive-statement/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-self-destroying/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-binding-store/ │ │ │ │ │ ├── Input.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-dynamic/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-dynamic-late/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-dynamic-shorthand/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-empty/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-static/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-static-boolean/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-data-static-boolean-regression/ │ │ │ │ │ ├── Link.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-event-handler-dynamic/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-event-handler-modifier-once/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-event-handler-modifier-once-dynamic/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-event-not-stale/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events-console/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events-data/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events-each/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events-nullish/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-events-this/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-if-placement/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-name-deconflicted/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-name-deconflicted-globals/ │ │ │ │ │ ├── Countdown.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-namespace/ │ │ │ │ │ ├── Tooltip.svelte │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-namespaced/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── components.svelte │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-nested-deep/ │ │ │ │ │ ├── Level1.svelte │ │ │ │ │ ├── Level2.svelte │ │ │ │ │ ├── Level3.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-nested-deeper/ │ │ │ │ │ ├── Level1.svelte │ │ │ │ │ ├── Level2.svelte │ │ │ │ │ ├── Level3.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-not-constructor/ │ │ │ │ │ ├── Sub.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-not-constructor2/ │ │ │ │ │ ├── Sub.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-not-void/ │ │ │ │ │ ├── Link.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-prop-object/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-props-added/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-props-mutated/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-ref/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-shorthand-import/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-attribute-order/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-chained/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-component-named/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-component-named-b/ │ │ │ │ │ ├── Hello.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-component-named-c/ │ │ │ │ │ ├── Hello.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── World.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-context-props-each/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-context-props-each-nested/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-context-props-let/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-default/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-default-in-each/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-dynamic/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-each-block/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-empty/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-empty-b/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback-2/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ ├── main.svelte │ │ │ │ │ └── store.svelte │ │ │ │ ├── component-slot-fallback-3/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback-4/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback-5/ │ │ │ │ │ ├── IconA.svelte │ │ │ │ │ ├── IconB.svelte │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback-6/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-fallback-empty/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-if-block/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-if-block-before-node/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-if-else-block-before-node/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-aliased/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-b/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-c/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-d/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-destructured/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-destructured-2/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-e/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-f/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── B.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-g/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-in-binding/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-in-slot/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-in-slot-2/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-inline-function/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-missing-prop/ │ │ │ │ │ ├── Bar.svelte │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-mutated/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-named/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-named-2/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── SlotInner.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-scope/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-scope-2/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-scope-3/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-scope-4/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── Nested2.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-scope-5/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── Nested2.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-let-static/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-name-with-hyphen/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-named/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-named-b/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-named-c/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-named-scope/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── Parent.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-names-sanitized/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-component/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-if/ │ │ │ │ │ ├── Display.svelte │ │ │ │ │ ├── Input.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-in-element/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-nested-in-slot/ │ │ │ │ │ ├── One.svelte │ │ │ │ │ ├── Two.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-slot/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── Forward.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-spread/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-spread-props/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-static-and-dynamic/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-slot-used-with-default-event/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-static-at-symbol/ │ │ │ │ │ ├── Email.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment/ │ │ │ │ │ ├── B.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-2/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-aliased/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-b/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-c/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-d/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-destructured/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-destructured-2/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-e/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── B.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-f/ │ │ │ │ │ ├── A.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-in-binding/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-in-slot/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-named/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-let-static/ │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-svelte-fragment-nested/ │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-template-inline-mutation/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-transition/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-follows-element/ │ │ │ │ │ ├── Foo.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-if/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-multiple-in-each/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-multiple-in-if/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-nested-if/ │ │ │ │ │ ├── Inner.svelte │ │ │ │ │ ├── Outer.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-parent/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-placement/ │ │ │ │ │ ├── Modal.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── component-yield-static/ │ │ │ │ │ ├── Widget.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then-destructuring/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then-destructuring-computed-in-computed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then-destructuring-computed-props/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then-destructuring-literals/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-await-then-destructuring-nested-rest/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-component/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-component-without-let/ │ │ │ │ │ ├── Component.svelte │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-dependencies/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-depends-on-const-tag/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-each/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-each-arrow/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-each-const/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-each-destructure/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── const-tag-each-destructure-computed-in-computed/ │ │ │ │ │ ├── _config.js │ │ │ │ │ └── main.svelte │ │ │ │ ├── cons
Showing preview only (567K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5266 symbols across 2470 files)
FILE: benchmarking/benchmarks/reactivity/sbench.js
constant COUNT (line 5) | const COUNT = 1e5;
function create_sources (line 11) | function create_sources(n, sources) {
function create_derived (line 22) | function create_derived(source) {
function create_sbench_test (line 33) | function create_sbench_test(label, count, num_sources, fn) {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_avoidable.bench.js
method run (line 22) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_broad.bench.js
method run (line 27) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_deep.bench.js
method run (line 27) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_diamond.bench.js
method run (line 30) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_mux.bench.js
method run (line 23) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_repeated.bench.js
method run (line 27) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_triangle.bench.js
function count (line 6) | function count(number) {
method run (line 39) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/kairo_unstable.bench.js
method run (line 27) | run() {
FILE: benchmarking/benchmarks/reactivity/tests/mol.bench.js
function fib (line 7) | function fib(n) {
function hard (line 15) | function hard(n) {
method run (line 52) | run(i) {
FILE: benchmarking/benchmarks/reactivity/tests/repeated_deps.bench.js
constant ARRAY_SIZE (line 4) | const ARRAY_SIZE = 1000;
method run (line 28) | run() {
FILE: benchmarking/benchmarks/reactivity/util.js
function busy (line 4) | function busy() {
function create_test (line 16) | function create_test(label, setup) {
FILE: benchmarking/benchmarks/ssr/wrapper/wrapper_bench.js
function compile_svelte (line 9) | async function compile_svelte() {
function read (line 42) | function read(file) {
function write (line 50) | function write(file, contents) {
FILE: benchmarking/compare/index.js
constant PROFILE_DIR (line 21) | let PROFILE_DIR = path.resolve(filename, '../.profiles');
function char (line 121) | function char(i) {
function safe (line 125) | function safe(name) {
FILE: benchmarking/compare/runner.js
constant PROFILE_DIR (line 5) | const PROFILE_DIR = process.env.BENCH_PROFILE_DIR;
FILE: benchmarking/run.js
constant PROFILE_DIR (line 9) | const PROFILE_DIR = './benchmarking/.profiles';
constant COLUMN_WIDTHS (line 31) | const COLUMN_WIDTHS = [25, 9, 9];
constant TOTAL_WIDTH (line 32) | const TOTAL_WIDTH = COLUMN_WIDTHS.reduce((a, b) => a + b);
FILE: benchmarking/utils.js
function track (line 9) | async function track(fn) {
function fastest_test (line 37) | async function fastest_test(times, fn) {
function safe (line 48) | function safe(name) {
function with_cpu_profile (line 59) | async function with_cpu_profile(profile_dir, profile_name, fn) {
FILE: eslint.config.js
method create (line 14) | create(context) {
FILE: packages/svelte/elements.d.ts
type Booleanish (line 38) | type Booleanish = boolean | 'true' | 'false';
type EventHandler (line 44) | type EventHandler<E extends Event = Event, T extends EventTarget = Eleme...
type ClipboardEventHandler (line 48) | type ClipboardEventHandler<T extends EventTarget> = EventHandler<Clipboa...
type CompositionEventHandler (line 49) | type CompositionEventHandler<T extends EventTarget> = EventHandler<Compo...
type DragEventHandler (line 50) | type DragEventHandler<T extends EventTarget> = EventHandler<DragEvent, T>;
type FocusEventHandler (line 51) | type FocusEventHandler<T extends EventTarget> = EventHandler<FocusEvent,...
type FormEventHandler (line 52) | type FormEventHandler<T extends EventTarget> = EventHandler<Event, T>;
type ChangeEventHandler (line 53) | type ChangeEventHandler<T extends EventTarget> = EventHandler<Event, T>;
type KeyboardEventHandler (line 54) | type KeyboardEventHandler<T extends EventTarget> = EventHandler<Keyboard...
type MouseEventHandler (line 55) | type MouseEventHandler<T extends EventTarget> = EventHandler<MouseEvent,...
type TouchEventHandler (line 56) | type TouchEventHandler<T extends EventTarget> = EventHandler<TouchEvent,...
type PointerEventHandler (line 57) | type PointerEventHandler<T extends EventTarget> = EventHandler<PointerEv...
type GamepadEventHandler (line 58) | type GamepadEventHandler<T extends EventTarget> = EventHandler<GamepadEv...
type UIEventHandler (line 59) | type UIEventHandler<T extends EventTarget> = EventHandler<UIEvent, T>;
type WheelEventHandler (line 60) | type WheelEventHandler<T extends EventTarget> = EventHandler<WheelEvent,...
type AnimationEventHandler (line 61) | type AnimationEventHandler<T extends EventTarget> = EventHandler<Animati...
type TransitionEventHandler (line 62) | type TransitionEventHandler<T extends EventTarget> = EventHandler<Transi...
type MessageEventHandler (line 63) | type MessageEventHandler<T extends EventTarget> = EventHandler<MessageEv...
type ToggleEventHandler (line 64) | type ToggleEventHandler<T extends EventTarget> = EventHandler<ToggleEven...
type ContentVisibilityAutoStateChangeEventHandler (line 65) | type ContentVisibilityAutoStateChangeEventHandler<T extends EventTarget>...
type FullAutoFill (line 70) | type FullAutoFill =
type DOMAttributes (line 85) | interface DOMAttributes<T extends EventTarget> {
type AriaAttributes (line 479) | interface AriaAttributes {
type AriaRole (line 679) | type AriaRole =
type HTMLAttributes (line 751) | interface HTMLAttributes<T extends EventTarget> extends AriaAttributes, ...
type HTMLAttributeAnchorTarget (line 861) | type HTMLAttributeAnchorTarget = '_self' | '_blank' | '_parent' | '_top'...
type HTMLAnchorAttributes (line 863) | interface HTMLAnchorAttributes extends HTMLAttributes<HTMLAnchorElement> {
type HTMLAudioAttributes (line 875) | interface HTMLAudioAttributes extends HTMLMediaAttributes<HTMLAudioEleme...
type HTMLAreaAttributes (line 877) | interface HTMLAreaAttributes extends HTMLAttributes<HTMLAreaElement> {
type HTMLBaseAttributes (line 891) | interface HTMLBaseAttributes extends HTMLAttributes<HTMLBaseElement> {
type HTMLBlockquoteAttributes (line 896) | interface HTMLBlockquoteAttributes extends HTMLAttributes<HTMLQuoteEleme...
type HTMLButtonAttributes (line 900) | interface HTMLButtonAttributes extends HTMLAttributes<HTMLButtonElement> {
type HTMLCanvasAttributes (line 931) | interface HTMLCanvasAttributes extends HTMLAttributes<HTMLCanvasElement> {
type HTMLColAttributes (line 936) | interface HTMLColAttributes extends HTMLAttributes<HTMLTableColElement> {
type HTMLColgroupAttributes (line 941) | interface HTMLColgroupAttributes extends HTMLAttributes<HTMLTableColElem...
type HTMLDataAttributes (line 945) | interface HTMLDataAttributes extends HTMLAttributes<HTMLDataElement> {
type HTMLDetailsAttributes (line 949) | interface HTMLDetailsAttributes extends HTMLAttributes<HTMLDetailsElemen...
type HTMLDelAttributes (line 960) | interface HTMLDelAttributes extends HTMLAttributes<HTMLModElement> {
type HTMLDialogAttributes (line 965) | interface HTMLDialogAttributes extends HTMLAttributes<HTMLDialogElement> {
type HTMLEmbedAttributes (line 970) | interface HTMLEmbedAttributes extends HTMLAttributes<HTMLEmbedElement> {
type HTMLFieldsetAttributes (line 977) | interface HTMLFieldsetAttributes extends HTMLAttributes<HTMLFieldSetElem...
type HTMLFormAttributes (line 983) | interface HTMLFormAttributes extends HTMLAttributes<HTMLFormElement> {
type HTMLHtmlAttributes (line 1000) | interface HTMLHtmlAttributes extends HTMLAttributes<HTMLHtmlElement> {
type HTMLIframeAttributes (line 1004) | interface HTMLIframeAttributes extends HTMLAttributes<HTMLIFrameElement> {
type HTMLImgAttributes (line 1027) | interface HTMLImgAttributes extends HTMLAttributes<HTMLImageElement> {
type HTMLInsAttributes (line 1046) | interface HTMLInsAttributes extends HTMLAttributes<HTMLModElement> {
type HTMLInputTypeAttribute (line 1051) | type HTMLInputTypeAttribute =
type HTMLInputAttributes (line 1076) | interface HTMLInputAttributes extends HTMLAttributes<HTMLInputElement> {
type HTMLKeygenAttributes (line 1135) | interface HTMLKeygenAttributes extends HTMLAttributes<HTMLElement> {
type HTMLLabelAttributes (line 1144) | interface HTMLLabelAttributes extends HTMLAttributes<HTMLLabelElement> {
type HTMLLiAttributes (line 1149) | interface HTMLLiAttributes extends HTMLAttributes<HTMLLIElement> {
type HTMLLinkAttributes (line 1153) | interface HTMLLinkAttributes extends HTMLAttributes<HTMLLinkElement> {
type HTMLMapAttributes (line 1196) | interface HTMLMapAttributes extends HTMLAttributes<HTMLMapElement> {
type HTMLMenuAttributes (line 1200) | interface HTMLMenuAttributes extends HTMLAttributes<HTMLMenuElement> {
type HTMLMediaAttributes (line 1204) | interface HTMLMediaAttributes<T extends HTMLMediaElement> extends HTMLAt...
type HTMLMetaAttributes (line 1251) | interface HTMLMetaAttributes extends HTMLAttributes<HTMLMetaElement> {
type HTMLMeterAttributes (line 1267) | interface HTMLMeterAttributes extends HTMLAttributes<HTMLMeterElement> {
type HTMLQuoteAttributes (line 1277) | interface HTMLQuoteAttributes extends HTMLAttributes<HTMLQuoteElement> {
type HTMLObjectAttributes (line 1281) | interface HTMLObjectAttributes extends HTMLAttributes<HTMLObjectElement> {
type HTMLOlAttributes (line 1293) | interface HTMLOlAttributes extends HTMLAttributes<HTMLOListElement> {
type HTMLOptgroupAttributes (line 1299) | interface HTMLOptgroupAttributes extends HTMLAttributes<HTMLOptGroupElem...
type HTMLOptionAttributes (line 1304) | interface HTMLOptionAttributes extends HTMLAttributes<HTMLOptionElement> {
type HTMLOutputAttributes (line 1311) | interface HTMLOutputAttributes extends HTMLAttributes<HTMLOutputElement> {
type HTMLParamAttributes (line 1317) | interface HTMLParamAttributes extends HTMLAttributes<HTMLParamElement> {
type HTMLProgressAttributes (line 1322) | interface HTMLProgressAttributes extends HTMLAttributes<HTMLProgressElem...
type HTMLSlotAttributes (line 1327) | interface HTMLSlotAttributes extends HTMLAttributes<HTMLSlotElement> {
type HTMLScriptAttributes (line 1331) | interface HTMLScriptAttributes extends HTMLAttributes<HTMLScriptElement> {
type HTMLSelectAttributes (line 1346) | interface HTMLSelectAttributes extends HTMLAttributes<HTMLSelectElement> {
type HTMLSourceAttributes (line 1362) | interface HTMLSourceAttributes extends HTMLAttributes<HTMLSourceElement> {
type HTMLStyleAttributes (line 1372) | interface HTMLStyleAttributes extends HTMLAttributes<HTMLStyleElement> {
type HTMLTableAttributes (line 1379) | interface HTMLTableAttributes extends HTMLAttributes<HTMLTableElement> {
type HTMLTextareaAttributes (line 1391) | interface HTMLTextareaAttributes extends HTMLAttributes<HTMLTextAreaElem...
type HTMLTdAttributes (line 1416) | interface HTMLTdAttributes extends HTMLAttributes<HTMLTableCellElement> {
type HTMLThAttributes (line 1428) | interface HTMLThAttributes extends HTMLAttributes<HTMLTableCellElement> {
type HTMLTimeAttributes (line 1437) | interface HTMLTimeAttributes extends HTMLAttributes<HTMLTimeElement> {
type HTMLTrackAttributes (line 1441) | interface HTMLTrackAttributes extends HTMLAttributes<HTMLTrackElement> {
type HTMLVideoAttributes (line 1449) | interface HTMLVideoAttributes extends HTMLMediaAttributes<HTMLVideoEleme...
type SvelteMediaTimeRange (line 1461) | interface SvelteMediaTimeRange {
type SvelteDocumentAttributes (line 1466) | interface SvelteDocumentAttributes extends HTMLAttributes<Document> {
type SvelteWindowAttributes (line 1473) | interface SvelteWindowAttributes extends HTMLAttributes<Window> {
type SVGAttributes (line 1535) | interface SVGAttributes<T extends EventTarget> extends AriaAttributes, D...
type HTMLTemplateAttributes (line 1831) | interface HTMLTemplateAttributes extends HTMLAttributes<HTMLElement> {
type HTMLWebViewAttributes (line 1835) | interface HTMLWebViewAttributes extends HTMLAttributes<HTMLElement> {
type SvelteHTMLElements (line 1858) | interface SvelteHTMLElements {
type ClassValue (line 2078) | type ClassValue = string | import('clsx').ClassArray | import('clsx').Cl...
FILE: packages/svelte/scripts/check-treeshakeability.js
function bundle_code (line 12) | async function bundle_code(entry) {
function check_bundle (line 125) | function check_bundle(case_name, ...strings) {
FILE: packages/svelte/scripts/process-messages/index.js
constant DIR (line 13) | const DIR = '../../documentation/docs/98-reference/.generated';
function run (line 17) | function run() {
FILE: packages/svelte/scripts/process-messages/templates/client-errors.js
function CODE (line 10) | function CODE(PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/client-warnings.js
function CODE (line 10) | function CODE(PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/compile-errors.js
class InternalCompileError (line 5) | class InternalCompileError extends Error {
method constructor (line 14) | constructor(code, message, position) {
method toString (line 26) | toString() {
method toJSON (line 30) | toJSON() {
function e (line 41) | function e(node, code, message) {
function CODE (line 58) | function CODE(node, PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/compile-warnings.js
class InternalCompileWarning (line 6) | class InternalCompileWarning extends CompileDiagnostic {
method constructor (line 14) | constructor(code, message, position) {
function w (line 24) | function w(node, code, message) {
function CODE (line 49) | function CODE(node, PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/server-errors.js
function CODE (line 8) | function CODE(PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/server-warnings.js
function CODE (line 10) | function CODE(PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/shared-errors.js
function CODE (line 8) | function CODE(PARAMETER) {
FILE: packages/svelte/scripts/process-messages/templates/shared-warnings.js
function CODE (line 10) | function CODE(PARAMETER) {
FILE: packages/svelte/src/action/public.d.ts
type ActionReturn (line 27) | interface ActionReturn<
type Action (line 56) | interface Action<
FILE: packages/svelte/src/ambient.d.ts
type Comp (line 7) | type Comp = SvelteComponent;
type Primitive (line 27) | type Primitive = string | number | boolean | null | undefined;
type TypedArray (line 29) | type TypedArray =
type Cloneable (line 43) | type Cloneable =
type NonReactive (line 74) | type NonReactive<T> = T extends Date
type Snapshot (line 82) | type Snapshot<T> = T extends Primitive
FILE: packages/svelte/src/animate/index.js
function flip (line 13) | function flip(node, { from, to }, params = {}) {
function get_zoom (line 63) | function get_zoom(element) {
FILE: packages/svelte/src/animate/public.d.ts
type AnimationConfig (line 2) | interface AnimationConfig {
type FlipParams (line 10) | interface FlipParams {
FILE: packages/svelte/src/attachments/index.js
function createAttachmentKey (line 30) | function createAttachmentKey() {
function fromAction (line 96) | function fromAction(action, fn = /** @type {() => T} */ (noop)) {
FILE: packages/svelte/src/attachments/public.d.ts
type Attachment (line 8) | interface Attachment<T extends EventTarget = Element> {
FILE: packages/svelte/src/compiler/errors.js
class InternalCompileError (line 6) | class InternalCompileError extends Error {
method constructor (line 15) | constructor(code, message, position) {
method toString (line 28) | toString() {
method toJSON (line 32) | toJSON() {
function e (line 43) | function e(node, code, message) {
function options_invalid_value (line 56) | function options_invalid_value(node, details) {
function options_removed (line 66) | function options_removed(node, details) {
function options_unrecognised (line 76) | function options_unrecognised(node, keypath) {
function bindable_invalid_location (line 85) | function bindable_invalid_location(node) {
function constant_assignment (line 95) | function constant_assignment(node, thing) {
function constant_binding (line 105) | function constant_binding(node, thing) {
function declaration_duplicate (line 115) | function declaration_duplicate(node, name) {
function declaration_duplicate_module_import (line 124) | function declaration_duplicate_module_import(node) {
function derived_invalid_export (line 133) | function derived_invalid_export(node) {
function dollar_binding_invalid (line 142) | function dollar_binding_invalid(node) {
function dollar_prefix_invalid (line 151) | function dollar_prefix_invalid(node) {
function duplicate_class_field (line 161) | function duplicate_class_field(node, name) {
function each_item_invalid_assignment (line 170) | function each_item_invalid_assignment(node) {
function effect_invalid_placement (line 179) | function effect_invalid_placement(node) {
function experimental_async (line 188) | function experimental_async(node) {
function export_undefined (line 198) | function export_undefined(node, name) {
function global_reference_invalid (line 208) | function global_reference_invalid(node, name) {
function host_invalid_placement (line 217) | function host_invalid_placement(node) {
function import_svelte_internal_forbidden (line 226) | function import_svelte_internal_forbidden(node) {
function inspect_trace_generator (line 235) | function inspect_trace_generator(node) {
function inspect_trace_invalid_placement (line 244) | function inspect_trace_invalid_placement(node) {
function invalid_arguments_usage (line 253) | function invalid_arguments_usage(node) {
function legacy_await_invalid (line 262) | function legacy_await_invalid(node) {
function legacy_export_invalid (line 271) | function legacy_export_invalid(node) {
function legacy_props_invalid (line 280) | function legacy_props_invalid(node) {
function legacy_reactive_statement_invalid (line 289) | function legacy_reactive_statement_invalid(node) {
function legacy_rest_props_invalid (line 298) | function legacy_rest_props_invalid(node) {
function module_illegal_default_export (line 307) | function module_illegal_default_export(node) {
function props_duplicate (line 317) | function props_duplicate(node, rune) {
function props_id_invalid_placement (line 326) | function props_id_invalid_placement(node) {
function props_illegal_name (line 335) | function props_illegal_name(node) {
function props_invalid_identifier (line 344) | function props_invalid_identifier(node) {
function props_invalid_pattern (line 353) | function props_invalid_pattern(node) {
function props_invalid_placement (line 362) | function props_invalid_placement(node) {
function reactive_declaration_cycle (line 372) | function reactive_declaration_cycle(node, cycle) {
function rune_invalid_arguments (line 382) | function rune_invalid_arguments(node, rune) {
function rune_invalid_arguments_length (line 393) | function rune_invalid_arguments_length(node, rune, args) {
function rune_invalid_computed_property (line 402) | function rune_invalid_computed_property(node) {
function rune_invalid_name (line 412) | function rune_invalid_name(node, name) {
function rune_invalid_spread (line 422) | function rune_invalid_spread(node, rune) {
function rune_invalid_usage (line 432) | function rune_invalid_usage(node, rune) {
function rune_missing_parentheses (line 441) | function rune_missing_parentheses(node) {
function rune_removed (line 451) | function rune_removed(node, name) {
function rune_renamed (line 462) | function rune_renamed(node, name, replacement) {
function runes_mode_invalid_import (line 472) | function runes_mode_invalid_import(node, name) {
function snippet_invalid_export (line 481) | function snippet_invalid_export(node) {
function snippet_parameter_assignment (line 490) | function snippet_parameter_assignment(node) {
function state_field_duplicate (line 500) | function state_field_duplicate(node, name) {
function state_field_invalid_assignment (line 509) | function state_field_invalid_assignment(node) {
function state_invalid_export (line 518) | function state_invalid_export(node) {
function state_invalid_placement (line 528) | function state_invalid_placement(node, rune) {
function store_invalid_scoped_subscription (line 537) | function store_invalid_scoped_subscription(node) {
function store_invalid_subscription (line 546) | function store_invalid_subscription(node) {
function store_invalid_subscription_module (line 555) | function store_invalid_subscription_module(node) {
function typescript_invalid_feature (line 565) | function typescript_invalid_feature(node, feature) {
function css_empty_declaration (line 574) | function css_empty_declaration(node) {
function css_expected_identifier (line 583) | function css_expected_identifier(node) {
function css_global_block_invalid_combinator (line 593) | function css_global_block_invalid_combinator(node, name) {
function css_global_block_invalid_declaration (line 602) | function css_global_block_invalid_declaration(node) {
function css_global_block_invalid_list (line 611) | function css_global_block_invalid_list(node) {
function css_global_block_invalid_modifier (line 620) | function css_global_block_invalid_modifier(node) {
function css_global_block_invalid_modifier_start (line 629) | function css_global_block_invalid_modifier_start(node) {
function css_global_block_invalid_placement (line 638) | function css_global_block_invalid_placement(node) {
function css_global_invalid_placement (line 647) | function css_global_invalid_placement(node) {
function css_global_invalid_selector (line 656) | function css_global_invalid_selector(node) {
function css_global_invalid_selector_list (line 665) | function css_global_invalid_selector_list(node) {
function css_nesting_selector_invalid_placement (line 674) | function css_nesting_selector_invalid_placement(node) {
function css_selector_invalid (line 683) | function css_selector_invalid(node) {
function css_type_selector_invalid_placement (line 692) | function css_type_selector_invalid_placement(node) {
function animation_duplicate (line 701) | function animation_duplicate(node) {
function animation_invalid_placement (line 710) | function animation_invalid_placement(node) {
function animation_missing_key (line 719) | function animation_missing_key(node) {
function attribute_contenteditable_dynamic (line 728) | function attribute_contenteditable_dynamic(node) {
function attribute_contenteditable_missing (line 737) | function attribute_contenteditable_missing(node) {
function attribute_duplicate (line 746) | function attribute_duplicate(node) {
function attribute_empty_shorthand (line 755) | function attribute_empty_shorthand(node) {
function attribute_invalid_event_handler (line 764) | function attribute_invalid_event_handler(node) {
function attribute_invalid_multiple (line 773) | function attribute_invalid_multiple(node) {
function attribute_invalid_name (line 783) | function attribute_invalid_name(node, name) {
function attribute_invalid_sequence_expression (line 792) | function attribute_invalid_sequence_expression(node) {
function attribute_invalid_type (line 801) | function attribute_invalid_type(node) {
function attribute_unquoted_sequence (line 810) | function attribute_unquoted_sequence(node) {
function bind_group_invalid_expression (line 819) | function bind_group_invalid_expression(node) {
function bind_group_invalid_snippet_parameter (line 828) | function bind_group_invalid_snippet_parameter(node) {
function bind_invalid_expression (line 837) | function bind_invalid_expression(node) {
function bind_invalid_name (line 848) | function bind_invalid_name(node, name, explanation) {
function bind_invalid_parens (line 860) | function bind_invalid_parens(node, name) {
function bind_invalid_target (line 871) | function bind_invalid_target(node, name, elements) {
function bind_invalid_value (line 880) | function bind_invalid_value(node) {
function block_duplicate_clause (line 890) | function block_duplicate_clause(node, name) {
function block_invalid_continuation_placement (line 899) | function block_invalid_continuation_placement(node) {
function block_invalid_elseif (line 908) | function block_invalid_elseif(node) {
function block_invalid_placement (line 919) | function block_invalid_placement(node, name, location) {
function block_unclosed (line 928) | function block_unclosed(node) {
function block_unexpected_character (line 938) | function block_unexpected_character(node, character) {
function block_unexpected_close (line 947) | function block_unexpected_close(node) {
function component_invalid_directive (line 956) | function component_invalid_directive(node) {
function const_tag_cycle (line 966) | function const_tag_cycle(node, cycle) {
function const_tag_invalid_expression (line 975) | function const_tag_invalid_expression(node) {
function const_tag_invalid_placement (line 984) | function const_tag_invalid_placement(node) {
function const_tag_invalid_reference (line 994) | function const_tag_invalid_reference(node, name) {
function debug_tag_invalid_arguments (line 1003) | function debug_tag_invalid_arguments(node) {
function directive_invalid_value (line 1012) | function directive_invalid_value(node) {
function directive_missing_name (line 1022) | function directive_missing_name(node, type) {
function each_key_without_as (line 1031) | function each_key_without_as(node) {
function element_invalid_closing_tag (line 1041) | function element_invalid_closing_tag(node, name) {
function element_invalid_closing_tag_autoclosed (line 1052) | function element_invalid_closing_tag_autoclosed(node, name, reason) {
function element_unclosed (line 1062) | function element_unclosed(node, name) {
function event_handler_invalid_component_modifier (line 1071) | function event_handler_invalid_component_modifier(node) {
function event_handler_invalid_modifier (line 1081) | function event_handler_invalid_modifier(node, list) {
function event_handler_invalid_modifier_combination (line 1092) | function event_handler_invalid_modifier_combination(node, modifier1, mod...
function expected_attribute_value (line 1101) | function expected_attribute_value(node) {
function expected_block_type (line 1110) | function expected_block_type(node) {
function expected_identifier (line 1119) | function expected_identifier(node) {
function expected_pattern (line 1128) | function expected_pattern(node) {
function expected_tag (line 1137) | function expected_tag(node) {
function expected_token (line 1147) | function expected_token(node, token) {
function expected_whitespace (line 1156) | function expected_whitespace(node) {
function illegal_await_expression (line 1165) | function illegal_await_expression(node) {
function illegal_element_attribute (line 1175) | function illegal_element_attribute(node, name) {
function js_parse_error (line 1185) | function js_parse_error(node, message) {
function let_directive_invalid_placement (line 1194) | function let_directive_invalid_placement(node) {
function mixed_event_handler_syntaxes (line 1204) | function mixed_event_handler_syntaxes(node, name) {
function node_invalid_placement (line 1214) | function node_invalid_placement(node, message) {
function render_tag_invalid_call_expression (line 1223) | function render_tag_invalid_call_expression(node) {
function render_tag_invalid_expression (line 1232) | function render_tag_invalid_expression(node) {
function render_tag_invalid_spread_argument (line 1241) | function render_tag_invalid_spread_argument(node) {
function script_duplicate (line 1250) | function script_duplicate(node) {
function script_invalid_attribute_value (line 1260) | function script_invalid_attribute_value(node, name) {
function script_invalid_context (line 1269) | function script_invalid_context(node) {
function script_reserved_attribute (line 1279) | function script_reserved_attribute(node, name) {
function slot_attribute_duplicate (line 1290) | function slot_attribute_duplicate(node, name, component) {
function slot_attribute_invalid (line 1299) | function slot_attribute_invalid(node) {
function slot_attribute_invalid_placement (line 1308) | function slot_attribute_invalid_placement(node) {
function slot_default_duplicate (line 1317) | function slot_default_duplicate(node) {
function slot_element_invalid_attribute (line 1326) | function slot_element_invalid_attribute(node) {
function slot_element_invalid_name (line 1335) | function slot_element_invalid_name(node) {
function slot_element_invalid_name_default (line 1344) | function slot_element_invalid_name_default(node) {
function slot_snippet_conflict (line 1353) | function slot_snippet_conflict(node) {
function snippet_conflict (line 1362) | function snippet_conflict(node) {
function snippet_invalid_rest_parameter (line 1371) | function snippet_invalid_rest_parameter(node) {
function snippet_shadowing_prop (line 1381) | function snippet_shadowing_prop(node, prop) {
function style_directive_invalid_modifier (line 1390) | function style_directive_invalid_modifier(node) {
function style_duplicate (line 1399) | function style_duplicate(node) {
function svelte_body_illegal_attribute (line 1408) | function svelte_body_illegal_attribute(node) {
function svelte_boundary_invalid_attribute (line 1417) | function svelte_boundary_invalid_attribute(node) {
function svelte_boundary_invalid_attribute_value (line 1426) | function svelte_boundary_invalid_attribute_value(node) {
function svelte_component_invalid_this (line 1435) | function svelte_component_invalid_this(node) {
function svelte_component_missing_this (line 1444) | function svelte_component_missing_this(node) {
function svelte_element_missing_this (line 1453) | function svelte_element_missing_this(node) {
function svelte_fragment_invalid_attribute (line 1462) | function svelte_fragment_invalid_attribute(node) {
function svelte_fragment_invalid_placement (line 1471) | function svelte_fragment_invalid_placement(node) {
function svelte_head_illegal_attribute (line 1480) | function svelte_head_illegal_attribute(node) {
function svelte_meta_duplicate (line 1490) | function svelte_meta_duplicate(node, name) {
function svelte_meta_invalid_content (line 1500) | function svelte_meta_invalid_content(node, name) {
function svelte_meta_invalid_placement (line 1510) | function svelte_meta_invalid_placement(node, name) {
function svelte_meta_invalid_tag (line 1520) | function svelte_meta_invalid_tag(node, list) {
function svelte_options_deprecated_tag (line 1529) | function svelte_options_deprecated_tag(node) {
function svelte_options_invalid_attribute (line 1538) | function svelte_options_invalid_attribute(node) {
function svelte_options_invalid_attribute_value (line 1548) | function svelte_options_invalid_attribute_value(node, list) {
function svelte_options_invalid_customelement (line 1557) | function svelte_options_invalid_customelement(node) {
function svelte_options_invalid_customelement_props (line 1566) | function svelte_options_invalid_customelement_props(node) {
function svelte_options_invalid_customelement_shadow (line 1575) | function svelte_options_invalid_customelement_shadow(node) {
function svelte_options_invalid_tagname (line 1584) | function svelte_options_invalid_tagname(node) {
function svelte_options_reserved_tagname (line 1593) | function svelte_options_reserved_tagname(node) {
function svelte_options_unknown_attribute (line 1603) | function svelte_options_unknown_attribute(node, name) {
function svelte_self_invalid_placement (line 1612) | function svelte_self_invalid_placement(node) {
function tag_invalid_name (line 1621) | function tag_invalid_name(node) {
function tag_invalid_placement (line 1632) | function tag_invalid_placement(node, name, location) {
function textarea_invalid_content (line 1641) | function textarea_invalid_content(node) {
function title_illegal_attribute (line 1650) | function title_illegal_attribute(node) {
function title_invalid_content (line 1659) | function title_invalid_content(node) {
function transition_conflict (line 1670) | function transition_conflict(node, type, existing) {
function transition_duplicate (line 1680) | function transition_duplicate(node, type) {
function unexpected_eof (line 1689) | function unexpected_eof(node) {
function unexpected_reserved_word (line 1699) | function unexpected_reserved_word(node, word) {
function unterminated_string_constant (line 1708) | function unterminated_string_constant(node) {
function void_element_invalid_content (line 1717) | function void_element_invalid_content(node) {
FILE: packages/svelte/src/compiler/index.js
function compile (line 23) | function compile(source, options) {
function compileModule (line 69) | function compileModule(source, options) {
function parse (line 117) | function parse(source, { modern, loose } = {}) {
function parseCss (line 131) | function parseCss(source) {
function to_public_ast (line 153) | function to_public_ast(source, ast, modern) {
function remove_bom (line 183) | function remove_bom(source) {
function walk (line 194) | function walk() {
FILE: packages/svelte/src/compiler/legacy.js
function remove_surrounding_whitespace_nodes (line 16) | function remove_surrounding_whitespace_nodes(nodes) {
function convert (line 42) | function convert(source, ast) {
FILE: packages/svelte/src/compiler/migrate/index.js
class MigrationError (line 28) | class MigrationError extends Error {
method constructor (line 32) | constructor(msg) {
function migrate_css (line 41) | function migrate_css(state) {
function find_closing_parenthesis (line 102) | function find_closing_parenthesis(start, code) {
function migrate (line 124) | function migrate(source, { filename, use_ts } = {}) {
method _ (line 488) | _(node, { state, next }) {
method Identifier (line 503) | Identifier(node, { state, path }) {
method ImportDeclaration (line 506) | ImportDeclaration(node, { state }) {
method ExportNamedDeclaration (line 544) | ExportNamedDeclaration(node, { state, next }) {
method VariableDeclaration (line 567) | VariableDeclaration(node, { state, path, visit, next }) {
method BreakStatement (line 918) | BreakStatement(node, { state, path }) {
method LabeledStatement (line 927) | LabeledStatement(node, { path, state, next }) {
function trim_block (line 1049) | function trim_block(state, start, end) {
method Identifier (line 1059) | Identifier(node, { state, path }) {
method RegularElement (line 1062) | RegularElement(node, { state, path, next }) {
method SvelteSelf (line 1078) | SvelteSelf(node, { state, next }) {
method SvelteElement (line 1115) | SvelteElement(node, { state, path, next }) {
method Component (line 1140) | Component(node, { state, path, next }) {
method SvelteComponent (line 1144) | SvelteComponent(node, { state, next, path }) {
method SvelteFragment (line 1214) | SvelteFragment(node, { state, path, next }) {
method SvelteWindow (line 1218) | SvelteWindow(node, { state, next }) {
method SvelteBody (line 1222) | SvelteBody(node, { state, next }) {
method SvelteDocument (line 1226) | SvelteDocument(node, { state, next }) {
method SlotElement (line 1230) | SlotElement(node, { state, path, next, visit }) {
method Comment (line 1369) | Comment(node, { state }) {
method HtmlTag (line 1375) | HtmlTag(node, { state, next }) {
method ConstTag (line 1379) | ConstTag(node, { state, next }) {
method IfBlock (line 1383) | IfBlock(node, { state, next }) {
method AwaitBlock (line 1389) | AwaitBlock(node, { state, next }) {
method KeyBlock (line 1409) | KeyBlock(node, { state, next }) {
function migrate_slot_usage (line 1422) | function migrate_slot_usage(node, path, state) {
function extract_type_and_comment (line 1591) | function extract_type_and_comment(declarator, state, path) {
function handle_events (line 1727) | function handle_events(element, state) {
function get_node_range (line 1822) | function get_node_range(source, node) {
function handle_identifier (line 1852) | function handle_identifier(node, state, path) {
function guess_indent (line 1974) | function guess_indent(content) {
FILE: packages/svelte/src/compiler/phases/1-parse/acorn.js
function parse (line 22) | function parse(source, comments, typescript, is_script) {
function parse_expression_at (line 75) | function parse_expression_at(source, comments, typescript, index) {
function get_comment_handlers (line 104) | function get_comment_handlers(source, comments, index = 0) {
FILE: packages/svelte/src/compiler/phases/1-parse/index.js
function is_whitespace (line 17) | function is_whitespace(cc) {
class Parser (line 38) | class Parser {
method forCss (line 61) | static forCss(source) {
method constructor (line 91) | constructor(template, loose) {
method current (line 174) | current() {
method acorn_error (line 182) | acorn_error(err) {
method eat (line 191) | eat(str, required = false, required_in_loose = true) {
method match (line 205) | match(str) {
method match_regex (line 219) | match_regex(pattern) {
method allow_whitespace (line 227) | allow_whitespace() {
method read (line 240) | read(pattern) {
method read_identifier (line 249) | read_identifier() {
method read_until (line 288) | read_until(pattern) {
method require_whitespace (line 306) | require_whitespace() {
method pop (line 314) | pop() {
method append (line 324) | append(node) {
function parse (line 335) | function parse(template, loose = false) {
FILE: packages/svelte/src/compiler/phases/1-parse/read/context.js
function read_pattern (line 12) | function read_pattern(parser) {
function read_type_annotation (line 76) | function read_type_annotation(parser) {
FILE: packages/svelte/src/compiler/phases/1-parse/read/expression.js
function get_loose_identifier (line 13) | function get_loose_identifier(parser, opening_token) {
function read_expression (line 35) | function read_expression(parser, opening_token, disallow_loose) {
FILE: packages/svelte/src/compiler/phases/1-parse/read/options.js
function read_options (line 10) | function read_options(node) {
function get_static_value (line 202) | function get_static_value(attribute) {
function get_boolean_value (line 224) | function get_boolean_value(attribute) {
function validate_tag (line 252) | function validate_tag(attribute, tag) {
FILE: packages/svelte/src/compiler/phases/1-parse/read/script.js
constant RESERVED_ATTRIBUTES (line 14) | const RESERVED_ATTRIBUTES = ['server', 'client', 'worker', 'test', 'defa...
constant ALLOWED_ATTRIBUTES (line 15) | const ALLOWED_ATTRIBUTES = ['context', 'generics', 'lang', 'module'];
function read_script (line 23) | function read_script(parser, start, attributes) {
FILE: packages/svelte/src/compiler/phases/1-parse/read/style.js
constant REGEX_MATCHER (line 5) | const REGEX_MATCHER = /[~^$*|]?=/y;
constant REGEX_CLOSING_BRACKET (line 6) | const REGEX_CLOSING_BRACKET = /[\s\]]/;
constant REGEX_ATTRIBUTE_FLAGS (line 7) | const REGEX_ATTRIBUTE_FLAGS = /[a-zA-Z]+/y;
constant REGEX_COMBINATOR (line 8) | const REGEX_COMBINATOR = /(\+|~|>|\|\|)/y;
constant REGEX_PERCENTAGE (line 9) | const REGEX_PERCENTAGE = /\d+(\.\d+)?%/y;
constant REGEX_NTH_OF (line 10) | const REGEX_NTH_OF =
constant REGEX_WHITESPACE_OR_COLON (line 12) | const REGEX_WHITESPACE_OR_COLON = /[\s:]/;
constant REGEX_LEADING_HYPHEN_OR_DIGIT (line 13) | const REGEX_LEADING_HYPHEN_OR_DIGIT = /-?\d/y;
constant REGEX_VALID_IDENTIFIER_CHAR (line 14) | const REGEX_VALID_IDENTIFIER_CHAR = /[a-zA-Z0-9_-]/;
constant REGEX_UNICODE_SEQUENCE (line 15) | const REGEX_UNICODE_SEQUENCE = /\\[0-9a-fA-F]{1,6}(\r\n|\s)?/y;
constant REGEX_COMMENT_CLOSE (line 16) | const REGEX_COMMENT_CLOSE = /\*\//;
constant REGEX_HTML_COMMENT_CLOSE (line 17) | const REGEX_HTML_COMMENT_CLOSE = /-->/;
function read_style (line 25) | function read_style(parser, start, attributes) {
function read_body (line 53) | function read_body(parser, finished) {
function read_at_rule (line 72) | function read_at_rule(parser) {
function read_rule (line 105) | function read_rule(parser) {
function read_selector_list (line 128) | function read_selector_list(parser, inside_pseudo_class = false) {
function read_selector (line 164) | function read_selector(parser, inside_pseudo_class = false) {
function read_combinator (line 375) | function read_combinator(parser) {
function read_block (line 410) | function read_block(parser) {
function read_block_item (line 444) | function read_block_item(parser) {
function read_declaration (line 463) | function read_declaration(parser) {
function read_value (line 497) | function read_value(parser) {
function read_attribute_value (line 542) | function read_attribute_value(parser) {
function read_identifier (line 574) | function read_identifier(parser) {
function allow_comment_or_whitespace (line 613) | function allow_comment_or_whitespace(parser) {
function parse_stylesheet (line 635) | function parse_stylesheet(parser) {
FILE: packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js
function remove_this_param (line 11) | function remove_this_param(node, context) {
method _ (line 20) | _(node, context) {
method Decorator (line 34) | Decorator(node) {
method ImportDeclaration (line 37) | ImportDeclaration(node) {
method ExportNamedDeclaration (line 49) | ExportNamedDeclaration(node, context) {
method ExportDefaultDeclaration (line 69) | ExportDefaultDeclaration(node) {
method ExportAllDeclaration (line 73) | ExportAllDeclaration(node) {
method PropertyDefinition (line 77) | PropertyDefinition(node, { next }) {
method TSAsExpression (line 86) | TSAsExpression(node, context) {
method TSSatisfiesExpression (line 89) | TSSatisfiesExpression(node, context) {
method TSNonNullExpression (line 92) | TSNonNullExpression(node, context) {
method TSInterfaceDeclaration (line 95) | TSInterfaceDeclaration() {
method TSTypeAliasDeclaration (line 98) | TSTypeAliasDeclaration() {
method TSTypeAssertion (line 101) | TSTypeAssertion(node, context) {
method TSEnumDeclaration (line 104) | TSEnumDeclaration(node) {
method TSParameterProperty (line 107) | TSParameterProperty(node, context) {
method TSInstantiationExpression (line 113) | TSInstantiationExpression(node, context) {
method TSDeclareFunction (line 118) | TSDeclareFunction() {
method ClassBody (line 121) | ClassBody(node, context) {
method ClassDeclaration (line 134) | ClassDeclaration(node, context) {
method ClassExpression (line 144) | ClassExpression(node, context) {
method MethodDefinition (line 150) | MethodDefinition(node, context) {
method VariableDeclaration (line 156) | VariableDeclaration(node, context) {
method TSModuleDeclaration (line 162) | TSModuleDeclaration(node, context) {
function remove_typescript_nodes (line 180) | function remove_typescript_nodes(ast) {
FILE: packages/svelte/src/compiler/phases/1-parse/state/element.js
function is_valid_element_name (line 31) | function is_valid_element_name(name) {
function element (line 64) | function element(parser) {
function parent_is_head (line 444) | function parent_is_head(stack) {
function parent_is_shadowroot_template (line 455) | function parent_is_shadowroot_template(stack) {
function read_static_attribute (line 475) | function read_static_attribute(parser) {
function read_attribute (line 520) | function read_attribute(parser) {
function read_comment (line 730) | function read_comment(parser) {
function get_directive_type (line 774) | function get_directive_type(name) {
function read_attribute_value (line 790) | function read_attribute_value(parser) {
function read_sequence (line 849) | function read_sequence(parser, done, location) {
function read_tag (line 935) | function read_tag(parser, regex) {
FILE: packages/svelte/src/compiler/phases/1-parse/state/fragment.js
function fragment (line 7) | function fragment(parser) {
FILE: packages/svelte/src/compiler/phases/1-parse/state/tag.js
function tag (line 18) | function tag(parser) {
function open (line 51) | function open(parser) {
function next (line 431) | function next(parser) {
function close (line 545) | function close(parser) {
function special (line 616) | function special(parser) {
FILE: packages/svelte/src/compiler/phases/1-parse/state/text.js
function text (line 6) | function text(parser) {
FILE: packages/svelte/src/compiler/phases/1-parse/utils/bracket.js
function infinity_if_negative (line 8) | function infinity_if_negative(num) {
function find_string_end (line 21) | function find_string_end(string, search_start_index, string_start_char) {
function find_regex_end (line 41) | function find_regex_end(string, search_start_index) {
function find_unescaped_char (line 52) | function find_unescaped_char(string, search_start_index, char) {
function count_leading_backslashes (line 77) | function count_leading_backslashes(string, search_start_index) {
function find_matching_bracket (line 94) | function find_matching_bracket(template, index, open) {
function match_bracket (line 151) | function match_bracket(parser, start, brackets = default_brackets) {
function match_quote (line 189) | function match_quote(parser, start, quote) {
FILE: packages/svelte/src/compiler/phases/1-parse/utils/create.js
function create_fragment (line 7) | function create_fragment(transparent = false) {
FILE: packages/svelte/src/compiler/phases/1-parse/utils/fuzzymatch.js
function fuzzymatch (line 6) | function fuzzymatch(name, names) {
constant GRAM_SIZE_LOWER (line 18) | const GRAM_SIZE_LOWER = 2;
constant GRAM_SIZE_UPPER (line 19) | const GRAM_SIZE_UPPER = 3;
function _distance (line 27) | function _distance(str1, str2) {
function levenshtein (line 45) | function levenshtein(str1, str2) {
function iterate_grams (line 78) | function iterate_grams(value, gram_size = 2) {
function gram_counter (line 98) | function gram_counter(value, gram_size = 2) {
function sort_descending (line 120) | function sort_descending(a, b) {
class FuzzySet (line 124) | class FuzzySet {
method constructor (line 135) | constructor(arr) {
method add (line 148) | add(value) {
method _add (line 164) | _add(value, gram_size) {
method get (line 192) | get(value) {
method __get (line 213) | __get(value, gram_size) {
FILE: packages/svelte/src/compiler/phases/1-parse/utils/html.js
function reg_exp_entity (line 12) | function reg_exp_entity(entity_name, is_attribute_value) {
function get_entity_pattern (line 22) | function get_entity_pattern(is_attribute_value) {
function decode_character_references (line 40) | function decode_character_references(html, is_attribute_value) {
constant NUL (line 68) | const NUL = 0;
function validate_code (line 79) | function validate_code(code) {
FILE: packages/svelte/src/compiler/phases/2-analyze/css/css-analyze.js
function is_global_block_selector (line 25) | function is_global_block_selector(simple_selector) {
function is_unscoped (line 36) | function is_unscoped(path) {
function is_in_global_block (line 46) | function is_in_global_block(path) {
method Atrule (line 52) | Atrule(node, context) {
method ComplexSelector (line 64) | ComplexSelector(node, context) {
method RelativeSelector (line 142) | RelativeSelector(node, context) {
method Rule (line 197) | Rule(node, context) {
method NestingSelector (line 287) | NestingSelector(node, context) {
function analyze_css (line 322) | function analyze_css(stylesheet, analysis) {
FILE: packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js
constant NODE_PROBABLY_EXISTS (line 15) | const NODE_PROBABLY_EXISTS = 0;
constant NODE_DEFINITELY_EXISTS (line 16) | const NODE_DEFINITELY_EXISTS = 1;
constant FORWARD (line 17) | const FORWARD = 0;
constant BACKWARD (line 18) | const BACKWARD = 1;
function prune (line 130) | function prune(stylesheet, elements) {
function get_relative_selectors (line 171) | function get_relative_selectors(node) {
function truncate (line 209) | function truncate(node) {
function apply_selector (line 243) | function apply_selector(
function apply_combinator (line 291) | function apply_combinator(relative_selector, relative_selectors, from, t...
function every_is_global (line 368) | function every_is_global(relative_selectors, from, to, rule) {
function is_global (line 384) | function is_global(selector, rule) {
function relative_selector_might_apply_to_node (line 436) | function relative_selector_might_apply_to_node(relative_selector, rule, ...
function test_attribute (line 683) | function test_attribute(operator, expected_value, case_insensitive, valu...
function attribute_matches (line 713) | function attribute_matches(node, name, expected_value, operator, case_in...
function unquote (line 825) | function unquote(str) {
function get_ancestor_elements (line 837) | function get_ancestor_elements(node, adjacent_only, seen = new Set()) {
function get_descendant_elements (line 907) | function get_descendant_elements(node, adjacent_only, seen = new Set()) {
function get_element_parent (line 974) | function get_element_parent(node) {
function get_possible_element_siblings (line 996) | function get_possible_element_siblings(node, direction, adjacent_only, s...
function get_possible_nested_siblings (line 1097) | function get_possible_nested_siblings(node, direction, adjacent_only, se...
function has_definite_elements (line 1162) | function has_definite_elements(result) {
function add_to_map (line 1179) | function add_to_map(from, to) {
function higher_existence (line 1190) | function higher_existence(exist1, exist2) {
function loop_child (line 1201) | function loop_child(children, direction, adjacent_only, seen) {
function is_block (line 1239) | function is_block(node) {
FILE: packages/svelte/src/compiler/phases/2-analyze/css/css-warn.js
function warn_unused (line 10) | function warn_unused(stylesheet) {
method Atrule (line 16) | Atrule(node, context) {
method PseudoClassSelector (line 21) | PseudoClassSelector(node, context) {
method ComplexSelector (line 26) | ComplexSelector(node, context) {
method Rule (line 40) | Rule(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/css/utils.js
constant UNKNOWN (line 3) | const UNKNOWN = {};
function gather_possible_values (line 11) | function gather_possible_values(node, is_class, set, is_nested = false) {
function get_possible_values (line 85) | function get_possible_values(chunk, is_class) {
function get_parent_rules (line 102) | function get_parent_rules(rule) {
function is_global (line 118) | function is_global(relative_selector) {
function is_unscoped_pseudo_class (line 138) | function is_unscoped_pseudo_class(selector) {
function is_outer_global (line 163) | function is_outer_global(relative_selector) {
FILE: packages/svelte/src/compiler/phases/2-analyze/index.js
method _ (line 93) | _(node, { state, next, path }) {
function js (line 215) | function js(script, root, allow_reactive_declarations, parent) {
function get_component_name (line 238) | function get_component_name(filename) {
constant RESERVED (line 249) | const RESERVED = ['$$props', '$$restProps', '$$slots'];
function analyze_module (line 256) | function analyze_module(source, options) {
function analyze_component (line 330) | function analyze_component(root, source, options) {
function calculate_blockers (line 949) | function calculate_blockers(instance, analysis) {
function order_reactive_statements (line 1264) | function order_reactive_statements(unsorted_reactive_declarations) {
FILE: packages/svelte/src/compiler/phases/2-analyze/types.d.ts
type AnalysisState (line 6) | interface AnalysisState {
type Context (line 38) | type Context<State extends AnalysisState = AnalysisState> = import('zimm...
type Visitors (line 43) | type Visitors<State extends AnalysisState = AnalysisState> = import('zim...
FILE: packages/svelte/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js
function check_graph_for_cycles (line 6) | function check_graph_for_cycles(edges) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js
function AnimateDirective (line 9) | function AnimateDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ArrowFunctionExpression.js
function ArrowFunctionExpression (line 9) | function ArrowFunctionExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/AssignmentExpression.js
function AssignmentExpression (line 10) | function AssignmentExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/AttachTag.js
function AttachTag (line 10) | function AttachTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js
function Attribute (line 11) | function Attribute(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js
function AwaitBlock (line 11) | function AwaitBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js
function AwaitExpression (line 10) | function AwaitExpression(node, context) {
function is_reactive_expression (line 51) | function is_reactive_expression(path, in_derived) {
function is_last_evaluated_expression (line 81) | function is_last_evaluated_expression(path, node) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js
function BindDirective (line 20) | function BindDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js
function CallExpression (line 16) | function CallExpression(node, context) {
function get_function_label (line 279) | function get_function_label(nodes) {
function is_variable_declaration (line 308) | function is_variable_declaration(parent, context) {
function is_class_property_definition (line 315) | function is_class_property_definition(parent) {
function is_class_property_assignment_at_constructor_root (line 323) | function is_class_property_assignment_at_constructor_root(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js
function ClassBody (line 15) | function ClassBody(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDeclaration.js
function ClassDeclaration (line 10) | function ClassDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js
function ClassDirective (line 10) | function ClassDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Component.js
function Component (line 9) | function Component(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js
function ConstTag (line 10) | function ConstTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js
function DebugTag (line 9) | function DebugTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js
function EachBlock (line 14) | function EachBlock(node, context) {
function collect_transitive_dependencies (line 86) | function collect_transitive_dependencies(binding, bindings) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ExportDefaultDeclaration.js
function ExportDefaultDeclaration (line 10) | function ExportDefaultDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ExportNamedDeclaration.js
function ExportNamedDeclaration (line 10) | function ExportNamedDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ExportSpecifier.js
function ExportSpecifier (line 9) | function ExportSpecifier(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionStatement.js
function ExpressionStatement (line 9) | function ExpressionStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js
function ExpressionTag (line 11) | function ExpressionTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Fragment.js
function Fragment (line 8) | function Fragment(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/FunctionDeclaration.js
function FunctionDeclaration (line 10) | function FunctionDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/FunctionExpression.js
function FunctionExpression (line 9) | function FunctionExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js
function HtmlTag (line 10) | function HtmlTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Identifier.js
function Identifier (line 16) | function Identifier(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js
function IfBlock (line 10) | function IfBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/ImportDeclaration.js
function ImportDeclaration (line 9) | function ImportDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js
function KeyBlock (line 10) | function KeyBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js
function LabeledStatement (line 12) | function LabeledStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js
function LetDirective (line 9) | function LetDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Literal.js
function Literal (line 8) | function Literal(node) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/MemberExpression.js
function MemberExpression (line 10) | function MemberExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js
function NewExpression (line 9) | function NewExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js
function OnDirective (line 10) | function OnDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/PropertyDefinition.js
function PropertyDefinition (line 10) | function PropertyDefinition(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js
function RegularElement (line 26) | function RegularElement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js
function RenderTag (line 14) | function RenderTag(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js
function SlotElement (line 12) | function SlotElement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js
function SnippetBlock (line 11) | function SnippetBlock(node, context) {
function can_hoist_snippet (line 81) | function can_hoist_snippet(scope, scopes, visited = new Set()) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js
function SpreadAttribute (line 10) | function SpreadAttribute(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadElement.js
function SpreadElement (line 8) | function SpreadElement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js
function StyleDirective (line 11) | function StyleDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js
function SvelteBody (line 11) | function SvelteBody(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js
function SvelteBoundary (line 12) | function SvelteBoundary(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js
function SvelteComponent (line 10) | function SvelteComponent(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js
function SvelteDocument (line 11) | function SvelteDocument(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js
function SvelteElement (line 13) | function SvelteElement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js
function SvelteFragment (line 10) | function SvelteFragment(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js
function SvelteHead (line 10) | function SvelteHead(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js
function SvelteSelf (line 12) | function SvelteSelf(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js
function SvelteWindow (line 11) | function SvelteWindow(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/TaggedTemplateExpression.js
function TaggedTemplateExpression (line 9) | function TaggedTemplateExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/TemplateElement.js
function TemplateElement (line 8) | function TemplateElement(node) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js
function Text (line 13) | function Text(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js
function TitleElement (line 9) | function TitleElement(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js
function TransitionDirective (line 11) | function TransitionDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/UpdateExpression.js
function UpdateExpression (line 10) | function UpdateExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js
function UseDirective (line 10) | function UseDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/VariableDeclarator.js
function VariableDeclarator (line 16) | function VariableDeclarator(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js
function check_element (line 56) | function check_element(node, context) {
function is_presentation_role (line 568) | function is_presentation_role(role) {
function is_hidden_from_screen_reader (line 576) | function is_hidden_from_screen_reader(tag_name, attribute_map) {
function has_disabled_attribute (line 594) | function has_disabled_attribute(attribute_map) {
function element_interactivity (line 615) | function element_interactivity(tag_name, attribute_map) {
function is_semantic_role_element (line 651) | function is_semantic_role_element(role, tag_name, attribute_map) {
function is_valid_autocomplete (line 681) | function is_valid_autocomplete(autocomplete) {
function input_implicit_role (line 713) | function input_implicit_role(attribute_map) {
function menuitem_implicit_role (line 726) | function menuitem_implicit_role(attribute_map) {
function get_implicit_role (line 738) | function get_implicit_role(name, attribute_map) {
function is_non_interactive_roles (line 751) | function is_non_interactive_roles(role) {
function is_interactive_roles (line 758) | function is_interactive_roles(role) {
function is_abstract_role (line 765) | function is_abstract_role(role) {
function get_static_text_value (line 772) | function get_static_text_value(attribute) {
function get_static_value (line 781) | function get_static_value(attribute) {
function has_content (line 791) | function has_content(element) {
function match_schema (line 831) | function match_schema(schema, tag_name, attribute_map) {
function is_parent (line 848) | function is_parent(path, elements) {
function validate_aria_attribute_value (line 866) | function validate_aria_attribute_value(attribute, name, schema, value) {
function warn_missing_attribute (line 945) | function warn_missing_attribute(node, attributes, name = node.name) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js
function validate_attribute_name (line 12) | function validate_attribute_name(attribute) {
function validate_attribute (line 27) | function validate_attribute(attribute, parent) {
function validate_slot_attribute (line 56) | function validate_slot_attribute(context, attribute, is_component = fals...
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js
function visit_component (line 19) | function visit_component(node, context) {
function disallow_unparenthesized_sequences (line 168) | function disallow_unparenthesized_sequences(expression, source) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js
constant EVENT_MODIFIERS (line 13) | const EVENT_MODIFIERS = [
function validate_element (line 29) | function validate_element(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js
function mark_subtree_dynamic (line 6) | function mark_subtree_dynamic(path) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/function.js
function visit_function (line 8) | function visit_function(node, context) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/snippets.js
function is_resolved_snippet (line 8) | function is_resolved_snippet(binding) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js
function disallow_children (line 7) | function disallow_children(node) {
FILE: packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js
function validate_assignment (line 18) | function validate_assignment(node, argument, context) {
function validate_no_const_assignment (line 84) | function validate_no_const_assignment(node, argument, scope, is_binding) {
function validate_opening_tag (line 132) | function validate_opening_tag(node, state, expected) {
function validate_block_not_empty (line 143) | function validate_block_not_empty(node, context) {
function ensure_no_module_import_conflict (line 156) | function ensure_no_module_import_conflict(node, state) {
function is_safe_identifier (line 175) | function is_safe_identifier(expression, scope) {
function is_pure (line 201) | function is_pure(node, context) {
function validate_identifier_name (line 253) | function validate_identifier_name(binding, function_depth) {
function validate_export (line 289) | function validate_export(node, scope, name) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/transform-client.js
function client_component (line 146) | function client_component(analysis, options) {
function client_module (line 691) | function client_module(analysis, options) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/transform-template/fix-attribute-casing.js
function fix_attribute_casing (line 15) | function fix_attribute_casing(name) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js
function build_locations (line 11) | function build_locations(nodes) {
function transform_template (line 37) | function transform_template(state, namespace, flags = 0) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/transform-template/template.js
class Template (line 9) | class Template {
method push_element (line 35) | push_element(name, start, is_html) {
method push_comment (line 52) | push_comment(data) {
method push_text (line 57) | push_text(nodes) {
method pop_element (line 61) | pop_element() {
method set_prop (line 70) | set_prop(key, value) {
method as_html (line 74) | as_html() {
method as_tree (line 78) | as_tree() {
function stringify (line 91) | function stringify(item) {
function objectify (line 121) | function objectify(item) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/transform-template/types.d.ts
type Element (line 3) | interface Element {
type Text (line 13) | interface Text {
type Comment (line 18) | interface Comment {
type Node (line 23) | type Node = Element | Text | Comment;
FILE: packages/svelte/src/compiler/phases/3-transform/client/types.d.ts
type ClientTransformState (line 17) | interface ClientTransformState extends TransformState {
type ComponentClientTransformState (line 39) | interface ComponentClientTransformState extends ClientTransformState {
type Context (line 91) | type Context = import('zimmerframe').Context
type Visitors (line 92) | type Visitors = import('zimmerframe').Visitors
type ComponentContext (line 94) | type ComponentContext = import('zimmerframe').Context
type ComponentVisitors (line 98) | type ComponentVisitors = import('zimmerframe').Visitors
FILE: packages/svelte/src/compiler/phases/3-transform/client/utils.js
function is_state_source (line 21) | function is_state_source(binding, analysis) {
function build_getter (line 33) | function build_getter(node, state) {
function get_prop_source (line 53) | function get_prop_source(binding, state, name, initial) {
function is_prop_source (line 116) | function is_prop_source(binding, state) {
function should_proxy (line 133) | function should_proxy(node, scope) {
function create_derived (line 173) | function create_derived(state, expression, async = false) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js
function AnimateDirective (line 11) | function AnimateDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ArrowFunctionExpression.js
function ArrowFunctionExpression (line 9) | function ArrowFunctionExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js
function AssignmentExpression (line 22) | function AssignmentExpression(node, context) {
function is_non_coercive_operator (line 36) | function is_non_coercive_operator(operator) {
function build_assignment (line 47) | function build_assignment(operator, left, right, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/AttachTag.js
function AttachTag (line 10) | function AttachTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js
function Attribute (line 10) | function Attribute(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js
function AwaitBlock (line 14) | function AwaitBlock(node, context) {
function create_derived_block_argument (line 96) | function create_derived_block_argument(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js
function AwaitExpression (line 11) | function AwaitExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/BinaryExpression.js
function BinaryExpression (line 10) | function BinaryExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js
function BindDirective (line 15) | function BindDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/BlockStatement.js
function BlockStatement (line 10) | function BlockStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/BreakStatement.js
function BreakStatement (line 9) | function BreakStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js
function CallExpression (line 13) | function CallExpression(node, context) {
function transform_inspect_rune (line 125) | function transform_inspect_rune(rune, node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js
function ClassBody (line 13) | function ClassBody(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js
function Comment (line 8) | function Comment(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Component.js
function Component (line 9) | function Component(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js
function ConstTag (line 16) | function ConstTag(node, context) {
function add_const_declaration (line 96) | function add_const_declaration(state, id, expression, metadata, bindings) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js
function DebugTag (line 10) | function DebugTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js
function EachBlock (line 22) | function EachBlock(node, context) {
function collect_parent_each_blocks (line 360) | function collect_parent_each_blocks(context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ExportNamedDeclaration.js
function ExportNamedDeclaration (line 9) | function ExportNamedDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js
function ExpressionStatement (line 10) | function ExpressionStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js
function ForOfStatement (line 10) | function ForOfStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js
function Fragment (line 16) | function Fragment(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/FunctionDeclaration.js
function FunctionDeclaration (line 8) | function FunctionDeclaration(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/FunctionExpression.js
function FunctionExpression (line 9) | function FunctionExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js
function HtmlTag (line 11) | function HtmlTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Identifier.js
function Identifier (line 11) | function Identifier(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js
function IfBlock (line 11) | function IfBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js
function KeyBlock (line 11) | function KeyBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/LabeledStatement.js
function LabeledStatement (line 11) | function LabeledStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js
function LetDirective (line 11) | function LetDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/MemberExpression.js
function MemberExpression (line 9) | function MemberExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js
function OnDirective (line 19) | function OnDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/Program.js
function Program (line 12) | function Program(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js
function RegularElement (line 40) | function RegularElement(node, context) {
function build_class_directives_object (line 502) | function build_class_directives_object(
function build_style_directives_object (line 528) | function build_style_directives_object(
function build_element_attribute_update (line 583) | function build_element_attribute_update(element, node_id, name, value, a...
function build_custom_element_attribute_update_assignment (line 644) | function build_custom_element_attribute_update_assignment(node_id, attri...
function build_element_special_value_attribute (line 667) | function build_element_special_value_attribute(
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js
function RenderTag (line 12) | function RenderTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js
function SlotElement (line 12) | function SlotElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js
function SnippetBlock (line 13) | function SnippetBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js
function SpreadAttribute (line 8) | function SpreadAttribute(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js
function SvelteBody (line 9) | function SvelteBody(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBoundary.js
function SvelteBoundary (line 11) | function SvelteBoundary(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js
function SvelteComponent (line 10) | function SvelteComponent(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js
function SvelteDocument (line 9) | function SvelteDocument(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js
function SvelteElement (line 19) | function SvelteElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js
function SvelteFragment (line 9) | function SvelteFragment(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js
function SvelteHead (line 12) | function SvelteHead(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js
function SvelteSelf (line 10) | function SvelteSelf(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js
function SvelteWindow (line 9) | function SvelteWindow(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js
function TitleElement (line 10) | function TitleElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js
function TransitionDirective (line 12) | function TransitionDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js
function UpdateExpression (line 11) | function UpdateExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js
function UseDirective (line 11) | function UseDirective(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js
function VariableDeclaration (line 16) | function VariableDeclaration(node, context) {
function create_state_declarators (line 388) | function create_state_declarators(declarator, context, value) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js
function build_component (line 19) | function build_component(node, component_name, loc, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/declarations.js
function get_value (line 10) | function get_value(node) {
function add_state_transformers (line 18) | function add_state_transformers(context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js
function build_attribute_effect (line 22) | function build_attribute_effect(
function build_attribute_value (line 109) | function build_attribute_value(value, context, memoize = (value) => valu...
function get_attribute_name (line 136) | function get_attribute_name(element, attribute) {
function build_set_class (line 152) | function build_set_class(element, node_id, attribute, class_directives, ...
function build_set_style (line 226) | function build_set_style(node_id, attribute, style_directives, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js
function visit_event_attribute (line 13) | function visit_event_attribute(node, context) {
function build_event (line 63) | function build_event(context, event_name, handler, capture, passive, del...
function build_event_handler (line 95) | function build_event_handler(node, metadata, context) {
function has_side_effects (line 165) | function has_side_effects(node) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js
function process_children (line 19) | function process_children(nodes, initial, is_element, context) {
function is_static_element (line 141) | function is_static_element(node) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js
function visit_special_element (line 12) | function visit_special_element(node, id, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js
class Memoizer (line 18) | class Memoizer {
method add (line 33) | add(expression, metadata, memoize_if_state = false) {
method check_blockers (line 54) | check_blockers(metadata) {
method apply (line 62) | apply() {
method blockers (line 69) | blockers() {
method deriveds (line 73) | deriveds(runes = true) {
method async_ids (line 79) | async_ids() {
method async_values (line 83) | async_values() {
method sync_values (line 90) | sync_values() {
function build_template_chunk (line 105) | function build_template_chunk(
function build_render_statement (line 197) | function build_render_statement(state) {
function parse_directive_name (line 223) | function parse_directive_name(name) {
function build_bind_this (line 245) | function build_bind_this(expression, value, { state, visit }) {
function validate_binding (line 344) | function validate_binding(state, binding, expression) {
function validate_mutation (line 386) | function validate_mutation(node, context, expression) {
function build_expression (line 446) | function build_expression(context, expression, metadata, state = context...
function add_svelte_meta (line 496) | function add_svelte_meta(expression, node, type, additional) {
FILE: packages/svelte/src/compiler/phases/3-transform/css/index.js
function render_stylesheet (line 29) | function render_stylesheet(source, analysis, options) {
method Atrule (line 82) | Atrule(node, { state, next, path }) {
method Declaration (line 100) | Declaration(node, { state }) {
method Rule (line 138) | Rule(node, { state, next, visit, path }) {
method SelectorList (line 198) | SelectorList(node, { state, next, path }) {
method ComplexSelector (line 283) | ComplexSelector(node, context) {
method PseudoClassSelector (line 373) | PseudoClassSelector(node, context) {
function is_in_global_block (line 383) | function is_in_global_block(path) {
function remove_global_pseudo_class (line 392) | function remove_global_pseudo_class(selector, combinator, state) {
function remove_preceding_whitespace (line 414) | function remove_preceding_whitespace(end, state) {
function is_empty (line 424) | function is_empty(rule, is_in_global_block) {
function is_used (line 449) | function is_used(rule) {
function escape_comment_close (line 458) | function escape_comment_close(node, code) {
FILE: packages/svelte/src/compiler/phases/3-transform/index.js
function transform_component (line 19) | function transform_component(analysis, source, options) {
function transform_module (line 70) | function transform_module(analysis, source, options) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/transform-server.js
function server_component (line 92) | function server_component(analysis, options) {
function server_module (line 404) | function server_module(analysis, options) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/types.d.ts
type ServerTransformState (line 12) | interface ServerTransformState extends TransformState {
type ComponentServerTransformState (line 17) | interface ComponentServerTransformState extends ServerTransformState {
type Context (line 38) | type Context = import('zimmerframe').Context
type Visitors (line 39) | type Visitors = import('zimmerframe').Visitors
type ComponentContext (line 41) | type ComponentContext = import('zimmerframe').Context
type ComponentVisitors (line 45) | type ComponentVisitors = import('zimmerframe').Visitors
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js
function AssignmentExpression (line 14) | function AssignmentExpression(node, context) {
function build_assignment (line 26) | function build_assignment(operator, left, right, context) {
function is_store_name (line 122) | function is_store_name(name) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js
function AwaitBlock (line 11) | function AwaitBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitExpression.js
function AwaitExpression (line 9) | function AwaitExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js
function CallExpression (line 12) | function CallExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/ClassBody.js
function ClassBody (line 10) | function ClassBody(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js
function Component (line 11) | function Component(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js
function ConstTag (line 11) | function ConstTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js
function DebugTag (line 10) | function DebugTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js
function EachBlock (line 11) | function EachBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/ExpressionStatement.js
function ExpressionStatement (line 10) | function ExpressionStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js
function Fragment (line 11) | function Fragment(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js
function HtmlTag (line 11) | function HtmlTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/Identifier.js
function Identifier (line 11) | function Identifier(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js
function IfBlock (line 11) | function IfBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js
function KeyBlock (line 10) | function KeyBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/LabeledStatement.js
function LabeledStatement (line 9) | function LabeledStatement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js
function MemberExpression (line 9) | function MemberExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/Program.js
function Program (line 10) | function Program(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/PropertyDefinition.js
function PropertyDefinition (line 10) | function PropertyDefinition(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js
function RegularElement (line 17) | function RegularElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js
function RenderTag (line 12) | function RenderTag(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js
function SlotElement (line 16) | function SlotElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js
function SnippetBlock (line 11) | function SnippetBlock(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js
function SpreadAttribute (line 8) | function SpreadAttribute(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js
function SvelteBoundary (line 17) | function SvelteBoundary(node, context) {
function build_pending_attribute_block (line 111) | function build_pending_attribute_block(attribute, context) {
function build_pending_snippet_block (line 131) | function build_pending_snippet_block(snippet, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js
function SvelteComponent (line 10) | function SvelteComponent(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js
function SvelteElement (line 14) | function SvelteElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js
function SvelteFragment (line 9) | function SvelteFragment(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js
function SvelteHead (line 12) | function SvelteHead(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js
function SvelteSelf (line 10) | function SvelteSelf(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js
function TitleElement (line 10) | function TitleElement(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/UpdateExpression.js
function UpdateExpression (line 9) | function UpdateExpression(node, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js
function VariableDeclaration (line 15) | function VariableDeclaration(node, context) {
function create_state_declarators (line 229) | function create_state_declarators(declarator, scope, value) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js
function build_inline_component (line 21) | function build_inline_component(node, expression, context) {
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js
constant WHITESPACE_INSENSITIVE_ATTRIBUTES (line 22) | const WHITESPACE_INSENSITIVE_ATTRIBUTES = ['class', 'style'];
function build_element_attributes (line 31) | function build_element_attributes(node, context, transform) {
function get_attribute_name (line 289) | function get_attribute_name(element, attribute) {
function build_spread_object (line 305) | function build_spread_object(element, attributes, context, transform) {
function build_element_spread_attributes (line 349) | function build_element_spread_attributes(
function prepare_element_spread_object (line 378) | function prepare_element_spread_object(element, context, transform) {
function prepare_element_spread (line 420) | function prepare_element_spread(
function build_attr_class (line 487) | function build_attr_class(class_directives, expression, context, hash, t...
function build_attr_style (line 526) | function build_attr_style(style_directives, expression, context, transfo...
FILE: packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js
function process_children (line 36) | function process_children(nodes, { visit, state }) {
function is_statement (line 112) | function is_statement(node) {
function build_template (line 120) | function build_template(template) {
function build_attribute_value (line 190) | function build_attribute_value(
function build_getter (line 259) | function build_getter(node, state) {
function create_child_block (line 289) | function create_child_block(statements, blockers, has_await) {
class PromiseOptimiser (line 307) | class PromiseOptimiser {
method check_blockers (line 336) | check_blockers(metadata) {
method #apply (line 344) | #apply() {
method blockers (line 367) | blockers() {
method is_async (line 371) | is_async() {
method render (line 379) | render(statements) {
method render_block (line 401) | render_block(statements) {
FILE: packages/svelte/src/compiler/phases/3-transform/shared/assignments.js
function visit_assignment_expression (line 14) | function visit_assignment_expression(node, context, build_assignment) {
FILE: packages/svelte/src/compiler/phases/3-transform/shared/transform-async.js
function transform_body (line 32) | function transform_body(instance_body, runner, transform) {
function transform_async_node (line 82) | function transform_async_node(node, transform) {
FILE: packages/svelte/src/compiler/phases/3-transform/types.d.ts
type TransformState (line 5) | interface TransformState {
FILE: packages/svelte/src/compiler/phases/3-transform/utils.js
function sort_const_tags (line 21) | function sort_const_tags(nodes, state) {
function clean_nodes (line 126) | function clean_nodes(
function infer_namespace (line 313) | function infer_namespace(namespace, parent, nodes) {
function check_nodes_for_namespace (line 368) | function check_nodes_for_namespace(nodes, namespace) {
function determine_namespace_for_children (line 423) | function determine_namespace_for_children(node, namespace) {
function get_inspect_args (line 440) | function get_inspect_args(rune, node, visit) {
FILE: packages/svelte/src/compiler/phases/css.js
function remove_css_prefix (line 9) | function remove_css_prefix(name) {
FILE: packages/svelte/src/compiler/phases/nodes.js
function is_element_node (line 23) | function is_element_node(node) {
function is_component_node (line 32) | function is_component_node(node) {
function is_custom_element_node (line 40) | function is_custom_element_node(node) {
function create_attribute (line 56) | function create_attribute(name, name_loc, start, end, value) {
class ExpressionMetadata (line 70) | class ExpressionMetadata {
method #get_blockers (line 101) | #get_blockers() {
method blockers (line 113) | blockers() {
method has_blockers (line 117) | has_blockers() {
method has_more_blockers_than (line 124) | has_more_blockers_than(other) {
method is_async (line 134) | is_async() {
method merge (line 141) | merge(source) {
function get_name (line 157) | function get_name(node) {
function is_customizable_select_element (line 174) | function is_customizable_select_element(node) {
FILE: packages/svelte/src/compiler/phases/scope.js
constant UNKNOWN (line 19) | const UNKNOWN = Symbol('unknown');
constant NUMBER (line 21) | const NUMBER = Symbol('number');
constant STRING (line 22) | const STRING = Symbol('string');
constant FUNCTION (line 23) | const FUNCTION = Symbol('string');
class Binding (line 88) | class Binding {
method constructor (line 162) | constructor(scope, node, kind, declaration_kind, initial) {
method updated (line 174) | get updated() {
method is_function (line 181) | is_function() {
class Evaluation (line 198) | class Evaluation {
method constructor (line 263) | constructor(scope, expression, values) {
class Scope (line 605) | class Scope {
method constructor (line 659) | constructor(root, parent, porous) {
method declare (line 673) | declare(node, kind, declaration_kind, initial = null) {
method child (line 702) | child(porous = false) {
method generate (line 710) | generate(preferred_name) {
method get (line 748) | get(name) {
method get_bindings (line 756) | get_bindings(node) {
method owner (line 768) | owner(name) {
method reference (line 776) | reference(node, path) {
method evaluate (line 803) | evaluate(expression, values = new Set()) {
class ScopeRoot (line 862) | class ScopeRoot {
method next_counter (line 876) | next_counter(name) {
method set_counter (line 884) | set_counter(name, value) {
method unique (line 891) | unique(preferred_name) {
function create_scopes (line 921) | function create_scopes(ast, root, allow_reactive_declarations, parent) {
function set_scope (line 1423) | function set_scope(node, { next, state }) {
function get_rune (line 1433) | function get_rune(node, scope) {
function get_global_keypath (line 1448) | function get_global_keypath(node, scope) {
FILE: packages/svelte/src/compiler/phases/types.d.ts
type Js (line 20) | interface Js {
type Template (line 27) | interface Template {
type ReactiveStatement (line 33) | interface ReactiveStatement {
type AwaitedDeclaration (line 38) | interface AwaitedDeclaration {
type Analysis (line 49) | interface Analysis {
type ComponentAnalysis (line 71) | interface ComponentAnalysis extends Analysis {
FILE: packages/svelte/src/compiler/preprocess/decode_sourcemap.js
function decoded_sourcemap_from_generator (line 11) | function decoded_sourcemap_from_generator(generator) {
function decode_map (line 86) | function decode_map(processed) {
FILE: packages/svelte/src/compiler/preprocess/index.js
class PreprocessResult (line 19) | class PreprocessResult {
method constructor (line 56) | constructor(source, filename) {
method update_source (line 67) | update_source({ string: source, map, dependencies }) {
method to_processed (line 83) | to_processed() {
function processed_content_to_code (line 107) | function processed_content_to_code(processed, location, file_basename) {
function processed_tag_to_code (line 137) | function processed_tag_to_code(
function parse_tag_attributes (line 223) | function parse_tag_attributes(str) {
function stringify_tag_attributes (line 241) | function stringify_tag_attributes(attributes) {
function process_tag (line 265) | async function process_tag(tag_name, preprocessor, source) {
function process_markup (line 308) | async function process_markup(process, source) {
function preprocess (line 338) | async function preprocess(source, preprocessor, options) {
FILE: packages/svelte/src/compiler/preprocess/legacy-public.d.ts
type MarkupPreprocessor (line 10) | type MarkupPreprocessor = M;
type Preprocessor (line 12) | type Preprocessor = PP;
type PreprocessorGroup (line 14) | type PreprocessorGroup = PG;
type Processed (line 16) | type Processed = P;
type SveltePreprocessor (line 18) | type SveltePreprocessor<PreprocessorType extends keyof PG, Options = any...
FILE: packages/svelte/src/compiler/preprocess/private.d.ts
type Source (line 5) | interface Source {
type SourceUpdate (line 12) | interface SourceUpdate {
type Replacement (line 18) | interface Replacement {
FILE: packages/svelte/src/compiler/preprocess/public.d.ts
type Processed (line 4) | interface Processed {
type MarkupPreprocessor (line 27) | type MarkupPreprocessor = (options: {
type Preprocessor (line 41) | type Preprocessor = (options: {
type PreprocessorGroup (line 63) | interface PreprocessorGroup {
type SveltePreprocessor (line 75) | interface SveltePreprocessor<
FILE: packages/svelte/src/compiler/preprocess/replace_in_code.js
function slice_source (line 10) | function slice_source(code_slice, offset, { file_basename, filename, get...
function calculate_replacements (line 24) | function calculate_replacements(re, get_replacement, source) {
function perform_replacements (line 47) | function perform_replacements(replacements, source) {
function replace_in_code (line 69) | async function replace_in_code(regex, get_replacement, location) {
FILE: packages/svelte/src/compiler/print/index.js
constant LINE_BREAK_THRESHOLD (line 8) | const LINE_BREAK_THRESHOLD = 50;
function print (line 20) | function print(ast, options = undefined) {
function block (line 42) | function block(context, node, allow_inline = false) {
function attributes (line 68) | function attributes(node, attributes, context, comments) {
function base_element (line 138) | function base_element(node, context, comments) {
method Atrule (line 173) | Atrule(node, context) {
method AttributeSelector (line 185) | AttributeSelector(node, context) {
method Block (line 197) | Block(node, context) {
method ClassSelector (line 223) | ClassSelector(node, context) {
method ComplexSelector (line 227) | ComplexSelector(node, context) {
method Declaration (line 233) | Declaration(node, context) {
method IdSelector (line 237) | IdSelector(node, context) {
method NestingSelector (line 241) | NestingSelector(node, context) {
method Nth (line 245) | Nth(node, context) {
method Percentage (line 249) | Percentage(node, context) {
method PseudoClassSelector (line 253) | PseudoClassSelector(node, context) {
method PseudoElementSelector (line 275) | PseudoElementSelector(node, context) {
method RelativeSelector (line 279) | RelativeSelector(node, context) {
method Rule (line 293) | Rule(node, context) {
method SelectorList (line 310) | SelectorList(node, context) {
method TypeSelector (line 322) | TypeSelector(node, context) {
method Root (line 332) | Root(node, context) {
method Script (line 359) | Script(node, context) {
method Fragment (line 367) | Fragment(node, context) {
method AnimateDirective (line 476) | AnimateDirective(node, context) {
method AttachTag (line 488) | AttachTag(node, context) {
method Attribute (line 494) | Attribute(node, context) {
method AwaitBlock (line 518) | AwaitBlock(node, context) {
method BindDirective (line 553) | BindDirective(node, context) {
method ClassDirective (line 574) | ClassDirective(node, context) {
method Comment (line 586) | Comment(node, context) {
method Component (line 590) | Component(node, context) {
method ConstTag (line 594) | ConstTag(node, context) {
method DebugTag (line 605) | DebugTag(node, context) {
method EachBlock (line 618) | EachBlock(node, context) {
method ExpressionTag (line 649) | ExpressionTag(node, context) {
method HtmlTag (line 655) | HtmlTag(node, context) {
method IfBlock (line 661) | IfBlock(node, context) {
method KeyBlock (line 696) | KeyBlock(node, context) {
method LetDirective (line 704) | LetDirective(node, context) {
method OnDirective (line 716) | OnDirective(node, context) {
method RegularElement (line 731) | RegularElement(node, context) {
method RenderTag (line 735) | RenderTag(node, context) {
method SlotElement (line 741) | SlotElement(node, context) {
method SnippetBlock (line 745) | SnippetBlock(node, context) {
method SpreadAttribute (line 765) | SpreadAttribute(node, context) {
method StyleDirective (line 771) | StyleDirective(node, context) {
method StyleSheet (line 796) | StyleSheet(node, context) {
method SvelteBoundary (line 824) | SvelteBoundary(node, context) {
method SvelteComponent (line 828) | SvelteComponent(node, context) {
method SvelteDocument (line 844) | SvelteDocument(node, context) {
method SvelteElement (line 848) | SvelteElement(node, context) {
method SvelteFragment (line 865) | SvelteFragment(node, context) {
method SvelteHead (line 869) | SvelteHead(node, context) {
method SvelteSelf (line 873) | SvelteSelf(node, context) {
method SvelteWindow (line 877) | SvelteWindow(node, context) {
method Text (line 881) | Text(node, context) {
method TitleElement (line 885) | TitleElement(node, context) {
method TransitionDirective (line 889) | TransitionDirective(node, context) {
method UseDirective (line 905) | UseDirective(node, context) {
FILE: packages/svelte/src/compiler/print/types.d.ts
type Options (line 4) | type Options = {
FILE: packages/svelte/src/compiler/state.js
constant UNKNOWN_FILENAME (line 22) | const UNKNOWN_FILENAME = '(unknown)';
function set_source (line 53) | function set_source(value) {
function locate_node (line 70) | function locate_node(node) {
function get_ignore_snapshot (line 105) | function get_ignore_snapshot() {
function push_ignore (line 115) | function push_ignore(ignores) {
function pop_ignore (line 121) | function pop_ignore() {
function is_ignored (line 131) | function is_ignored(node, code) {
function reset (line 139) | function reset(state) {
function adjust (line 160) | function adjust(state) {
FILE: packages/svelte/src/compiler/types/css.d.ts
type BaseNode (line 4) | interface BaseNode {
type StyleSheetBase (line 9) | interface StyleSheetBase extends BaseNode {
type StyleSheetFile (line 13) | interface StyleSheetFile extends StyleSheetBase {
type StyleSheet (line 17) | interface StyleSheet extends StyleSheetBase {
type Atrule (line 29) | interface Atrule extends BaseNode {
type Rule (line 36) | interface Rule extends BaseNode {
type SelectorList (line 58) | interface SelectorList extends BaseNode {
type ComplexSelector (line 69) | interface ComplexSelector extends BaseNode {
type RelativeSelector (line 87) | interface RelativeSelector extends BaseNode {
type TypeSelector (line 112) | interface TypeSelector extends BaseNode {
type IdSelector (line 117) | interface IdSelector extends BaseNode {
type ClassSelector (line 122) | interface ClassSelector extends BaseNode {
type AttributeSelector (line 127) | interface AttributeSelector extends BaseNode {
type PseudoElementSelector (line 135) | interface PseudoElementSelector extends BaseNode {
type PseudoClassSelector (line 140) | interface PseudoClassSelector extends BaseNode {
type Percentage (line 146) | interface Percentage extends BaseNode {
type NestingSelector (line 151) | interface NestingSelector extends BaseNode {
type Nth (line 156) | interface Nth extends BaseNode {
type SimpleSelector (line 161) | type SimpleSelector =
type Combinator (line 172) | interface Combinator extends BaseNode {
type Block (line 177) | interface Block extends BaseNode {
type Declaration (line 182) | interface Declaration extends BaseNode {
type Node (line 189) | type Node =
FILE: packages/svelte/src/compiler/types/index.d.ts
type CompileResult (line 14) | interface CompileResult {
type Warning (line 52) | interface Warning extends ICompileDiagnostic {}
type CompileError (line 54) | interface CompileError extends ICompileDiagnostic {}
type CssHashGetter (line 56) | type CssHashGetter = (args: {
type OptimizeOptions (line 63) | interface OptimizeOptions {
type CompileOptions (line 67) | interface CompileOptions extends ModuleCompileOptions {
type ModuleCompileOptions (line 202) | interface ModuleCompileOptions {
type ValidatedModuleCompileOptions (line 246) | type ValidatedModuleCompileOptions = Omit<Required<ModuleCompileOptions>...
type ValidatedCompileOptions (line 250) | type ValidatedCompileOptions = ValidatedModuleCompileOptions &
type BindingKind (line 275) | type BindingKind =
type DeclarationKind (line 290) | type DeclarationKind =
type StateField (line 305) | interface StateField {
FILE: packages/svelte/src/compiler/types/legacy-interfaces.d.ts
type CompileOptions (line 4) | type CompileOptions = C;
type Warning (line 6) | type Warning = W;
FILE: packages/svelte/src/compiler/types/legacy-nodes.d.ts
type BaseNode (line 13) | interface BaseNode {
type BaseElement (line 19) | interface BaseElement extends BaseNode {
type LegacyRoot (line 25) | interface LegacyRoot extends BaseNode {
type LegacyAction (line 32) | interface LegacyAction extends BaseNode {
type LegacyAnimation (line 40) | interface LegacyAnimation extends BaseNode {
type LegacyBinding (line 48) | interface LegacyBinding extends BaseNode {
type LegacyBody (line 56) | interface LegacyBody extends BaseElement {
type LegacyAttribute (line 61) | interface LegacyAttribute extends BaseNode {
type LegacyAttributeShorthand (line 67) | interface LegacyAttributeShorthand extends BaseNode {
type LegacyLet (line 72) | interface LegacyLet extends BaseNode {
type LegacyCatchBlock (line 80) | interface LegacyCatchBlock extends BaseNode {
type LegacyClass (line 86) | interface LegacyClass extends BaseNode {
type LegacyDocument (line 94) | interface LegacyDocument extends BaseElement {
type LegacyElement (line 98) | interface LegacyElement {
type LegacyEventHandler (line 102) | interface LegacyEventHandler extends BaseNode {
type LegacyHead (line 111) | interface LegacyHead extends BaseElement {
type LegacyInlineComponent (line 115) | interface LegacyInlineComponent extends BaseElement {
type LegacyMustacheTag (line 121) | interface LegacyMustacheTag extends BaseNode {
type LegacyOptions (line 126) | interface LegacyOptions {
type LegacyPendingBlock (line 132) | interface LegacyPendingBlock extends BaseNode {
type LegacyRawMustacheTag (line 138) | interface LegacyRawMustacheTag extends BaseNode {
type LegacySpread (line 143) | interface LegacySpread extends BaseNode {
type LegacySlot (line 148) | interface LegacySlot extends BaseElement {
type LegacySlotTemplate (line 152) | interface LegacySlotTemplate extends BaseElement {
type LegacyThenBlock (line 156) | interface LegacyThenBlock extends BaseNode {
type SnippetBlock (line 162) | interface SnippetBlock extends BaseNode {
type RenderTag (line 169) | interface RenderTag extends BaseNode {
type LegacyTitle (line 175) | interface LegacyTitle extends BaseElement {
type LegacyConstTag (line 180) | interface LegacyConstTag extends BaseNode {
type LegacyTransition (line 185) | interface LegacyTransition extends BaseNode {
type LegacyStyleDirective (line 199) | interface LegacyStyleDirective extends BaseNode {
type LegacyWindow (line 208) | interface LegacyWindow extends BaseElement {
type LegacyComment (line 212) | interface LegacyComment extends BaseNode {
type LegacyDirective (line 220) | type LegacyDirective =
type LegacyAttributeLike (line 230) | type LegacyAttributeLike = LegacyAttribute | LegacySpread | LegacyDirect...
type LegacyElementLike (line 232) | type LegacyElementLike =
type LegacyStyle (line 250) | interface LegacyStyle extends BaseNode {
type LegacySelector (line 261) | interface LegacySelector extends BaseNode {
type LegacyCssNode (line 266) | type LegacyCssNode = LegacyStyle | LegacySelector;
type LegacySvelteNode (line 268) | type LegacySvelteNode =
FILE: packages/svelte/src/compiler/types/template.d.ts
type Namespace (line 28) | type Namespace = 'html' | 'svg' | 'mathml';
type BaseNode (line 31) | interface BaseNode {
type Fragment (line 37) | interface Fragment {
type Root (line 55) | interface Root extends BaseNode {
type SvelteOptions (line 77) | interface SvelteOptions {
type Text (line 111) | interface Text extends BaseNode {
type ExpressionTag (line 120) | interface ExpressionTag extends BaseNode {
type HtmlTag (line 130) | interface HtmlTag extends BaseNode {
type Comment (line 143) | interface Comment extends BaseNode {
type ConstTag (line 150) | interface ConstTag extends BaseNode {
type DebugTag (line 162) | interface DebugTag extends BaseNode {
type RenderTag (line 168) | interface RenderTag extends BaseNode {
type AttachTag (line 184) | interface AttachTag extends BaseNode {
type AnimateDirective (line 194) | interface AnimateDirective extends BaseAttribute {
type BindDirective (line 207) | interface BindDirective extends BaseAttribute {
type ClassDirective (line 223) | interface ClassDirective extends BaseAttribute {
type LetDirective (line 236) | interface LetDirective extends BaseAttribute {
type OnDirective (line 245) | interface OnDirective extends BaseAttribute {
type StyleDirective (line 269) | interface StyleDirective extends BaseAttribute {
type TransitionDirective (line 284) | interface TransitionDirective extends BaseAttribute {
type UseDirective (line 302) | interface UseDirective extends BaseAttribute {
type BaseElement (line 314) | interface BaseElement extends BaseNode {
type Component (line 321) | interface Component extends BaseElement {
type TitleElement (line 335) | interface TitleElement extends BaseElement {
type SlotElement (line 340) | interface SlotElement extends BaseElement {
type RegularElement (line 345) | interface RegularElement extends BaseElement {
type SvelteBody (line 362) | interface SvelteBody extends BaseElement {
type SvelteComponent (line 367) | interface SvelteComponent extends BaseElement {
type SvelteDocument (line 382) | interface SvelteDocument extends BaseElement {
type SvelteElement (line 387) | interface SvelteElement extends BaseElement {
type SvelteFragment (line 409) | interface SvelteFragment extends BaseElement {
type SvelteBoundary (line 414) | interface SvelteBoundary extends BaseElement {
type SvelteHead (line 419) | interface SvelteHead extends BaseElement {
type SvelteOptionsRaw (line 425) | interface SvelteOptionsRaw extends BaseElement {
type SvelteSelf (line 430) | interface SvelteSelf extends BaseElement {
type SvelteWindow (line 443) | interface SvelteWindow extends BaseElement {
type EachBlock (line 449) | interface EachBlock extends BaseNode {
type IfBlock (line 480) | interface IfBlock extends BaseNode {
type AwaitBlock (line 495) | interface AwaitBlock extends BaseNode {
type KeyBlock (line 512) | interface KeyBlock extends BaseNode {
type SnippetBlock (line 522) | interface SnippetBlock extends BaseNode {
type BaseAttribute (line 537) | interface BaseAttribute extends BaseNode {
type Attribute (line 542) | interface Attribute extends BaseAttribute {
type SpreadAttribute (line 557) | interface SpreadAttribute extends BaseNode {
type Script (line 566) | interface Script extends BaseNode {
type JSComment (line 573) | interface JSComment {
type AttributeLike (line 584) | type AttributeLike = Attribute | SpreadAttribute | Directive;
type Directive (line 586) | type Directive =
type Block (line 596) | type Block =
type ElementLike (line 603) | type ElementLike =
type Tag (line 620) | type Tag =
type TemplateNode (line 628) | type TemplateNode =
type SvelteNode (line 640) | type SvelteNode = Node | TemplateNode | AST.Fragment | _CSS.Node | Script;
type BaseNode (line 646) | interface BaseNode {
FILE: packages/svelte/src/compiler/utils/assert.js
function equal (line 7) | function equal(actual, expected) {
FILE: packages/svelte/src/compiler/utils/ast.js
function object (line 11) | function object(expression) {
function is_text_attribute (line 28) | function is_text_attribute(attribute) {
function is_expression_attribute (line 43) | function is_expression_attribute(attribute) {
function get_attribute_expression (line 59) | function get_attribute_expression(attribute) {
function get_attribute_chunks (line 70) | function get_attribute_chunks(value) {
function is_event_attribute (line 79) | function is_event_attribute(attribute) {
function unwrap_pattern (line 89) | function unwrap_pattern(pattern, nodes = []) {
function extract_identifiers (line 136) | function extract_identifiers(pattern) {
function extract_all_identifiers_from_expression (line 146) | function extract_all_identifiers_from_expression(expr) {
function extract_identifiers_from_destructuring (line 193) | function extract_identifiers_from_destructuring(node, nodes = []) {
function extract_paths (line 243) | function extract_paths(param, initial) {
function _extract_paths (line 269) | function _extract_paths(paths, inserts, param, expression, update_expres...
function get_parent (line 425) | function get_parent(path, at) {
function is_simple_expression (line 442) | function is_simple_expression(node) {
function unwrap_optional (line 476) | function unwrap_optional(node) {
function is_expression_async (line 484) | function is_expression_async(expression) {
function build_fallback (line 585) | function build_fallback(expression, fallback) {
function build_assignment_value (line 604) | function build_assignment_value(operator, left, right) {
function has_await_expression (line 616) | function has_await_expression(node) {
function save (line 637) | function save(expression) {
FILE: packages/svelte/src/compiler/utils/builders.js
function array (line 11) | function array(elements = []) {
function array_pattern (line 19) | function array_pattern(elements) {
function assignment_pattern (line 28) | function assignment_pattern(left, right) {
function arrow (line 38) | function arrow(params, body, async = false) {
function assignment (line 62) | function assignment(operator, left, right) {
function await_builder (line 70) | function await_builder(argument) {
function binary (line 80) | function binary(operator, left, right) {
function block (line 88) | function block(body) {
function class_expression (line 99) | function class_expression(id, body, superClass, decorators = []) {
function labeled (line 108) | function labeled(name, body) {
function call (line 117) | function call(callee, ...args) {
function maybe_call (line 149) | function maybe_call(callee, ...args) {
function unary (line 164) | function unary(operator, argument) {
function conditional (line 176) | function conditional(test, consequent, alternate) {
function logical (line 186) | function logical(operator, left, right) {
function declaration (line 195) | function declaration(kind, declarations) {
function declarator (line 208) | function declarator(pattern, init) {
function export_default (line 222) | function export_default(declaration) {
function for_of (line 233) | function for_of(left, right, body, _await = false) {
function function_declaration (line 250) | function function_declaration(id, params, body, async = false) {
function get (line 266) | function get(name, body) {
function id (line 275) | function id(name, loc) {
function private_id (line 286) | function private_id(name) {
function import_namespace (line 294) | function import_namespace(local) {
function init (line 306) | function init(name, value) {
function literal (line 314) | function literal(value) {
function member (line 326) | function member(object, property, computed = false, optional = false) {
function member_id (line 338) | function member_id(path) {
function object (line 354) | function object(properties) {
function object_pattern (line 362) | function object_pattern(properties) {
function prop (line 375) | function prop(kind, key, value, computed = false) {
function prop_def (line 386) | function prop_def(key, value, computed = false, is_static = false) {
function quasi (line 402) | function quasi(cooked, tail = false) {
function rest (line 411) | function rest(argument) {
function sequence (line 419) | function sequence(expressions) {
function set (line 428) | function set(name, body) {
function spread (line 436) | function spread(argument) {
function stmt (line 444) | function stmt(expression) {
function template (line 453) | function template(elements, expressions) {
function thunk (line 462) | function thunk(expression, async = false) {
function unthunk (line 471) | function unthunk(expression) {
function new_builder (line 493) | function new_builder(expression, ...args) {
function update (line 509) | function update(operator, argument, prefix = false) {
function do_while (line 518) | function do_while(test, body) {
function let_builder (line 541) | function let_builder(pattern, init) {
function const_builder (line 550) | function const_builder(pattern, init) {
function var_builder (line 559) | function var_builder(pattern, init) {
function for_builder (line 571) | function for_builder(init, test, update, body) {
function method (line 585) | function method(kind, key, params, body, computed = false, is_static = f...
function function_builder (line 604) | function function_builder(id, params, body, async = false) {
function if_builder (line 621) | function if_builder(test, consequent, alternate) {
function import_all (line 630) | function import_all(as, source) {
function imports (line 644) | function imports(parts, source) {
function return_builder (line 661) | function return_builder(argument = null) {
function throw_error (line 669) | function throw_error(str) {
function key (line 696) | function key(name) {
FILE: packages/svelte/src/compiler/utils/compile_diagnostic.js
function tabs_to_spaces (line 9) | function tabs_to_spaces(str) {
function get_code_frame (line 17) | function get_code_frame(line, column) {
class CompileDiagnostic (line 51) | class CompileDiagnostic {
method constructor (line 59) | constructor(code, message, position) {
method toString (line 77) | toString() {
method toJSON (line 95) | toJSON() {
FILE: packages/svelte/src/compiler/utils/extract_svelte_ignore.js
function extract_svelte_ignore (line 28) | function extract_svelte_ignore(offset, text, runes) {
function migrate_svelte_ignore (line 89) | function migrate_svelte_ignore(text) {
FILE: packages/svelte/src/compiler/utils/mapped_code.js
function last_line_length (line 12) | function last_line_length(s) {
function sourcemap_add_offset (line 22) | function sourcemap_add_offset(map, offset, source_index) {
function merge_tables (line 48) | function merge_tables(this_table, other_table) {
class MappedCode (line 75) | class MappedCode {
method constructor (line 90) | constructor(string = '', map = null) {
method concat (line 109) | concat(other) {
method from_processed (line 192) | static from_processed(string, map) {
method from_source (line 216) | static from_source({ source, file_basename, get_location }) {
function combine_sourcemaps (line 265) | function combine_sourcemaps(filename, sourcemap_list) {
function apply_preprocessor_sourcemap (line 308) | function apply_preprocessor_sourcemap(filename, svelte_map, preprocessor...
function parse_attached_sourcemap (line 341) | function parse_attached_sourcemap(processed, tag_name) {
function merge_with_preprocessor_map (line 394) | function merge_with_preprocessor_map(result, options, source_name) {
function get_relative_path (line 423) | function get_relative_path(from, to) {
function get_basename (line 443) | function get_basename(filename) {
function get_source_name (line 452) | function get_source_name(filename, output_filename, fallback) {
FILE: packages/svelte/src/compiler/utils/push_array.js
function push_array (line 9) | function push_array(array, items) {
FILE: packages/svelte/src/compiler/utils/sanitize_template_string.js
function sanitize_template_string (line 5) | function sanitize_template_string(str) {
FILE: packages/svelte/src/compiler/utils/slot.js
function determine_slot (line 8) | function determine_slot(node) {
FILE: packages/svelte/src/compiler/utils/string.js
function list (line 5) | function list(strings, conjunction = 'or') {
FILE: packages/svelte/src/compiler/validate-options.js
function removed (line 187) | function removed(msg) {
function warn_once (line 199) | function warn_once(fn) {
function warn_removed (line 210) | function warn_removed(fn) {
function deprecate (line 222) | function deprecate(fn, validator) {
function object (line 234) | function object(children, allow_unknown = false) {
function validator (line 267) | function validator(fallback, fn) {
function string (line 278) | function string(fallback, allow_empty = true) {
function boolean (line 296) | function boolean(fallback) {
function list (line 309) | function list(options, fallback = options[0]) {
function fun (line 327) | function fun(fallback) {
function parametric (line 342) | function parametric(fallback, normalize = (value) => /** @type {ReturnTy...
function throw_error (line 359) | function throw_error(msg) {
FILE: packages/svelte/src/compiler/warnings.js
class InternalCompileWarning (line 7) | class InternalCompileWarning extends CompileDiagnostic {
method constructor (line 15) | constructor(code, message, position) {
function w (line 25) | function w(node, code, message) {
function a11y_accesskey (line 129) | function a11y_accesskey(node) {
function a11y_aria_activedescendant_has_tabindex (line 137) | function a11y_aria_activedescendant_has_tabindex(node) {
function a11y_aria_attributes (line 146) | function a11y_aria_attributes(node, name) {
function a11y_autocomplete_valid (line 156) | function a11y_autocomplete_valid(node, value, type) {
function a11y_autofocus (line 164) | function a11y_autofocus(node) {
function a11y_click_events_have_key_events (line 172) | function a11y_click_events_have_key_events(node) {
function a11y_consider_explicit_label (line 180) | function a11y_consider_explicit_label(node) {
function a11y_distracting_elements (line 189) | function a11y_distracting_elements(node, name) {
function a11y_figcaption_index (line 197) | function a11y_figcaption_index(node) {
function a11y_figcaption_parent (line 205) | function a11y_figcaption_parent(node) {
function a11y_hidden (line 214) | function a11y_hidden(node, name) {
function a11y_img_redundant_alt (line 222) | function a11y_img_redundant_alt(node) {
function a11y_incorrect_aria_attribute_type (line 232) | function a11y_incorrect_aria_attribute_type(node, attribute, type) {
function a11y_incorrect_aria_attribute_type_boolean (line 241) | function a11y_incorrect_aria_attribute_type_boolean(node, attribute) {
function a11y_incorrect_aria_attribute_type_id (line 250) | function a11y_incorrect_aria_attribute_type_id(node, attribute) {
function a11y_incorrect_aria_attribute_type_idlist (line 259) | function a11y_incorrect_aria_attribute_type_idlist(node, attribute) {
function a11y_incorrect_aria_attribute_type_integer (line 268) | function a11y_incorrect_aria_attribute_type_integer(node, attribute) {
function a11y_incorrect_aria_attribute_type_token (line 278) | function a11y_incorrect_aria_attribute_type_token(node, attribute, value...
function a11y_incorrect_aria_attribute_type_tokenlist (line 288) | function a11y_incorrect_aria_attribute_type_tokenlist(node, attribute, v...
function a11y_incorrect_aria_attribute_type_tristate (line 297) | function a11y_incorrect_aria_attribute_type_tristate(node, attribute) {
function a11y_interactive_supports_focus (line 306) | function a11y_interactive_supports_focus(node, role) {
function a11y_invalid_attribute (line 316) | function a11y_invalid_attribute(node, href_value, href_attribute) {
function a11y_label_has_associated_control (line 324) | function a11y_label_has_associated_control(node) {
function a11y_media_has_caption (line 332) | function a11y_media_has_caption(node) {
function a11y_misplaced_role (line 341) | function a11y_misplaced_role(node, name) {
function a11y_misplaced_scope (line 349) | function a11y_misplaced_scope(node) {
function a11y_missing_attribute (line 360) | function a11y_missing_attribute(node, name, article, sequence) {
function a11y_missing_content (line 369) | function a11y_missing_content(node, name) {
function a11y_mouse_events_have_key_events (line 379) | function a11y_mouse_events_have_key_events(node, event, accompanied_by) {
function a11y_no_abstract_role (line 388) | function a11y_no_abstract_role(node, role) {
function a11y_no_interactive_element_to_noninteractive_role (line 398) | function a11y_no_interactive_element_to_noninteractive_role(node, elemen...
function a11y_no_noninteractive_element_interactions (line 407) | function a11y_no_noninteractive_element_interactions(node, element) {
function a11y_no_noninteractive_element_to_interactive_role (line 417) | function a11y_no_noninteractive_element_to_interactive_role(node, elemen...
function a11y_no_noninteractive_tabindex (line 425) | function a11y_no_noninteractive_tabindex(node) {
function a11y_no_redundant_roles (line 434) | function a11y_no_redundant_roles(node, role) {
function a11y_no_static_element_interactions (line 444) | function a11y_no_static_element_interactions(node, element, handler) {
function a11y_positive_tabindex (line 452) | function a11y_positive_tabindex(node) {
function a11y_role_has_required_aria_props (line 462) | function a11y_role_has_required_aria_props(node, role, props) {
function a11y_role_supports_aria_props (line 472) | function a11y_role_supports_aria_props(node, attribute, role) {
function a11y_role_supports_aria_props_implicit (line 483) | function a11y_role_supports_aria_props_implicit(node, attribute, role, n...
function a11y_unknown_aria_attribute (line 493) | function a11y_unknown_aria_attribute(node, attribute, suggestion) {
function a11y_unknown_role (line 505) | function a11y_unknown_role(node, role, suggestion) {
function bidirectional_control_characters (line 515) | function bidirectional_control_characters(node) {
function legacy_code (line 525) | function legacy_code(node, code, suggestion) {
function unknown_code (line 535) | function unknown_code(node, code, suggestion) {
function options_deprecated_accessors (line 545) | function options_deprecated_accessors(node) {
function options_deprecated_immutable (line 553) | function options_deprecated_immutable(node) {
function options_missing_custom_element (line 561) | function options_missing_custom_element(node) {
function options_removed_enable_sourcemap (line 569) | function options_removed_enable_sourcemap(node) {
function options_removed_hydratable (line 577) | function options_removed_hydratable(node) {
function options_removed_loop_guard_timeout (line 585) | function options_removed_loop_guard_timeout(node) {
function options_renamed_ssr_dom (line 593) | function options_renamed_ssr_dom(node) {
function custom_element_props_identifier (line 601) | function custom_element_props_identifier(node) {
function export_let_unused (line 610) | function export_let_unused(node, name) {
function legacy_component_creation (line 618) | function legacy_component_creation(node) {
function non_reactive_update (line 627) | function non_reactive_update(node, name) {
function perf_avoid_inline_class (line 635) | function perf_avoid_inline_class(node) {
function perf_avoid_nested_class (line 643) | function perf_avoid_nested_class(node) {
function reactive_declaration_invalid_placement (line 651) | function reactive_declaration_invalid_placement(node) {
function reactive_declaration_module_script_dependency (line 659) | function reactive_declaration_module_script_dependency(node) {
function state_referenced_locally (line 669) | function state_referenced_locally(node, name, type) {
function store_rune_conflict (line 678) | function store_rune_conflict(node, name) {
function css_unused_selector (line 687) | function css_unused_selector(node, name) {
function attribute_avoid_is (line 695) | function attribute_avoid_is(node) {
function attribute_global_event_reference (line 704) | function attribute_global_event_reference(node, name) {
function attribute_illegal_colon (line 712) | function attribute_illegal_colon(node) {
function attribute_invalid_property_name (line 722) | function attribute_invalid_property_name(node, wrong, right) {
function attribute_quoted (line 730) | function attribute_quoted(node) {
function bind_invalid_each_rest (line 739) | function bind_invalid_each_rest(node, name) {
function block_empty (line 747) | function block_empty(node) {
function component_name_lowercase (line 756) | function component_name_lowercase(node, name) {
function element_implicitly_closed (line 766) | function element_implicitly_closed(node, tag, closing) {
function element_invalid_self_closing_tag (line 775) | function element_invalid_self_closing_tag(node, name) {
function event_directive_deprecated (line 784) | function event_directive_deprecated(node, name) {
function node_invalid_placement_ssr (line 793) | function node_invalid_placement_ssr(node, message) {
function script_context_deprecated (line 801) | function script_context_deprecated(node) {
function script_unknown_attribute (line 809) | function script_unknown_attribute(node) {
function slot_element_deprecated (line 817) | function slot_element_deprecated(node) {
function svelte_component_deprecated (line 825) | function svelte_component_deprecated(node) {
function svelte_element_invalid_this (line 833) | function svelte_element_invalid_this(node) {
function svelte_self_deprecated (line 843) | function svelte_self_deprecated(node, name, basename) {
FILE: packages/svelte/src/constants.js
constant EACH_ITEM_REACTIVE (line 1) | const EACH_ITEM_REACTIVE = 1;
constant EACH_INDEX_REACTIVE (line 2) | const EACH_INDEX_REACTIVE = 1 << 1;
constant EACH_IS_CONTROLLED (line 4) | const EACH_IS_CONTROLLED = 1 << 2;
constant EACH_IS_ANIMATED (line 5) | const EACH_IS_ANIMATED = 1 << 3;
constant EACH_ITEM_IMMUTABLE (line 6) | const EACH_ITEM_IMMUTABLE = 1 << 4;
constant PROPS_IS_IMMUTABLE (line 8) | const PROPS_IS_IMMUTABLE = 1;
constant PROPS_IS_RUNES (line 9) | const PROPS_IS_RUNES = 1 << 1;
constant PROPS_IS_UPDATED (line 10) | const PROPS_IS_UPDATED = 1 << 2;
constant PROPS_IS_BINDABLE (line 11) | const PROPS_IS_BINDABLE = 1 << 3;
constant PROPS_IS_LAZY_INITIAL (line 12) | const PROPS_IS_LAZY_INITIAL = 1 << 4;
constant TRANSITION_IN (line 14) | const TRANSITION_IN = 1;
constant TRANSITION_OUT (line 15) | const TRANSITION_OUT = 1 << 1;
constant TRANSITION_GLOBAL (line 16) | const TRANSITION_GLOBAL = 1 << 2;
constant TEMPLATE_FRAGMENT (line 18) | const TEMPLATE_FRAGMENT = 1;
constant TEMPLATE_USE_IMPORT_NODE (line 19) | const TEMPLATE_USE_IMPORT_NODE = 1 << 1;
constant TEMPLATE_USE_SVG (line 20) | const TEMPLATE_USE_SVG = 1 << 2;
constant TEMPLATE_USE_MATHML (line 21) | const TEMPLATE_USE_MATHML = 1 << 3;
constant HYDRATION_START (line 23) | const HYDRATION_START = '[';
constant HYDRATION_START_ELSE (line 25) | const HYDRATION_START_ELSE = '[!';
constant HYDRATION_START_FAILED (line 27) | const HYDRATION_START_FAILED = '[?';
constant HYDRATION_END (line 28) | const HYDRATION_END = ']';
constant HYDRATION_ERROR (line 29) | const HYDRATION_ERROR = {};
constant ELEMENT_IS_NAMESPACED (line 31) | const ELEMENT_IS_NAMESPACED = 1;
constant ELEMENT_PRESERVE_ATTRIBUTE_CASE (line 32) | const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;
constant ELEMENT_IS_INPUT (line 33) | const ELEMENT_IS_INPUT = 1 << 2;
constant UNINITIALIZED (line 35) | const UNINITIALIZED = Symbol();
constant FILENAME (line 38) | const FILENAME = Symbol('filename');
constant HMR (line 39) | const HMR = Symbol('hmr');
constant NAMESPACE_HTML (line 41) | const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';
constant NAMESPACE_SVG (line 42) | const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';
constant NAMESPACE_MATHML (line 43) | const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';
constant IGNORABLE_RUNTIME_WARNINGS (line 47) | const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([
constant ELEMENTS_WITHOUT_TEXT (line 64) | const ELEMENTS_WITHOUT_TEXT = ['audio', 'datalist', 'dl', 'optgroup', 's...
constant ATTACHMENT_KEY (line 66) | const ATTACHMENT_KEY = '@attach';
FILE: packages/svelte/src/easing/index.js
function linear (line 10) | function linear(t) {
function backInOut (line 18) | function backInOut(t) {
function backIn (line 28) | function backIn(t) {
function backOut (line 37) | function backOut(t) {
function bounceOut (line 46) | function bounceOut(t) {
function bounceInOut (line 67) | function bounceInOut(t) {
function bounceIn (line 75) | function bounceIn(t) {
function circInOut (line 83) | function circInOut(t) {
function circIn (line 92) | function circIn(t) {
function circOut (line 100) | function circOut(t) {
function cubicInOut (line 108) | function cubicInOut(t) {
function cubicIn (line 116) | function cubicIn(t) {
function cubicOut (line 124) | function cubicOut(t) {
function elasticInOut (line 133) | function elasticInOut(t) {
function elasticIn (line 146) | function elasticIn(t) {
function elasticOut (line 154) | function elasticOut(t) {
function expoInOut (line 162) | function expoInOut(t) {
function expoIn (line 174) | function expoIn(t) {
function expoOut (line 182) | function expoOut(t) {
function quadInOut (line 190) | function quadInOut(t) {
function quadIn (line 201) | function quadIn(t) {
function quadOut (line 209) | function quadOut(t) {
function quartInOut (line 217) | function quartInOut(t) {
function quartIn (line 225) | function quartIn(t) {
function quartOut (line 233) | function quartOut(t) {
function quintInOut (line 241) | function quintInOut(t) {
function quintIn (line 250) | function quintIn(t) {
function quintOut (line 258) | function quintOut(t) {
function sineInOut (line 266) | function sineInOut(t) {
function sineIn (line 274) | function sineIn(t) {
function sineOut (line 284) | function sineOut(t) {
FILE: packages/svelte/src/escaping.js
constant ATTR_REGEX (line 1) | const ATTR_REGEX = /[&"<]/g;
constant CONTENT_REGEX (line 2) | const CONTENT_REGEX = /[&<]/g;
function escape_html (line 9) | function escape_html(value, is_attr) {
FILE: packages/svelte/src/html-tree-validation.js
function closing_tag_omitted (line 63) | function closing_tag_omitted(current, next) {
function is_tag_valid_with_ancestor (line 144) | function is_tag_valid_with_ancestor(child_tag, ancestors, child_loc, anc...
function is_tag_valid_with_parent (line 184) | function is_tag_valid_with_parent(child_tag, parent_tag, child_loc, pare...
FILE: packages/svelte/src/index-client.js
function throw_rune_error (line 16) | function throw_rune_error(rune) {
function getAbortSignal (line 69) | function getAbortSignal() {
function onMount (line 91) | function onMount(fn) {
function onDestroy (line 115) | function onDestroy(fn) {
function create_custom_event (line 130) | function create_custom_event(type, detail, { bubbles = false, cancelable...
function createEventDispatcher (line 157) | function createEventDispatcher() {
function beforeUpdate (line 200) | function beforeUpdate(fn) {
function afterUpdate (line 223) | function afterUpdate(fn) {
function init_update_callbacks (line 239) | function init_update_callbacks(context) {
FILE: packages/svelte/src/index-server.js
function onDestroy (line 8) | function onDestroy(fn) {
function createEventDispatcher (line 20) | function createEventDispatcher() {
function mount (line 24) | function mount() {
function hydrate (line 28) | function hydrate() {
function unmount (line 32) | function unmount() {
function fork (line 36) | function fork() {
function tick (line 40) | async function tick() {}
function settled (line 42) | async function settled() {}
FILE: packages/svelte/src/index.d.ts
type ComponentConstructorOptions (line 11) | interface ComponentConstructorOptions<
type Properties (line 30) | type Properties<Props, Slots> = Props &
class SvelteComponent (line 46) | class SvelteComponent<
type Brand (line 112) | type Brand<B> = { [brand]: B };
type Branded (line 113) | type Branded<T, B> = T & Brand<B>;
type ComponentInternals (line 118) | type ComponentInternals = Branded<{}, 'ComponentInternals'>;
type Component (line 142) | interface Component<
class SvelteComponentTyped (line 178) | class SvelteComponentTyped<
type ComponentEvents (line 202) | type ComponentEvents<Comp extends SvelteComponent> =
type ComponentProps (line 235) | type ComponentProps<Comp extends SvelteComponent | Component<any, any>> =
type ComponentType (line 264) | type ComponentType<Comp extends SvelteComponent = SvelteComponent> = (new (
type Snippet (line 287) | interface Snippet<Parameters extends unknown[] = []> {
type DispatchOptions (line 299) | interface DispatchOptions {
type EventDispatcher (line 303) | interface EventDispatcher<EventMap extends Record<string, any>> {
type MountOptions (line 319) | type MountOptions<Props extends Record<string, any> = Record<string, any...
type Fork (line 366) | interface Fork {
FILE: packages/svelte/src/internal/client/constants.js
constant DERIVED (line 2) | const DERIVED = 1 << 1;
constant EFFECT (line 3) | const EFFECT = 1 << 2;
constant RENDER_EFFECT (line 4) | const RENDER_EFFECT = 1 << 3;
constant MANAGED_EFFECT (line 9) | const MANAGED_EFFECT = 1 << 24;
constant BLOCK_EFFECT (line 14) | const BLOCK_EFFECT = 1 << 4;
constant BRANCH_EFFECT (line 15) | const BRANCH_EFFECT = 1 << 5;
constant ROOT_EFFECT (line 16) | const ROOT_EFFECT = 1 << 6;
constant BOUNDARY_EFFECT (line 17) | const BOUNDARY_EFFECT = 1 << 7;
constant CONNECTED (line 24) | const CONNECTED = 1 << 9;
constant CLEAN (line 25) | const CLEAN = 1 << 10;
constant DIRTY (line 26) | const DIRTY = 1 << 11;
constant MAYBE_DIRTY (line 27) | const MAYBE_DIRTY = 1 << 12;
constant INERT (line 28) | const INERT = 1 << 13;
constant DESTROYED (line 29) | const DESTROYED = 1 << 14;
constant REACTION_RAN (line 31) | const REACTION_RAN = 1 << 15;
constant DESTROYING (line 33) | const DESTROYING = 1 << 25;
constant EFFECT_TRANSPARENT (line 40) | const EFFECT_TRANSPARENT = 1 << 16;
constant EAGER_EFFECT (line 41) | const EAGER_EFFECT = 1 << 17;
constant HEAD_EFFECT (line 42) | const HEAD_EFFECT = 1 << 18;
constant EFFECT_PRESERVED (line 43) | const EFFECT_PRESERVED = 1 << 19;
constant USER_EFFECT (line 44) | const USER_EFFECT = 1 << 20;
constant EFFECT_OFFSCREEN (line 45) | const EFFECT_OFFSCREEN = 1 << 25;
constant WAS_MARKED (line 53) | const WAS_MARKED = 1 << 16;
constant REACTION_IS_UPDATING (line 56) | const REACTION_IS_UPDATING = 1 << 21;
constant ASYNC (line 57) | const ASYNC = 1 << 22;
constant ERROR_VALUE (line 59) | const ERROR_VALUE = 1 << 23;
constant STATE_SYMBOL (line 61) | const STATE_SYMBOL = Symbol('$state');
constant LEGACY_PROPS (line 62) | const LEGACY_PROPS = Symbol('legacy props');
constant LOADING_ATTR_SYMBOL (line 63) | const LOADING_ATTR_SYMBOL = Symbol('');
constant PROXY_PATH_SYMBOL (line 64) | const PROXY_PATH_SYMBOL = Symbol('proxy path');
constant STALE_REACTION (line 67) | const STALE_REACTION = new (class StaleReactionError extends Error {
constant IS_XHTML (line 72) | const IS_XHTML =
constant ELEMENT_NODE (line 76) | const ELEMENT_NODE = 1;
constant TEXT_NODE (line 77) | const TEXT_NODE = 3;
constant COMMENT_NODE (line 78) | const COMMENT_NODE = 8;
constant DOCUMENT_FRAGMENT_NODE (line 79) | const DOCUMENT_FRAGMENT_NODE = 11;
FILE: packages/svelte/src/internal/client/context.js
function set_component_context (line 14) | function set_component_context(context) {
function set_dev_stack (line 22) | function set_dev_stack(stack) {
function add_svelte_meta (line 36) | function add_svelte_meta(callback, type, component, line, column, additi...
function set_dev_current_component_function (line 68) | function set_dev_current_component_function(fn) {
function createContext (line 81) | function createContext() {
function getContext (line 106) | function getContext(key) {
function setContext (line 126) | function setContext(key, context) {
function hasContext (line 153) | function hasContext(key) {
function getAllContexts (line 166) | function getAllContexts() {
function push (line 177) | function push(props, runes = false, fn) {
function pop (line 201) | function pop(component) {
function is_runes (line 229) | function is_runes() {
function get_or_init_context_map (line 237) | function get_or_init_context_map(name) {
function get_parent_context (line 249) | function get_parent_context(component_context) {
FILE: packages/svelte/src/internal/client/dev/assign.js
function compare (line 13) | function compare(a, b, property, location) {
function assign (line 28) | function assign(object, property, operator, rhs, location) {
function assign_async (line 52) | async function assign_async(object, property, operator, rhs, location) {
FILE: packages/svelte/src/internal/client/dev/console-log.js
function log_if_contains_state (line 10) | function log_if_contains_state(method, ...objects) {
FILE: packages/svelte/src/internal/client/dev/css.js
function register_style (line 8) | function register_style(hash, style) {
function cleanup_styles (line 22) | function cleanup_styles(hash) {
FILE: packages/svelte/src/internal/client/dev/debug.js
function root (line 28) | function root(effect) {
function effect_label (line 42) | function effect_label(effect, append_effect = false) {
function log_effect_tree (line 76) | function log_effect_tree(effect, highlighted = [], depth = 0, is_reachab...
function log_dep (line 155) | function log_dep(dep) {
function log_reactions (line 190) | function log_reactions(signal) {
function log_inconsistent_branches (line 358) | function log_inconsistent_branches(effect) {
FILE: packages/svelte/src/internal/client/dev/elements.js
function add_locations (line 13) | function add_locations(fn, filename, locations) {
function assign_location (line 29) | function assign_location(element, filename, location) {
function assign_locations (line 46) | function assign_locations(node, filename, locations) {
FILE: packages/svelte/src/internal/client/dev/equality.js
function init_array_prototype_warnings (line 4) | function init_array_prototype_warnings() {
function strict_equals (line 77) | function strict_equals(a, b, equal = true) {
function equals (line 95) | function equals(a, b, equal = true) {
FILE: packages/svelte/src/internal/client/dev/hmr.js
function hmr (line 14) | function hmr(fn) {
FILE: packages/svelte/src/internal/client/dev/inspect.js
function inspect (line 12) | function inspect(get_value, inspector, show_stack = false) {
FILE: packages/svelte/src/internal/client/dev/legacy.js
function check_target (line 6) | function check_target(target) {
function legacy_api (line 12) | function legacy_api() {
FILE: packages/svelte/src/internal/client/dev/ownership.js
function create_ownership_validator (line 16) | function create_ownership_validator(props) {
function is_bound_or_unset (line 72) | function is_bound_or_unset(props, prop_name) {
FILE: packages/svelte/src/internal/client/dev/tracing.js
function log_entry (line 21) | function log_entry(signal, entry) {
function get_type (line 81) | function get_type(signal) {
function trace (line 91) | function trace(label, fn) {
function tag (line 137) | function tag(source, label) {
function tag_proxy (line 148) | function tag_proxy(value, label) {
function label (line 157) | function label(value) {
FILE: packages/svelte/src/internal/client/dev/validation.js
function validate_snippet_args (line 6) | function validate_snippet_args(anchor, ...args) {
FILE: packages/svelte/src/internal/client/dom/blocks/async.js
function async (line 19) | function async(node, blockers = [], expressions = [], fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/await.js
constant PENDING (line 19) | const PENDING = 0;
constant THEN (line 20) | const THEN = 1;
constant CATCH (line 21) | const CATCH = 2;
function await_block (line 34) | function await_block(node, get_input, pending_fn, then_fn, catch_fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/boundary.js
function boundary (line 63) | function boundary(node, props, children, transform_error) {
class Boundary (line 67) | class Boundary {
method constructor (line 144) | constructor(node, props, children, transform_error) {
method #hydrate_resolved_content (line 190) | #hydrate_resolved_content() {
method #hydrate_failed_content (line 201) | #hydrate_failed_content(error) {
method #hydrate_pending_content (line 214) | #hydrate_pending_content() {
method #render (line 244) | #render() {
method #resolve (line 271) | #resolve(batch) {
method defer_effect (line 283) | defer_effect(effect) {
method is_rendered (line 291) | is_rendered() {
method has_pending_snippet (line 295) | has_pending_snippet() {
method #run (line 303) | #run(fn) {
method #update_pending_count (line 331) | #update_pending_count(d, batch) {
method update_pending_count (line 366) | update_pending_count(d, batch) {
method get_effect_pending (line 382) | get_effect_pending() {
method error (line 388) | error(error) {
function pending (line 510) | function pending() {
FILE: packages/svelte/src/internal/client/dom/blocks/branches.js
class BranchManager (line 20) | class BranchManager {
method constructor (line 66) | constructor(anchor, transition = true) {
method ensure (line 176) | ensure(key, fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/css-props.js
function css_props (line 10) | function css_props(element, get_styles) {
FILE: packages/svelte/src/internal/client/dom/blocks/each.js
function index (line 54) | function index(_, i) {
function pause_effects (line 65) | function pause_effects(state, to_destroy, controlled_anchor) {
function destroy_effects (line 134) | function destroy_effects(state, to_destroy, remove_dom = true) {
function each (line 176) | function each(node, flags, get_collection, get_key, render_fn, fallback_...
function skip_to_branch (line 404) | function skip_to_branch(effect) {
function reconcile (line 421) | function reconcile(state, array, anchor, flags, get_key) {
function create_item (line 661) | function create_item(items, anchor, value, key, index, render_fn, flags,...
function move (line 698) | function move(effect, next, anchor) {
function link (line 726) | function link(state, prev, next) {
function validate_each_keys (line 745) | function validate_each_keys(array, key_fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/html.js
function check_hash (line 26) | function check_hash(element, server_hash, value) {
function html (line 51) | function html(
FILE: packages/svelte/src/internal/client/dom/blocks/if.js
function if_block (line 21) | function if_block(node, fn, elseif = false) {
FILE: packages/svelte/src/internal/client/dom/blocks/key.js
constant NAN (line 7) | const NAN = Symbol('NaN');
function key (line 16) | function key(node, get_key, render_fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/slot.js
function slot (line 10) | function slot(anchor, $$props, name, slot_props, fallback_fn) {
function sanitize_slots (line 36) | function sanitize_slots(props) {
FILE: packages/svelte/src/internal/client/dom/blocks/snippet.js
function snippet (line 27) | function snippet(node, get_snippet, ...args) {
function wrap_snippet (line 47) | function wrap_snippet(component, fn) {
function createRawSnippet (line 73) | function createRawSnippet(fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/svelte-component.js
function component (line 24) | function component(node, get_component, render_fn) {
FILE: packages/svelte/src/internal/client/dom/blocks/svelte-element.js
function element (line 31) | function element(node, get_tag, is_svg, render_fn, get_namespace, locati...
FILE: packages/svelte/src/internal/client/dom/blocks/svelte-head.js
function head (line 12) | function head(hash, render_fn) {
FILE: packages/svelte/src/internal/client/dom/css.js
function append_styles (line 10) | function append_styles(anchor, css) {
FILE: packages/svelte/src/internal/client/dom/elements/actions.js
function action (line 13) | function action(dom, action, get_value) {
FILE: packages/svelte/src/internal/client/dom/elements/attachments.js
function attach (line 12) | function attach(node, get_fn) {
FILE: packages/svelte/src/internal/client/dom/elements/attributes.js
constant CLASS (line 27) | const CLASS = Symbol('class');
constant STYLE (line 28) | const STYLE = Symbol('style');
constant IS_CUSTOM_ELEMENT (line 30) | const IS_CUSTOM_ELEMENT = Symbol('is custom element');
constant IS_HTML (line 31) | const IS_HTML = Symbol('is html');
constant LINK_TAG (line 33) | const LINK_TAG = IS_XHTML ? 'link' : 'LINK';
constant INPUT_TAG (line 34) | const INPUT_TAG = IS_XHTML ? 'input' : 'INPUT';
constant OPTION_TAG (line 35) | const OPTION_TAG = IS_XHTML ? 'option' : 'OPTION';
constant SELECT_TAG (line 36) | const SELECT_TAG = IS_XHTML ? 'select' : 'SELECT';
constant PROGRESS_TAG (line 37) | const PROGRESS_TAG = IS_XHTML ? 'progress' : 'PROGRESS';
function remove_input_defaults (line 45) | function remove_input_defaults(input) {
function set_value (line 82) | function set_value(element, value) {
function set_checked (line 105) | function set_checked(element, checked) {
function set_selected (line 128) | function set_selected(element, selected) {
function set_default_checked (line 145) | function set_default_checked(element, checked) {
function set_default_value (line 156) | function set_default_value(element, value) {
function set_attribute (line 168) | function set_attribute(element, attribute, value, skip_warning) {
function set_xlink_attribute (line 213) | function set_xlink_attribute(dom, attribute, value) {
function set_custom_element_data (line 222) | function set_custom_element_data(node, prop, value) {
function set_attributes (line 281) | function set_attributes(
function attribute_effect (line 491) | function attribute_effect(
function get_attributes (line 562) | function get_attributes(element) {
function get_setters (line 576) | function get_setters(element) {
function check_src_in_dev_hydration (line 608) | function check_src_in_dev_hydration(element, attribute, value) {
function src_url_equal (line 625) | function src_url_equal(element_src, url) {
function split_srcset (line 631) | function split_srcset(srcset) {
function srcset_url_equal (line 640) | function srcset_url_equal(element, srcset) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/document.js
function bind_active_element (line 7) | function bind_active_element(update) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/input.js
function bind_value (line 20) | function bind_value(input, get, set = get) {
function bind_group (line 136) | function bind_group(inputs, group_index, input, get, set = get) {
function bind_checked (line 230) | function bind_checked(input, get, set = get) {
function get_binding_group_value (line 259) | function get_binding_group_value(group, __value, checked) {
function is_numberlike_input (line 280) | function is_numberlike_input(input) {
function to_number (line 288) | function to_number(value) {
function bind_files (line 297) | function bind_files(input, get, set = get) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/media.js
function time_ranges_to_array (line 5) | function time_ranges_to_array(ranges) {
function bind_current_time (line 21) | function bind_current_time(media, get, set = get) {
function bind_buffered (line 64) | function bind_buffered(media, set) {
function bind_seekable (line 88) | function bind_seekable(media, set) {
function bind_played (line 96) | function bind_played(media, set) {
function bind_seeking (line 104) | function bind_seeking(media, set) {
function bind_ended (line 112) | function bind_ended(media, set) {
function bind_ready_state (line 120) | function bind_ready_state(media, set) {
function bind_playback_rate (line 133) | function bind_playback_rate(media, get, set = get) {
function bind_paused (line 158) | function bind_paused(media, get, set = get) {
function bind_volume (line 192) | function bind_volume(media, get, set = get) {
function bind_muted (line 217) | function bind_muted(media, get, set = get) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/navigator.js
function bind_online (line 7) | function bind_online(update) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/props.js
function bind_prop (line 13) | function bind_prop(props, prop, value) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/select.js
function select_option (line 16) | function select_option(select, value, mounting = false) {
function init_select (line 57) | function init_select(select) {
function bind_select_value (line 87) | function bind_select_value(select, get, set = get) {
function get_option_value (line 157) | function get_option_value(option) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/shared.js
function listen (line 18) | function listen(target, events, handler, call_handler_immediately = true) {
function without_reactive_context (line 38) | function without_reactive_context(fn) {
function listen_to_event_and_reset_event (line 59) | function listen_to_event_and_reset_event(element, event, handler, on_res...
FILE: packages/svelte/src/internal/client/dom/elements/bindings/size.js
class ResizeObserverSingleton (line 8) | class ResizeObserverSingleton {
method constructor (line 22) | constructor(options) {
method observe (line 30) | observe(element, listener) {
method #getObserver (line 48) | #getObserver() {
function bind_resize_observer (line 82) | function bind_resize_observer(element, type, set) {
function bind_element_size (line 99) | function bind_element_size(element, type, set) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/this.js
function is_bound_this (line 12) | function is_bound_this(bound_value, element_or_component) {
function bind_this (line 26) | function bind_this(element_or_component = {}, update, get_value, get_par...
FILE: packages/svelte/src/internal/client/dom/elements/bindings/universal.js
function bind_content_editable (line 11) | function bind_content_editable(property, element, get, set = get) {
function bind_property (line 41) | function bind_property(property, event_name, element, set, get) {
function bind_focused (line 71) | function bind_focused(element, set) {
FILE: packages/svelte/src/internal/client/dom/elements/bindings/window.js
function bind_window_scroll (line 10) | function bind_window_scroll(type, get, set = get) {
function bind_window_size (line 64) | function bind_window_size(type, set) {
FILE: packages/svelte/src/internal/client/dom/elements/class.js
function set_class (line 13) | function set_class(dom, is_html, value, hash, prev_classes, next_classes) {
FILE: packages/svelte/src/internal/client/dom/elements/custom-element.js
method constructor (line 47) | constructor($$componentCtor, $$slots, shadow_root_init) {
method addEventListener (line 64) | addEventListener(type, listener, options) {
method removeEventListener (line 82) | removeEventListener(type, listener, options) {
method connectedCallback (line 93) | async connectedCallback() {
method attributeChangedCallback (line 194) | attributeChangedCallback(attr, _oldValue, newValue) {
method disconnectedCallback (line 201) | disconnectedCallback() {
method $$g_p (line 216) | $$g_p(attribute_name) {
function get_custom_element_value (line 234) | function get_custom_element_value(prop, value, props_definition, transfo...
function get_custom_elements_slots (line 269) | function get_custom_elements_slots(element) {
function create_custom_element (line 289) | function create_custom_element(
FILE: packages/svelte/src/internal/client/dom/elements/customizable-select.js
function is_supported (line 15) | function is_supported() {
function selectedcontent (line 30) | function selectedcontent(element, update_element) {
function customizable_select (line 78) | function customizable_select(element, rich_fn) {
FILE: packages/svelte/src/internal/client/dom/elements/events.js
function replay_events (line 32) | function replay_events(dom) {
function create_event (line 56) | function create_event(event_name, dom, handler, options = {}) {
function on (line 101) | function on(element, type, handler, options = {}) {
function event (line 117) | function event(event_name, dom, handler, capture, passive) {
function delegated (line 142) | function delegated(event_name, element, handler) {
function delegate (line 151) | function delegate(events) {
function handle_event_propagation (line 173) | function handle_event_propagation(event) {
function apply (line 322) | function apply(
FILE: packages/svelte/src/internal/client/dom/elements/misc.js
function autofocus (line 10) | function autofocus(dom, value) {
function remove_textarea_child (line 29) | function remove_textarea_child(dom) {
function add_form_reset_listener (line 37) | function add_form_reset_listener() {
FILE: packages/svelte/src/internal/client/dom/elements/style.js
function update_styles (line 10) | function update_styles(dom, prev = {}, next, priority) {
function set_style (line 30) | function set_style(dom, value, prev_styles, next_styles) {
FILE: packages/svelte/src/internal/client/dom/elements/transitions.js
function dispatch_event (line 17) | function dispatch_event(element, type) {
function css_property_to_camelcase (line 28) | function css_property_to_camelcase(style) {
function css_to_keyframe (line 51) | function css_to_keyframe(css) {
function set_animation_effect_override (line 72) | function set_animation_effect_override(v) {
function animation (line 84) | function animation(element, get_fn, get_params) {
function transition (line 186) | function transition(flags, element, get_fn, get_params) {
function animate (line 312) | function animate(element, options, counterpart, t2, on_finish) {
FILE: packages/svelte/src/internal/client/dom/hydration.js
function set_hydrating (line 20) | function set_hydrating(value) {
function set_hydrate_node (line 34) | function set_hydrate_node(node) {
function hydrate_next (line 43) | function hydrate_next() {
function reset (line 48) | function reset(node) {
function hydrate_template (line 63) | function hydrate_template(template) {
function next (line 70) | function next(count = 1) {
function skip_nodes (line 87) | function skip_nodes(remove = true) {
function read_hydration_instruction (line 118) | function read_hydration_instruction(node) {
FILE: packages/svelte/src/internal/client/dom/legacy/event-modifiers.js
function trusted (line 11) | function trusted(fn) {
function self (line 27) | function self(fn) {
function stopPropagation (line 44) | function stopPropagation(fn) {
function once (line 59) | function once(fn) {
function stopImmediatePropagation (line 77) | function stopImmediatePropagation(fn) {
function preventDefault (line 92) | function preventDefault(fn) {
function passive (line 107) | function passive(node, [event, handler]) {
function nonpassive (line 121) | function nonpassive(node, [event, handler]) {
FILE: packages/svelte/src/internal/client/dom/legacy/lifecycle.js
function init (line 12) | function init(immutable = false) {
function observe_all (line 76) | function observe_all(context, props) {
FILE: packages/svelte/src/internal/client/dom/legacy/misc.js
function reactive_import (line 10) | function reactive_import(fn) {
function bubble_event (line 30) | function bubble_event($$props, event) {
function add_legacy_event_listener (line 49) | function add_legacy_event_listener($$props, event_name, event_callback) {
function update_legacy_props (line 62) | function update_legacy_props($$new_props) {
FILE: packages/svelte/src/internal/client/dom/operations.js
function init_operations (line 31) | function init_operations() {
function create_text (line 80) | function create_text(value = '') {
function get_first_child (line 89) | function get_first_child(node) {
function get_next_sibling (line 98) | function get_next_sibling(node) {
function child (line 109) | function child(node, is_text) {
function first_child (line 140) | function first_child(node, is_text = false) {
function sibling (line 174) | function sibling(node, count = 1, is_text = false) {
function clear_text_content (line 216) | function clear_text_content(node) {
function should_defer_append (line 226) | function should_defer_append() {
function create_element (line 241) | function create_element(tag, namespace, is) {
function create_fragment (line 248) | function create_fragment() {
function create_comment (line 256) | function create_comment(data = '') {
function set_attribute (line 266) | function set_attribute(element, key, value = '') {
function merge_text_nodes (line 279) | function merge_text_nodes(text) {
FILE: packages/svelte/src/internal/client/dom/reconciler.js
function create_trusted_html (line 14) | function create_trusted_html(html) {
function create_fragment_from_html (line 21) | function create_fragment_from_html(html) {
FILE: packages/svelte/src/internal/client/dom/task.js
function run_micro_tasks (line 7) | function run_micro_tasks() {
function queue_micro_task (line 16) | function queue_micro_task(fn) {
function flush_tasks (line 38) | function flush_tasks() {
FILE: packages/svelte/src/internal/client/dom/template.js
constant TEMPLATE_TAG (line 33) | const TEMPLATE_TAG = IS_XHTML ? 'template' : 'TEMPLATE';
constant SCRIPT_TAG (line 34) | const SCRIPT_TAG = IS_XHTML ? 'script' : 'SCRIPT';
function assign_nodes (line 40) | function assign_nodes(start, end) {
function from_html (line 53) | function from_html(content, flags) {
function from_namespace (line 101) | function from_namespace(content, flags, ns = 'svg') {
function from_svg (line 154) | function from_svg(content, flags) {
function from_mathml (line 163) | function from_mathml(content, flags) {
function fragment_from_tree (line 171) | function fragment_from_tree(structure, ns) {
function from_tree (line 219) | function from_tree(structure, flags) {
function with_script (line 264) | function with_script(fn) {
function run_scripts (line 274) | function run_scripts(node) {
function text (line 311) | function text(value = '') {
function comment (line 335) | function comment() {
function append (line 358) | function append(anchor, dom) {
function props_id (line 384) | function props_id() {
FILE: packages/svelte/src/internal/client/dom/types.d.ts
type TemplateStructure (line 1) | type TemplateStructure =
FILE: packages/svelte/src/internal/client/error-handling.js
function handle_error (line 15) | function handle_error(error) {
function invoke_error_boundary (line 47) | function invoke_error_boundary(error, effect) {
function get_adjustments (line 78) | function get_adjustments(error, effect) {
function apply_adjustments (line 106) | function apply_adjustments(error) {
FILE: packages/svelte/src/internal/client/errors.js
function async_derived_orphan (line 11) | function async_derived_orphan() {
function bind_invalid_checkbox_value (line 27) | function bind_invalid_checkbox_value() {
function bind_invalid_export (line 46) | function bind_invalid_export(component, key, name) {
function bind_not_bindable (line 65) | function bind_not_bindable(key, component, name) {
function component_api_changed (line 83) | function component_api_changed(method, component) {
function component_api_invalid_new (line 101) | function component_api_invalid_new(component, name) {
function derived_references_self (line 117) | function derived_references_self() {
function each_key_duplicate (line 136) | function each_key_duplicate(a, b, value) {
function each_key_volatile (line 157) | function each_key_volatile(index, a, b) {
function effect_in_teardown (line 174) | function effect_in_teardown(rune) {
function effect_in_unowned_derived (line 190) | function effect_in_unowned_derived() {
function effect_orphan (line 207) | function effect_orphan(rune) {
function effect_pending_outside_reaction (line 223) | function effect_pending_outside_reaction() {
function effect_update_depth_exceeded (line 239) | function effect_update_depth_exceeded() {
function flush_sync_in_effect (line 255) | function flush_sync_in_effect() {
function fork_discarded (line 271) | function fork_discarded() {
function fork_timing (line 287) | function fork_timing() {
function get_abort_signal_outside_reaction (line 303) | function get_abort_signal_outside_reaction() {
function hydratable_missing_but_required (line 320) | function hydratable_missing_but_required(key) {
function hydration_failed (line 336) | function hydration_failed() {
function invalid_snippet (line 352) | function invalid_snippet() {
function lifecycle_legacy_only (line 369) | function lifecycle_legacy_only(name) {
function props_invalid_value (line 386) | function props_invalid_value(key) {
function props_rest_readonly (line 403) | function props_rest_readonly(property) {
function rune_outside_svelte (line 420) | function rune_outside_svelte(rune) {
function set_context_after_init (line 436) | function set_context_after_init() {
function state_descriptors_fixed (line 452) | function state_descriptors_fixed() {
function state_prototype_fixed (line 468) | function state_prototype_fixed() {
function state_unsafe_mutation (line 484) | function state_unsafe_mutation() {
function svelte_boundary_reset_onerror (line 500) | function svelte_boundary_reset_onerror() {
FILE: packages/svelte/src/internal/client/hydratable.js
function hydratable (line 13) | function hydratable(key, fn) {
FILE: packages/svelte/src/internal/client/legacy.js
function capture_signals (line 16) | function capture_signals(fn) {
function invalidate_inner_signals (line 42) | function invalidate_inner_signals(fn) {
FILE: packages/svelte/src/internal/client/loop.js
function run_tasks (line 9) | function run_tasks() {
function loop (line 32) | function loop(callback) {
FILE: packages/svelte/src/internal/client/proxy.js
function proxy (line 40) | function proxy(value) {
function get_label (line 360) | function get_label(path, prop) {
function get_proxied_value (line 369) | function get_proxied_value(value) {
function is (line 391) | function is(a, b) {
constant ARRAY_MUTATING_METHODS (line 395) | const ARRAY_MUTATING_METHODS = new Set([
function inspectable_array (line 412) | function inspectable_array(array) {
FILE: packages/svelte/src/internal/client/proxy.test.ts
method x (line 18) | get x() {
FILE: packages/svelte/src/internal/client/reactivity/async.js
function flatten (line 35) | function flatten(blockers, sync, async, fn) {
function run_after_blockers (line 102) | function run_after_blockers(blockers, fn) {
function capture (line 111) | function capture() {
function save (line 148) | async function save(promise) {
function track_reactivity_loss (line 165) | async function track_reactivity_loss(promise) {
function unset_context (line 220) | function unset_context(deactivate_batch = true) {
function run (line 235) | function run(thunks) {
function wait (line 302) | function wait(blockers) {
function increment_pending (line 309) | function increment_pending() {
FILE: packages/svelte/src/internal/client/reactivity/batch.js
class Batch (line 92) | class Batch {
method #is_deferred (line 182) | #is_deferred() {
method #is_blocked (line 186) | #is_blocked() {
method skip_effect (line 214) | skip_effect(effect) {
method unskip_effect (line 225) | unskip_effect(effect) {
method #process (line 242) | #process() {
method #traverse (line 364) | #traverse(root, effects, render_effects) {
method #defer_effects (line 412) | #defer_effects(effects) {
method capture (line 425) | capture(source, old_value, is_derived = false) {
method activate (line 437) | activate() {
method deactivate (line 441) | deactivate() {
method flush (line 446) | flush() {
method discard (line 474) | discard() {
method register_created_effect (line 484) | register_created_effect(effect) {
method #commit (line 488) | #commit() {
method increment (line 591) | increment(blocking, effect) {
method decrement (line 606) | decrement(blocking, effect, skip) {
method transfer_effects (line 638) | transfer_effects(dirty_effects, maybe_dirty_effects) {
method oncommit (line 652) | oncommit(fn) {
method ondiscard (line 657) | ondiscard(fn) {
method settled (line 661) | settled() {
method ensure (line 665) | static ensure() {
method apply (line 688) | apply() {
method schedule (line 736) | schedule(effect) {
function flushSync (line 797) | function flushSync(fn) {
function infinite_loop_guard (line 826) | function infinite_loop_guard() {
function flush_queued_effects (line 872) | function flush_queued_effects(effects) {
function mark_effects (line 948) | function mark_effects(value, sources, marked, checked) {
function mark_eager_effects (line 977) | function mark_eager_effects(value, effects) {
function depends_on (line 997) | function depends_on(reaction, sources, checked) {
function schedule_effect (line 1023) | function schedule_effect(effect) {
function eager_flush (line 1030) | function eager_flush() {
function eager (line 1048) | function eager(fn) {
function reset_branch (line 1093) | function reset_branch(effect, tracked) {
function reset_all (line 1118) | function reset_all(effect) {
function fork (line 1147) | function fork(fn) {
function clear (line 1229) | function clear() {
FILE: packages/svelte/src/internal/client/reactivity/deriveds.js
function set_reactivity_loss_tracker (line 56) | function set_reactivity_loss_tracker(v) {
function derived (line 68) | function derived(fn) {
function async_derived (line 112) | function async_derived(fn, label, location) {
function user_derived (line 280) | function user_derived(fn) {
function derived_safe_equal (line 294) | function derived_safe_equal(fn) {
function destroy_derived_effects (line 304) | function destroy_derived_effects(derived) {
function get_derived_parent_effect (line 327) | function get_derived_parent_effect(derived) {
function execute_derived (line 345) | function execute_derived(derived) {
function update_derived (line 386) | function update_derived(derived) {
function freeze_derived_effects (line 431) | function freeze_derived_effects(derived) {
function unfreeze_derived_effects (line 456) | function unfreeze_derived_effects(derived) {
FILE: packages/svelte/src/internal/client/reactivity/effects.js
function validate_effect (line 53) | function validate_effect(rune) {
function push_effect (line 71) | function push_effect(effect, parent_effect) {
function create_effect (line 87) | function create_effect(type, fn) {
function effect_tracking (line 186) | function effect_tracking() {
function teardown (line 193) | function teardown(fn) {
function user_effect (line 204) | function user_effect(fn) {
function create_user_effect (line 231) | function create_user_effect(fn) {
function user_pre_effect (line 240) | function user_pre_effect(fn) {
function eager_effect (line 251) | function eager_effect(fn) {
function effect_root (line 260) | function effect_root(fn) {
function component_root (line 274) | function component_root(fn) {
function effect (line 297) | function effect(fn) {
function legacy_pre_effect (line 306) | function legacy_pre_effect(deps, fn) {
function legacy_pre_effect_reset (line 338) | function legacy_pre_effect_reset() {
function async_effect (line 367) | function async_effect(fn) {
function render_effect (line 375) | function render_effect(fn, flags = 0) {
function template_effect (line 385) | function template_effect(fn, sync = [], async = [], blockers = []) {
function deferred_template_effect (line 398) | function deferred_template_effect(fn, sync = [], async = [], blockers = ...
function block (line 416) | function block(fn, flags = 0) {
function managed (line 428) | function managed(fn, flags = 0) {
function branch (line 439) | function branch(fn) {
function execute_effect_teardown (line 446) | function execute_effect_teardown(effect) {
function destroy_effect_children (line 467) | function destroy_effect_children(signal, remove_dom = false) {
function destroy_block_effect_children (line 497) | function destroy_block_effect_children(signal) {
function destroy_effect (line 514) | function destroy_effect(effect, remove_dom = true) {
function remove_effect_dom (line 573) | function remove_effect_dom(node, end) {
function unlink_effect (line 588) | function unlink_effect(effect) {
function pause_effect (line 612) | function pause_effect(effect, callback, destroy = true) {
function pause_children (line 639) | function pause_children(effect, transitions, local) {
function resume_effect (line 676) | function resume_effect(effect) {
function resume_children (line 684) | function resume_children(effect, local) {
function aborted (line 720) | function aborted(effect = /** @type {Effect} */ (active_effect)) {
function move_effect (line 728) | function move_effect(effect, fragment) {
FILE: packages/svelte/src/internal/client/reactivity/equality.js
function equals (line 4) | function equals(value) {
function safe_not_equal (line 13) | function safe_not_equal(a, b) {
function not_equal (line 24) | function not_equal(a, b) {
function safe_equals (line 29) | function safe_equals(value) {
FILE: packages/svelte/src/internal/client/reactivity/props.js
function update_prop (line 32) | function update_prop(fn, d = 1) {
function update_pre_prop (line 43) | function update_pre_prop(fn, d = 1) {
method get (line 55) | get(target, key) {
method set (line 59) | set(target, key) {
method getOwnPropertyDescriptor (line 67) | getOwnPropertyDescriptor(target, key) {
method has (line 77) | has(target, key) {
method ownKeys (line 81) | ownKeys(target) {
function rest_props (line 93) | function rest_props(props, exclude, name) {
method get (line 105) | get(target, key) {
method set (line 110) | set(target, key, value) {
method getOwnPropertyDescriptor (line 137) | getOwnPropertyDescriptor(target, key) {
method deleteProperty (line 147) | deleteProperty(target, key) {
method has (line 154) | has(target, key) {
method ownKeys (line 158) | ownKeys(target) {
function legacy_rest_props (line 168) | function legacy_rest_props(props, exclude) {
method get (line 191) | get(target, key) {
method set (line 199) | set(target, key, value) {
method getOwnPropertyDescriptor (line 212) | getOwnPropertyDescriptor(target, key) {
method has (line 229) | has(target, key) {
method ownKeys (line 240) | ownKeys(target) {
function spread_props (line 265) | function spread_props(...props) {
function prop (line 279) | function prop(props, key, flags, fallback) {
FILE: packages/svelte/src/internal/client/reactivity/sources.js
function set_eager_effects (line 58) | function set_eager_effects(v) {
function set_eager_effects_deferred (line 64) | function set_eager_effects_deferred() {
function source (line 75) | function source(v, stack) {
function state (line 102) | function state(v, stack) {
function mutable_source (line 117) | function mutable_source(initial_value, immutable = false, trackable = tr...
function mutate (line 137) | function mutate(source, value) {
function set (line 152) | function set(source, value, should_proxy = false) {
function internal_set (line 181) | function internal_set(source, value, updated_during_traversal = null) {
function flush_eager_effects (line 272) | function flush_eager_effects() {
function update (line 296) | function update(source, d = 1) {
function update_pre (line 312) | function update_pre(source, d = 1) {
function increment (line 324) | function increment(source) {
function mark_reactions (line 334) | function mark_reactions(signal, status, updated_during_traversal) {
FILE: packages/svelte/src/internal/client/reactivity/status.js
constant STATUS_MASK (line 4) | const STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
function set_signal_status (line 10) | function set_signal_status(signal, status) {
function update_derived_status (line 18) | function update_derived_status(derived) {
FILE: packages/svelte/src/internal/client/reactivity/store.js
constant IS_UNMOUNTED (line 24) | let IS_UNMOUNTED = Symbol();
function store_get (line 36) | function store_get(store, store_name, stores) {
function store_unsub (line 90) | function store_unsub(store, store_name, stores) {
function store_set (line 110) | function store_set(store, value) {
function invalidate_store (line 119) | function invalidate_store(stores, store_name) {
function setup_stores (line 130) | function setup_stores() {
function update_with_flag (line 155) | function update_with_flag(store, value) {
function store_mutate (line 172) | function store_mutate(store, expression, new_value) {
function update_store (line 183) | function update_store(store, store_value, d = 1) {
function update_pre_store (line 194) | function update_pre_store(store, store_value, d = 1) {
function mark_store_binding (line 203) | function mark_store_binding() {
function capture_store_binding (line 215) | function capture_store_binding(fn) {
FILE: packages/svelte/src/internal/client/reactivity/types.d.ts
type Signal (line 11) | interface Signal {
type Value (line 18) | interface Value<V = unknown> extends Signal {
type Reaction (line 44) | interface Reaction extends Signal {
type Derived (line 55) | interface Derived<V = unknown> extends Value<V>, Reaction {
type EffectNodes (line 64) | interface EffectNodes {
type Effect (line 73) | interface Effect extends Reaction {
type Source (line 103) | type Source<V = unknown> = Value<V>;
type MaybeSource (line 105) | type MaybeSource<T = unknown> = T | Source<T>;
type Blocker (line 107) | interface Blocker {
FILE: packages/svelte/src/internal/client/reactivity/utils.js
function clear_marked (line 8) | function clear_marked(deps) {
function defer_effect (line 27) | function defer_effect(effect, dirty_effects, maybe_dirty_effects) {
FILE: packages/svelte/src/internal/client/render.js
function set_should_intro (line 37) | function set_should_intro(value) {
function set_text (line 46) | function set_text(text, value) {
function mount (line 67) | function mount(component, options) {
function hydrate (line 96) | function hydrate(component, options) {
function _mount (line 163) | function _mount(
function unmount (line 318) | function unmount(component, options) {
FILE: packages/svelte/src/internal/client/runtime.js
function set_is_destroying_effect (line 68) | function set_is_destroying_effect(value) {
function set_active_reaction (line 78) | function set_active_reaction(reaction) {
function set_active_effect (line 86) | function set_active_effect(effect) {
function push_reaction_value (line 98) | function push_reaction_value(value) {
function set_untracked_writes (line 126) | function set_untracked_writes(value) {
function set_update_version (line 142) | function set_update_version(value) {
function increment_write_version (line 146) | function increment_write_version() {
function is_dirty (line 156) | function is_dirty(reaction) {
function schedule_possible_effect_self_invalidation (line 201) | function schedule_possible_effect_self_invalidation(signal, effect, root...
function update_reaction (line 226) | function update_reaction(reaction) {
function remove_reaction (line 367) | function remove_reaction(signal, dependency) {
function remove_reactions (line 417) | function remove_reactions(signal, start_index) {
function update_effect (line 430) | function update_effect(effect) {
function tick (line 490) | async function tick() {
function settled (line 514) | function settled() {
function get (line 523) | function get(signal) {
function reconnect (line 688) | function reconnect(derived) {
function depends_on_old_values (line 704) | function depends_on_old_values(derived) {
function safe_get (line 727) | function safe_get(signal) {
function untrack (line 747) | function untrack(fn) {
function deep_read_state (line 763) | function deep_read_state(value) {
function deep_read (line 787) | function deep_read(value, visited = new Set()) {
FILE: packages/svelte/src/internal/client/types.d.ts
type Window (line 7) | interface Window {
type EventCallback (line 15) | type EventCallback = (event: Event) => boolean;
type EventCallbackMap (line 16) | type EventCallbackMap = Record<string, EventCallback | EventCallback[]>;
type ComponentContext (line 22) | type ComponentContext = {
type ComponentContextLegacy (line 72) | type ComponentContextLegacy = ComponentContext & {
type Equals (line 76) | type Equals = (this: Value, value: unknown) => boolean;
type TemplateNode (line 78) | type TemplateNode = Text | Element | Comment;
type Dom (line 80) | type Dom = TemplateNode | TemplateNode[];
type EachOutroGroup (line 82) | type EachOutroGroup = {
type EachState (line 87) | type EachState = {
type EachItem (line 102) | type EachItem = {
type TransitionManager (line 111) | interface TransitionManager {
type AnimationManager (line 122) | interface AnimationManager {
type Animation (line 135) | interface Animation {
type TransitionFn (line 146) | type TransitionFn<P> = (
type AnimateFn (line 152) | type AnimateFn<P> = (
type AnimationConfig (line 158) | type AnimationConfig = {
type StoreReferencesContainer (line 166) | type StoreReferencesContainer = Record<
type ActionPayload (line 175) | type ActionPayload<P> = { destroy?: () => void; update?: (value: P) => v...
type Raf (line 177) | type Raf = {
type Task (line 186) | interface Task {
type TaskCallback (line 191) | type TaskCallback = (now: number) => boolean | void;
type TaskEntry (line 193) | type TaskEntry = { c: TaskCallback; f: () => void };
type ProxyStateObject (line 195) | type ProxyStateObject<T = Record<string | symbol, any>> = T & {
type SourceLocation (line 199) | type SourceLocation =
type DevStackEntry (line 203) | interface DevStackEntry {
FILE: packages/svelte/src/internal/client/validate.js
function validate_binding (line 17) | function validate_binding(binding, blockers, get_object, get_property, l...
FILE: packages/svelte/src/internal/client/warnings.js
function assignment_value_stale (line 13) | function assignment_value_stale(property, location) {
function await_reactivity_loss (line 25) | function await_reactivity_loss(name) {
function await_waterfall (line 38) | function await_waterfall(name, location) {
function binding_property_non_reactive (line 51) | function binding_property_non_reactive(binding, location) {
function console_log_state (line 69) | function console_log_state(method) {
function event_handler_invalid (line 82) | function event_handler_invalid(handler, suggestion) {
function hydratable_missing_but_expected (line 94) | function hydratable_missing_but_expected(key) {
function hydration_attribute_changed (line 108) | function hydration_attribute_changed(attribute, html, value) {
function hydration_html_changed (line 120) | function hydration_html_changed(location) {
function hydration_mismatch (line 138) | function hydration_mismatch(location) {
function invalid_raw_snippet_render (line 155) | function invalid_raw_snippet_render() {
function legacy_recursive_reactive_block (line 167) | function legacy_recursive_reactive_block(filename) {
function lifecycle_double_unmount (line 178) | function lifecycle_double_unmount() {
function ownership_invalid_binding (line 193) | function ownership_invalid_binding(parent, prop, child, owner) {
function ownership_invalid_mutation (line 208) | function ownership_invalid_mutation(name, location, prop, parent) {
function select_multiple_invalid_value (line 219) | function select_multiple_invalid_value() {
function state_proxy_equality_mismatch (line 231) | function state_proxy_equality_mismatch(operator) {
function state_proxy_unmount (line 242) | function state_proxy_unmount() {
function svelte_boundary_reset_noop (line 253) | function svelte_boundary_reset_noop() {
function transition_slide_display (line 265) | function transition_slide_display(value) {
FILE: packages/svelte/src/internal/flags/index.js
function enable_async_mode_flag (line 8) | function enable_async_mode_flag() {
function disable_async_mode_flag (line 13) | function disable_async_mode_flag() {
function enable_legacy_mode_flag (line 17) | function enable_legacy_mode_flag() {
function enable_tracing_mode_flag (line 21) | function enable_tracing_mode_flag() {
FILE: packages/svelte/src/internal/server/abort-signal.js
function abort (line 6) | function abort() {
function getAbortSignal (line 11) | function getAbortSignal() {
FILE: packages/svelte/src/internal/server/blocks/html.js
function html (line 7) | function html(value) {
FILE: packages/svelte/src/internal/server/blocks/snippet.js
function createRawSnippet (line 14) | function createRawSnippet(fn) {
FILE: packages/svelte/src/internal/server/context.js
function set_ssr_context (line 9) | function set_ssr_context(v) {
function createContext (line 18) | function createContext() {
function getContext (line 38) | function getContext(key) {
function setContext (line 51) | function setContext(key, context) {
function hasContext (line 60) | function hasContext(key) {
function getAllContexts (line 65) | function getAllContexts() {
function get_or_init_context_map (line 73) | function get_or_init_context_map(name) {
function push (line 84) | function push(fn) {
function pop (line 93) | function pop() {
function get_parent_context (line 101) | function get_parent_context(ssr_context) {
function save (line 124) | async function save(promise) {
FILE: packages/svelte/src/internal/server/crypto.js
function sha256 (line 11) | async function sha256(data) {
function base64_encode (line 30) | function base64_encode(bytes) {
FILE: packages/svelte/src/internal/server/dev.js
function print_error (line 33) | function print_error(renderer, message) {
function push_element (line 57) | function push_element(renderer, tag, line, column) {
function pop_element (line 91) | function pop_element() {
function validate_snippet_args (line 98) | function validate_snippet_args(renderer) {
function get_user_code_location (line 108) | function get_user_code_location() {
FILE: packages/svelte/src/internal/server/errors.js
function async_local_storage_unavailable (line 9) | function async_local_storage_unavailable() {
function await_invalid (line 21) | function await_invalid() {
function dynamic_element_invalid_tag (line 34) | function dynamic_element_invalid_tag(tag) {
function html_deprecated (line 46) | function html_deprecated() {
function hydratable_clobbering (line 62) | function hydratable_clobbering(key, stack) {
function hydratable_serialization_failed (line 83) | function hydratable_serialization_failed(key, stack) {
function invalid_csp (line 100) | function invalid_csp() {
function invalid_id_prefix (line 112) | function invalid_id_prefix() {
function lifecycle_function_unavailable (line 125) | function lifecycle_function_unavailable(name) {
function server_context_required (line 137) | function server_context_required() {
FILE: packages/svelte/src/internal/server/hydratable.js
function hydratable (line 16) | function hydratable(key, fn) {
function encode (line 48) | function encode(key, value, unresolved) {
function is_promise (line 93) | function is_promise(value) {
function compare (line 104) | async function compare(key, a, b) {
function serialization_stack (line 133) | function serialization_stack(root_stack, uneval_stack) {
FILE: packages/svelte/src/internal/server/hydration.js
constant BLOCK_OPEN (line 3) | const BLOCK_OPEN = `<!--${HYDRATION_START}-->`;
constant BLOCK_OPEN_ELSE (line 4) | const BLOCK_OPEN_ELSE = `<!--${HYDRATION_START_ELSE}-->`;
constant BLOCK_CLOSE (line 5) | const BLOCK_CLOSE = `<!--${HYDRATION_END}-->`;
constant EMPTY_COMMENT (line 6) | const EMPTY_COMMENT = `<!---->`;
FILE: packages/svelte/src/internal/server/index.js
constant INVALID_ATTR_NAME_CHAR_REGEX (line 30) | const INVALID_ATTR_NAME_CHAR_REGEX =
function element (line 40) | function element(renderer, tag, attributes_fn = noop, children_fn = noop) {
function render (line 71) | function render(component, options = {}) {
function head (line 84) | function head(hash, renderer, fn) {
function css_props (line 100) | function css_props(renderer, is_html, props, component, dynamic = false) {
function attributes (line 130) | function attributes(attrs, css_hash, classes, styles, flags = 0) {
function spread_props (line 181) | function spread_props(props) {
function stringify (line 205) | function stringify(value) {
function style_object_to_string (line 210) | function style_object_to_string(style_object) {
function attr_class (line 222) | function attr_class(value, hash, directives) {
function attr_style (line 231) | function attr_style(value, directives) {
function store_get (line 243) | function store_get(store_values, store_name, store) {
function store_set (line 271) | function store_set(store, value) {
function store_mutate (line 284) | function store_mutate(store_values, store_name, store, expression) {
function update_store (line 296) | function update_store(store_values, store_name, store, d = 1) {
function update_store_pre (line 309) | function update_store_pre(store_values, store_name, store, d = 1) {
function unsubscribe_stores (line 316) | function unsubscribe_stores(store_values) {
function slot (line 330) | function slot(renderer, $$props, name, slot_props, fallback_fn) {
function rest_props (line 349) | function rest_props(props, rest) {
function sanitize_props (line 365) | function sanitize_props(props) {
function sanitize_slots (line 374) | function sanitize_slots(props) {
function bind_props (line 390) | function bind_props(props_parent, props_now) {
function await_block (line 412) | function await_block(renderer, promise, pending_fn, then_fn) {
function ensure_array_like (line 428) | function ensure_array_like(array_like_or_iterator) {
function once (line 441) | function once(get_value) {
function props_id (line 456) | function props_id(renderer) {
function derived (line 488) | function derived(fn) {
function update_derived (line 512) | function update_derived(derived, d = 1) {
function update_derived_pre (line 526) | function update_derived_pre(derived, d = 1) {
function async_derived (line 539) | function async_derived(fn) {
FILE: packages/svelte/src/internal/server/render-context.js
function get_render_context (line 15) | function get_render_context() {
function with_render_context (line 30) | async function with_render_context(fn) {
function init_render_context (line 66) | function init_render_context() {
function in_webcontainer (line 82) | function in_webcontainer() {
FILE: packages/svelte/src/internal/server/renderer.js
class Renderer (line 34) | class Renderer {
method constructor (line 99) | constructor(global, parent) {
method head (line 110) | head(fn) {
method async_block (line 122) | async_block(blockers, fn) {
method async (line 132) | async(blockers, fn) {
method run (line 158) | run(thunks) {
method child_block (line 190) | child_block(fn) {
method child (line 201) | child(fn) {
method boundary (line 241) | boundary(props, children_fn) {
method component (line 317) | component(fn, component_fn) {
method select (line 334) | select(attrs, fn, css_hash, classes, styles, flags, is_rich) {
method option (line 354) | option(attrs, body, css_hash, classes, styles, flags, is_rich) {
method title (line 401) | title(fn) {
method push (line 427) | push(content) {
method on_destroy (line 438) | on_destroy(fn) {
method get_path (line 445) | get_path() {
method copy (line 452) | copy() {
method subsume (line 463) | subsume(other) {
method length (line 485) | get length() {
method #serialize_failed_boundary (line 498) | static #serialize_failed_boundary(error) {
method render (line 512) | static render(component, options = {}) {
method #collect_on_destroy (line 590) | *#collect_on_destroy() {
method #traverse_components (line 600) | *#traverse_components() {
method #collect_ondestroy (line 614) | *#collect_ondestroy() {
method #render (line 635) | static #render(component, options) {
method #render_async (line 656) | static async #render_async(component, options) {
method #collect_content (line 678) | #collect_content(content = { head: '', body: '' }) {
method #collect_content_async (line 695) | async #collect_content_async(content = { head: '', body: '' }) {
method #collect_hydratables (line 737) | async #collect_hydratables() {
method #open_render (line 761) | static #open_render(mode, component, options) {
method #close_render (line 798) | static #close_render(content, renderer) {
method #hydratable_block (line 822) | async #hydratable_block(ctx) {
class SSRState (line 873) | class SSRState {
method constructor (line 902) | constructor(mode, id_prefix = '', csp = { hash: false }, transformErro...
method get_title (line 916) | get_title() {
method set_title (line 926) | set_title(value, path) {
FILE: packages/svelte/src/internal/server/renderer.test.ts
type RenderFn (line 262) | type RenderFn = (input: string) => Promise<string> | string;
FILE: packages/svelte/src/internal/server/types.d.ts
type SSRContext (line 5) | interface SSRContext {
type Csp (line 18) | type Csp = { nonce?: string; hash?: boolean };
type HydratableLookupEntry (line 20) | interface HydratableLookupEntry {
type HydratableContext (line 28) | interface HydratableContext {
type RenderContext (line 34) | interface RenderContext {
type Sha256Source (line 38) | type Sha256Source = `sha256-${string}`;
type SyncRenderOutput (line 40) | interface SyncRenderOutput {
type RenderOutput (line 52) | type RenderOutput = SyncRenderOutput & PromiseLike<SyncRenderOutput>;
FILE: packages/svelte/src/internal/server/warnings.js
function unresolved_hydratable (line 16) | function unresolved_hydratable(key, stack) {
FILE: packages/svelte/src/internal/shared/attributes.js
function attr (line 25) | function attr(name, value, is_boolean = false) {
function clsx (line 42) | fu
Condensed preview — 8711 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,072K chars).
[
{
"path": ".changeset/README.md",
"chars": 510,
"preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
},
{
"path": ".changeset/config.json",
"chars": 345,
"preview": "{\n\t\"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n\t\"changelog\": [\"@svitejs/changesets-changelog-gi"
},
{
"path": ".changeset/const-tags.md",
"chars": 98,
"preview": "---\n'svelte': patch\n---\n\nfix: invalidate `@const` tags based on visible references in legacy mode\n"
},
{
"path": ".changeset/evil-chicken-attend.md",
"chars": 58,
"preview": "---\n'svelte': patch\n---\n\nfix: disallow `--` in `idPrefix`\n"
},
{
"path": ".changeset/orange-geckos-rest.md",
"chars": 92,
"preview": "---\n'svelte': patch\n---\n\nfix: don't override `$destroy/set/on` instance methods in dev mode\n"
},
{
"path": ".editorconfig",
"chars": 219,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = tab\ncharset = utf-8\ntrim_trailing_whitespac"
},
{
"path": ".gitattributes",
"chars": 104,
"preview": "/site/** -linguist-detectable\n/test/**/samples/** -linguist-detectable\n/**/*.svelte linguist-detectable\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 24,
"preview": "open_collective: svelte\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 1851,
"preview": "name: \"\\U0001F41E Bug report\"\ndescription: Report an issue with Svelte\nlabels: ['triage: bug']\nbody:\n - type: markdown\n"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 174,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Discord Chat\n url: https://svelte.dev/chat\n about: Ask questi"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 1284,
"preview": "name: 'Feature Request'\ndescription: Request a new Svelte feature\nlabels: [enhancement]\nbody:\n - type: markdown\n att"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 1082,
"preview": "---\nBefore filing an issue we'd appreciate it if you could take a moment to ensure\nthere isn't already an open issue or "
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 702,
"preview": "### Before submitting the PR, please make sure you do the following\n\n- [ ] It's really useful if your PR references an i"
},
{
"path": ".github/workflows/autofix.yml",
"chars": 2506,
"preview": "name: Autofix Lint\n\non:\n issue_comment:\n types: [created]\n workflow_dispatch:\n\npermissions: {}\n\njobs:\n autofix-lin"
},
{
"path": ".github/workflows/ci.yml",
"chars": 3582,
"preview": "name: CI\non:\n push:\n branches: [main]\n pull_request:\npermissions:\n contents: read # to fetch code (actions/checkou"
},
{
"path": ".github/workflows/ecosystem-ci-trigger.yml",
"chars": 5308,
"preview": "name: ecosystem-ci trigger\n\non:\n issue_comment:\n types: [created]\n\npermissions: {}\n\njobs:\n trigger:\n runs-on: ub"
},
{
"path": ".github/workflows/pkg.pr.new.yml",
"chars": 7262,
"preview": "name: pkg.pr.new\non:\n pull_request_target:\n types: [opened, synchronize]\n push:\n branches: [main]\n workflow_dis"
},
{
"path": ".github/workflows/release.yml",
"chars": 1761,
"preview": "name: Release\n\non:\n push:\n branches:\n - main\n\nconcurrency:\n # prevent two release workflows from running at on"
},
{
"path": ".gitignore",
"chars": 322,
"preview": "# Dependency directories\nnode_modules/\n\n# IDE related\n.idea\n\n# Test coverage\ncoverage\n*.lcov\n\n# Optional eslint cache\n.e"
},
{
"path": ".npmrc",
"chars": 34,
"preview": "playwright_skip_browser_download=1"
},
{
"path": ".prettierignore",
"chars": 1438,
"preview": "documentation/docs/\n\npackages/**/dist/*.js\npackages/**/build/*.js\npackages/**/npm/**/*\npackages/**/config/*.js\n\n# packag"
},
{
"path": ".prettierrc",
"chars": 373,
"preview": "{\n\t\"useTabs\": true,\n\t\"singleQuote\": true,\n\t\"trailingComma\": \"none\",\n\t\"printWidth\": 100,\n\t\"plugins\": [\"prettier-plugin-sv"
},
{
"path": ".vscode/launch.json",
"chars": 254,
"preview": "{\n\t\"version\": \"0.2.0\",\n\t\"configurations\": [\n\t\t{\n\t\t\t\"type\": \"node\",\n\t\t\t\"request\": \"launch\",\n\t\t\t\"name\": \"Run sandbox\",\n\t\t\t"
},
{
"path": ".vscode/settings.json",
"chars": 54,
"preview": "{\n\t\"typescript.tsdk\": \"node_modules/typescript/lib\"\n}\n"
},
{
"path": ".well-known/funding-manifest-urls",
"chars": 33,
"preview": "https://svelte.dev/funding.json\n\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 127,
"preview": "This repository is governed by the Svelte Code of Conduct.\n\nhttps://github.com/sveltejs/community/blob/main/CODE_OF_COND"
},
{
"path": "CONTRIBUTING.md",
"chars": 10277,
"preview": "# Contributing to Svelte\n\nSvelte is a new way to build web applications. It's a compiler that takes your declarative com"
},
{
"path": "FUNDING.json",
"chars": 98,
"preview": "{\n\t\"drips\": {\n\t\t\"ethereum\": {\n\t\t\t\"ownedBy\": \"0xCE08E02c37d90d75C2bf7D9e55f7606C8DB80E70\"\n\t\t}\n\t}\n}\n"
},
{
"path": "LICENSE.md",
"chars": 1126,
"preview": "Copyright (c) 2016-2025 [Svelte Contributors](https://github.com/sveltejs/svelte/graphs/contributors)\n\nPermission is her"
},
{
"path": "README.md",
"chars": 1730,
"preview": "<a href=\"https://svelte.dev\">\n\t<picture>\n\t\t<source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/banner_dark.png\">"
},
{
"path": "benchmarking/.gitignore",
"chars": 7,
"preview": "output\n"
},
{
"path": "benchmarking/benchmarks/reactivity/index.js",
"chars": 1240,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport {\n\tsbench_create_0to1,\n\tsbench_create_1000to1,\n\tsbench_cr"
},
{
"path": "benchmarking/benchmarks/reactivity/sbench.js",
"chars": 3689,
"preview": "/** @import { Source } from '../../../packages/svelte/src/internal/client/types.js' */\nimport { fastest_test } from '../"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_avoidable.bench.js",
"chars": 851,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\nimport { busy } from '../util.js';\n\nexpor"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_broad.bench.js",
"chars": 746,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nexport default () => {\n\tlet head = $.sta"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_deep.bench.js",
"chars": 693,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nlet len = 50;\nconst iter = 50;\n\nexport d"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_diamond.bench.js",
"chars": 812,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nlet width = 5;\n\nexport default () => {\n\t"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_mux.bench.js",
"chars": 844,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nexport default () => {\n\tlet heads = new "
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_repeated.bench.js",
"chars": 718,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nlet size = 30;\n\nexport default () => {\n\t"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_triangle.bench.js",
"chars": 1020,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nlet width = 10;\n\nfunction count(number) "
},
{
"path": "benchmarking/benchmarks/reactivity/tests/kairo_unstable.bench.js",
"chars": 789,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nexport default () => {\n\tlet head = $.sta"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/mol.bench.js",
"chars": 1496,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\n/**\n * @param {number} n\n */\nfunction fi"
},
{
"path": "benchmarking/benchmarks/reactivity/tests/repeated_deps.bench.js",
"chars": 803,
"preview": "import assert from 'node:assert';\nimport * as $ from 'svelte/internal/client';\n\nconst ARRAY_SIZE = 1000;\n\nexport default"
},
{
"path": "benchmarking/benchmarks/reactivity/util.js",
"chars": 1284,
"preview": "import * as $ from 'svelte/internal/client';\nimport { fastest_test } from '../../utils.js';\n\nexport function busy() {\n\tl"
},
{
"path": "benchmarking/benchmarks/ssr/index.js",
"chars": 108,
"preview": "import { wrapper_bench } from './wrapper/wrapper_bench.js';\n\nexport const ssr_benchmarks = [wrapper_bench];\n"
},
{
"path": "benchmarking/benchmarks/ssr/wrapper/App.svelte",
"chars": 710,
"preview": "<script>\n\tconst wrapperWidth = 960;\n\tconst wrapperHeight = 720;\n\tconst cellSize = 10;\n\tconst centerX = wrapperWidth / 2;"
},
{
"path": "benchmarking/benchmarks/ssr/wrapper/wrapper_bench.js",
"chars": 1149,
"preview": "import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { render } from 'svelte/server';\nimport { faste"
},
{
"path": "benchmarking/compare/index.js",
"chars": 2934,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport { execSync, fork } from 'node:child_process';\nimport { fi"
},
{
"path": "benchmarking/compare/runner.js",
"chars": 592,
"preview": "import { reactivity_benchmarks } from '../benchmarks/reactivity/index.js';\nimport { with_cpu_profile } from '../utils.js"
},
{
"path": "benchmarking/run.js",
"chars": 2623,
"preview": "import * as $ from '../packages/svelte/src/internal/client/index.js';\nimport { reactivity_benchmarks } from './benchmark"
},
{
"path": "benchmarking/tsconfig.json",
"chars": 403,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"moduleResolution\": \"Bundler\",\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"ESNext\",\n\t\t\"verbatimModuleSy"
},
{
"path": "benchmarking/utils.js",
"chars": 2020,
"preview": "import { performance, PerformanceObserver } from 'node:perf_hooks';\nimport fs from 'node:fs';\nimport path from 'node:pat"
},
{
"path": "documentation/docs/01-introduction/01-overview.md",
"chars": 968,
"preview": "---\ntitle: Overview\n---\n\nSvelte is a framework for building user interfaces on the web. It uses a compiler to turn decla"
},
{
"path": "documentation/docs/01-introduction/02-getting-started.md",
"chars": 1820,
"preview": "---\ntitle: Getting started\n---\n\nWe recommend using [SvelteKit](../kit), which lets you [build almost anything](../kit/pr"
},
{
"path": "documentation/docs/01-introduction/03-svelte-files.md",
"chars": 2285,
"preview": "---\ntitle: .svelte files\n---\n\nComponents are the building blocks of Svelte applications. They are written into `.svelte`"
},
{
"path": "documentation/docs/01-introduction/04-svelte-js-files.md",
"chars": 475,
"preview": "---\ntitle: .svelte.js and .svelte.ts files\n---\n\nBesides `.svelte` files, Svelte also operates on `.svelte.js` and `.svel"
},
{
"path": "documentation/docs/01-introduction/index.md",
"chars": 28,
"preview": "---\ntitle: Introduction\n---\n"
},
{
"path": "documentation/docs/02-runes/01-what-are-runes.md",
"chars": 846,
"preview": "---\ntitle: What are runes?\n---\n\n> [!NOTE] **rune** /ruːn/ _noun_\n>\n> A letter or mark used as a mystical or magic symbol"
},
{
"path": "documentation/docs/02-runes/02-$state.md",
"chars": 9893,
"preview": "---\ntitle: $state\ntags: rune-state\n---\n\nThe `$state` rune allows you to create _reactive state_, which means that your U"
},
{
"path": "documentation/docs/02-runes/03-$derived.md",
"chars": 5499,
"preview": "---\ntitle: $derived\ntags: rune-derived\n---\n\nDerived state is declared with the `$derived` rune:\n\n```svelte\n<script>\n\tlet"
},
{
"path": "documentation/docs/02-runes/04-$effect.md",
"chars": 13347,
"preview": "---\ntitle: $effect\ntags: rune-effect\n---\n\nEffects are functions that run when state updates, and can be used for things "
},
{
"path": "documentation/docs/02-runes/05-$props.md",
"chars": 6342,
"preview": "---\ntitle: $props\ntags: rune-props\n---\n\nThe inputs to a component are referred to as _props_, which is short for _proper"
},
{
"path": "documentation/docs/02-runes/06-$bindable.md",
"chars": 2067,
"preview": "---\ntitle: $bindable\n---\n\nOrdinarily, props go one way, from parent to child. This makes it easy to understand how data "
},
{
"path": "documentation/docs/02-runes/07-$inspect.md",
"chars": 2201,
"preview": "---\ntitle: $inspect\ntags: rune-inspect\n---\n\n> [!NOTE] `$inspect` only works during development. In a production build it"
},
{
"path": "documentation/docs/02-runes/08-$host.md",
"chars": 1259,
"preview": "---\ntitle: $host\n---\n\nWhen compiling a component as a [custom element](custom-elements), the `$host` rune provides acces"
},
{
"path": "documentation/docs/02-runes/index.md",
"chars": 21,
"preview": "---\ntitle: Runes\n---\n"
},
{
"path": "documentation/docs/03-template-syntax/01-basic-markup.md",
"chars": 7545,
"preview": "---\ntitle: Basic markup\n---\n\nMarkup inside a Svelte component can be thought of as HTML++.\n\n## Tags\n\nA lowercase tag, li"
},
{
"path": "documentation/docs/03-template-syntax/02-if.md",
"chars": 754,
"preview": "---\ntitle: {#if ...}\ntags: template-if\n---\n\n```svelte\n<!--- copy: false --->\n{#if expression}...{/if}\n```\n\n```svelte\n<!"
},
{
"path": "documentation/docs/03-template-syntax/03-each.md",
"chars": 3256,
"preview": "---\ntitle: {#each ...}\ntags: template-each\n---\n\n```svelte\n<!--- copy: false --->\n{#each expression as name}...{/each}\n`"
},
{
"path": "documentation/docs/03-template-syntax/04-key.md",
"chars": 488,
"preview": "---\ntitle: {#key ...}\ntags: template-key\n---\n\n```svelte\n<!--- copy: false --->\n{#key expression}...{/key}\n```\n\nKey bloc"
},
{
"path": "documentation/docs/03-template-syntax/05-await.md",
"chars": 2042,
"preview": "---\ntitle: {#await ...}\ntags: template-await\n---\n\n```svelte\n<!--- copy: false --->\n{#await expression}...{:then name}.."
},
{
"path": "documentation/docs/03-template-syntax/06-snippet.md",
"chars": 9712,
"preview": "---\ntitle: {#snippet ...}\n---\n\n```svelte\n<!--- copy: false --->\n{#snippet name()}...{/snippet}\n```\n\n```svelte\n<!--- cop"
},
{
"path": "documentation/docs/03-template-syntax/07-@render.md",
"chars": 787,
"preview": "---\ntitle: {@render ...}\n---\n\nTo render a [snippet](snippet), use a `{@render ...}` tag.\n\n```svelte\n{#snippet sum(a, b)}"
},
{
"path": "documentation/docs/03-template-syntax/08-@html.md",
"chars": 1189,
"preview": "---\ntitle: {@html ...}\ntags: template-html\n---\n\nTo inject raw HTML into your component, use the `{@html ...}` tag:\n\n```s"
},
{
"path": "documentation/docs/03-template-syntax/09-@attach.md",
"chars": 8211,
"preview": "---\ntitle: {@attach ...}\ntags: attachments\n---\n\nAttachments are functions that run in an [effect]($effect) when an eleme"
},
{
"path": "documentation/docs/03-template-syntax/10-@const.md",
"chars": 363,
"preview": "---\ntitle: {@const ...}\n---\n\nThe `{@const ...}` tag defines a local constant.\n\n```svelte\n{#each boxes as box}\n\t{@const a"
},
{
"path": "documentation/docs/03-template-syntax/11-@debug.md",
"chars": 810,
"preview": "---\ntitle: {@debug ...}\n---\n\nThe `{@debug ...}` tag offers an alternative to `console.log(...)`. It logs the values of s"
},
{
"path": "documentation/docs/03-template-syntax/12-bind.md",
"chars": 14800,
"preview": "---\ntitle: bind:\n---\n\nData ordinarily flows down, from parent to child. The `bind:` directive allows data to flow the o"
},
{
"path": "documentation/docs/03-template-syntax/13-use.md",
"chars": 2004,
"preview": "---\ntitle: use:\n---\n\n> [!NOTE]\n> In Svelte 5.29 and newer, consider using [attachments](@attach) instead, as they are mo"
},
{
"path": "documentation/docs/03-template-syntax/14-transition.md",
"chars": 5142,
"preview": "---\ntitle: transition:\ntags: transitions\n---\n\nA _transition_ is triggered by an element entering or leaving the DOM as a"
},
{
"path": "documentation/docs/03-template-syntax/15-in-and-out.md",
"chars": 692,
"preview": "---\ntitle: in: and out:\ntags: transitions\n---\n\nThe `in:` and `out:` directives are identical to [`transition:`](transiti"
},
{
"path": "documentation/docs/03-template-syntax/16-animate.md",
"chars": 3832,
"preview": "---\ntitle: animate:\n---\n\nAn animation is triggered when the contents of a [keyed each block](each#Keyed-each-blocks) are"
},
{
"path": "documentation/docs/03-template-syntax/17-style.md",
"chars": 1001,
"preview": "---\ntitle: style:\ntags: template-style\n---\n\nThe `style:` directive provides a shorthand for setting multiple styles on a"
},
{
"path": "documentation/docs/03-template-syntax/18-class.md",
"chars": 3107,
"preview": "---\ntitle: class\ntags: template-style\n---\n\nThere are two ways to set classes on elements: the `class` attribute, and the"
},
{
"path": "documentation/docs/03-template-syntax/19-await-expressions.md",
"chars": 7130,
"preview": "---\ntitle: await\n---\n\nAs of Svelte 5.36, you can use the `await` keyword inside your components in three places where it"
},
{
"path": "documentation/docs/03-template-syntax/index.md",
"chars": 31,
"preview": "---\ntitle: Template syntax\n---\n"
},
{
"path": "documentation/docs/04-styling/01-scoped-styles.md",
"chars": 1506,
"preview": "---\ntitle: Scoped styles\ntags: styles-scoped\n---\n\nSvelte components can include a `<style>` element containing CSS that "
},
{
"path": "documentation/docs/04-styling/02-global-styles.md",
"chars": 1583,
"preview": "---\ntitle: Global styles\ntags: styles-global\n---\n\n## :global(...)\n\nTo apply styles to a single selector globally, use th"
},
{
"path": "documentation/docs/04-styling/03-custom-properties.md",
"chars": 1494,
"preview": "---\ntitle: Custom properties\ntags: styles-custom-properties\n---\n\nYou can pass CSS custom properties — both static and dy"
},
{
"path": "documentation/docs/04-styling/04-nested-style-elements.md",
"chars": 506,
"preview": "---\ntitle: Nested <style> elements\n---\n\nThere can only be one top-level `<style>` tag per component.\n\nHowever, it is pos"
},
{
"path": "documentation/docs/04-styling/index.md",
"chars": 23,
"preview": "---\ntitle: Styling\n---\n"
},
{
"path": "documentation/docs/05-special-elements/01-svelte-boundary.md",
"chars": 5911,
"preview": "---\ntitle: <svelte:boundary>\n---\n\n```svelte\n<svelte:boundary onerror={handler}>...</svelte:boundary>\n```\n\n> [!NOTE]\n> Th"
},
{
"path": "documentation/docs/05-special-elements/02-svelte-window.md",
"chars": 1239,
"preview": "---\ntitle: <svelte:window>\n---\n\n```svelte\n<svelte:window onevent={handler} />\n```\n\n```svelte\n<svelte:window bind:prop={v"
},
{
"path": "documentation/docs/05-special-elements/03-svelte-document.md",
"chars": 744,
"preview": "---\ntitle: <svelte:document>\n---\n\n```svelte\n<svelte:document onevent={handler} />\n```\n\n```svelte\n<svelte:document bind:p"
},
{
"path": "documentation/docs/05-special-elements/04-svelte-body.md",
"chars": 583,
"preview": "---\ntitle: <svelte:body>\n---\n\n```svelte\n<svelte:body onevent={handler} />\n```\n\nSimilarly to `<svelte:window>`, this elem"
},
{
"path": "documentation/docs/05-special-elements/05-svelte-head.md",
"chars": 576,
"preview": "---\ntitle: <svelte:head>\n---\n\n```svelte\n<svelte:head>...</svelte:head>\n```\n\nThis element makes it possible to insert ele"
},
{
"path": "documentation/docs/05-special-elements/06-svelte-element.md",
"chars": 1199,
"preview": "---\ntitle: <svelte:element>\n---\n\n```svelte\n<svelte:element this={expression} />\n```\n\nThe `<svelte:element>` element lets"
},
{
"path": "documentation/docs/05-special-elements/07-svelte-options.md",
"chars": 1539,
"preview": "---\ntitle: <svelte:options>\n---\n\n```svelte\n<svelte:options option={value} />\n```\n\nThe `<svelte:options>` element provide"
},
{
"path": "documentation/docs/05-special-elements/index.md",
"chars": 32,
"preview": "---\ntitle: Special elements\n---\n"
},
{
"path": "documentation/docs/06-runtime/01-stores.md",
"chars": 10233,
"preview": "---\ntitle: Stores\n---\n\n<!-- - how to use\n- how to write\n- TODO should the details for the store methods belong to the re"
},
{
"path": "documentation/docs/06-runtime/02-context.md",
"chars": 5401,
"preview": "---\ntitle: Context\n---\n\nContext allows components to access values owned by parent components without passing them down "
},
{
"path": "documentation/docs/06-runtime/03-lifecycle-hooks.md",
"chars": 7814,
"preview": "---\ntitle: Lifecycle hooks\n---\n\n<!-- - onMount/onDestroy\n- mention that `$effect` might be better for your use case\n- be"
},
{
"path": "documentation/docs/06-runtime/04-imperative-component-api.md",
"chars": 2679,
"preview": "---\ntitle: Imperative component API\n---\n\n<!-- better title needed?\n\n- mount\n- unmount\n- render\n- hydrate\n- how they inte"
},
{
"path": "documentation/docs/06-runtime/05-hydratable.md",
"chars": 4570,
"preview": "---\ntitle: Hydratable data\n---\n\nIn Svelte, when you want to render asynchronous content data on the server, you can simp"
},
{
"path": "documentation/docs/06-runtime/index.md",
"chars": 23,
"preview": "---\ntitle: Runtime\n---\n"
},
{
"path": "documentation/docs/07-misc/01-best-practices.md",
"chars": 7410,
"preview": "---\ntitle: Best practices\nskill: true\nname: svelte-core-bestpractices\ndescription: Guidance on writing fast, robust, mod"
},
{
"path": "documentation/docs/07-misc/02-testing.md",
"chars": 10830,
"preview": "---\ntitle: Testing\n---\n\nTesting helps you write and maintain your code and guard against regressions. Testing frameworks"
},
{
"path": "documentation/docs/07-misc/03-typescript.md",
"chars": 9154,
"preview": "---\ntitle: TypeScript\n---\n\n<!-- - [basically what we have today](https://svelte.dev/docs/typescript)\n- built-in support,"
},
{
"path": "documentation/docs/07-misc/04-custom-elements.md",
"chars": 8708,
"preview": "---\ntitle: Custom elements\n---\n\n<!-- - [basically what we have today](https://svelte.dev/docs/custom-elements-api) -->\n\n"
},
{
"path": "documentation/docs/07-misc/06-v4-migration-guide.md",
"chars": 12191,
"preview": "---\ntitle: Svelte 4 migration guide\n---\n\nThis migration guide provides an overview of how to migrate from Svelte version"
},
{
"path": "documentation/docs/07-misc/07-v5-migration-guide.md",
"chars": 43594,
"preview": "---\ntitle: Svelte 5 migration guide\n---\n\nVersion 5 comes with an overhauled syntax and reactivity system. While it may l"
},
{
"path": "documentation/docs/07-misc/99-faq.md",
"chars": 9576,
"preview": "---\ntitle: Frequently asked questions\n---\n\n## I'm new to Svelte. Where should I start?\n\nWe think the best way to get sta"
},
{
"path": "documentation/docs/07-misc/index.md",
"chars": 20,
"preview": "---\ntitle: Misc\n---\n"
},
{
"path": "documentation/docs/98-reference/.generated/client-errors.md",
"chars": 9315,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### async_derived_orphan\n\n```\nCannot"
},
{
"path": "documentation/docs/98-reference/.generated/client-warnings.md",
"chars": 13159,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### assignment_value_stale\n\n```\nAssi"
},
{
"path": "documentation/docs/98-reference/.generated/compile-errors.md",
"chars": 24267,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### animation_duplicate\n\n```\nAn elem"
},
{
"path": "documentation/docs/98-reference/.generated/compile-warnings.md",
"chars": 29797,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### a11y_accesskey\n\n```\nAvoid using "
},
{
"path": "documentation/docs/98-reference/.generated/server-errors.md",
"chars": 2717,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### async_local_storage_unavailable\n"
},
{
"path": "documentation/docs/98-reference/.generated/server-warnings.md",
"chars": 967,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### unresolved_hydratable\n\n```\nA `hy"
},
{
"path": "documentation/docs/98-reference/.generated/shared-errors.md",
"chars": 3226,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### experimental_async_required\n\n```"
},
{
"path": "documentation/docs/98-reference/.generated/shared-warnings.md",
"chars": 971,
"preview": "<!-- This file is generated by scripts/process-messages/index.js. Do not edit! -->\n\n### dynamic_void_element_content\n\n``"
},
{
"path": "documentation/docs/98-reference/20-svelte.md",
"chars": 40,
"preview": "---\ntitle: svelte\n---\n\n> MODULE: svelte\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-action.md",
"chars": 156,
"preview": "---\ntitle: svelte/action\n---\n\nThis module provides types for [actions](use), which have been superseded by [attachments]"
},
{
"path": "documentation/docs/98-reference/21-svelte-animate.md",
"chars": 56,
"preview": "---\ntitle: svelte/animate\n---\n\n> MODULE: svelte/animate\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-attachments.md",
"chars": 82,
"preview": "---\ntitle: svelte/attachments\ntags: attachments\n---\n\n> MODULE: svelte/attachments\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-compiler.md",
"chars": 58,
"preview": "---\ntitle: svelte/compiler\n---\n\n> MODULE: svelte/compiler\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-easing.md",
"chars": 54,
"preview": "---\ntitle: svelte/easing\n---\n\n> MODULE: svelte/easing\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-events.md",
"chars": 54,
"preview": "---\ntitle: svelte/events\n---\n\n> MODULE: svelte/events\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-legacy.md",
"chars": 273,
"preview": "---\ntitle: svelte/legacy\n---\n\nThis module provides various functions for use during the migration, since some features c"
},
{
"path": "documentation/docs/98-reference/21-svelte-motion.md",
"chars": 54,
"preview": "---\ntitle: svelte/motion\n---\n\n> MODULE: svelte/motion\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-reactivity-window.md",
"chars": 551,
"preview": "---\ntitle: svelte/reactivity/window\n---\n\nThis module exports reactive versions of various `window` values, each of which"
},
{
"path": "documentation/docs/98-reference/21-svelte-reactivity.md",
"chars": 502,
"preview": "---\ntitle: svelte/reactivity\n---\n\nSvelte provides reactive versions of various built-ins like [`Map`](https://developer."
},
{
"path": "documentation/docs/98-reference/21-svelte-server.md",
"chars": 54,
"preview": "---\ntitle: svelte/server\n---\n\n> MODULE: svelte/server\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-store.md",
"chars": 52,
"preview": "---\ntitle: svelte/store\n---\n\n> MODULE: svelte/store\n"
},
{
"path": "documentation/docs/98-reference/21-svelte-transition.md",
"chars": 80,
"preview": "---\ntitle: svelte/transition\ntags: transitions\n---\n\n> MODULE: svelte/transition\n"
},
{
"path": "documentation/docs/98-reference/30-compiler-errors.md",
"chars": 72,
"preview": "---\ntitle: 'Compiler errors'\n---\n\n@include .generated/compile-errors.md\n"
},
{
"path": "documentation/docs/98-reference/30-compiler-warnings.md",
"chars": 738,
"preview": "---\ntitle: 'Compiler warnings'\n---\n\nSvelte warns you at compile time if it catches potential mistakes, such as writing i"
},
{
"path": "documentation/docs/98-reference/30-runtime-errors.md",
"chars": 200,
"preview": "---\ntitle: 'Runtime errors'\n---\n\n## Client errors\n\n@include .generated/client-errors.md\n\n## Server errors\n\n@include .gen"
},
{
"path": "documentation/docs/98-reference/30-runtime-warnings.md",
"chars": 154,
"preview": "---\ntitle: 'Runtime warnings'\n---\n\n## Client warnings\n\n@include .generated/client-warnings.md\n\n## Shared warnings\n\n@incl"
},
{
"path": "documentation/docs/98-reference/index.md",
"chars": 25,
"preview": "---\ntitle: Reference\n---\n"
},
{
"path": "documentation/docs/99-legacy/00-legacy-overview.md",
"chars": 975,
"preview": "---\ntitle: Overview\n---\n\nSvelte 5 introduced some significant changes to Svelte's API, including [runes](what-are-runes)"
},
{
"path": "documentation/docs/99-legacy/01-legacy-let.md",
"chars": 963,
"preview": "---\ntitle: Reactive let/var declarations\n---\n\nIn runes mode, reactive state is explicitly declared with the [`$state` ru"
},
{
"path": "documentation/docs/99-legacy/02-legacy-reactive-assignments.md",
"chars": 2497,
"preview": "---\ntitle: Reactive $: statements\n---\n\nIn runes mode, reactions to state updates are handled with the [`$derived`]($deri"
},
{
"path": "documentation/docs/99-legacy/03-legacy-export-let.md",
"chars": 1812,
"preview": "---\ntitle: export let\n---\n\nIn runes mode, [component props](basic-markup#Component-props) are declared with the [`$props"
},
{
"path": "documentation/docs/99-legacy/04-legacy-$$props-and-$$restProps.md",
"chars": 928,
"preview": "---\ntitle: $$props and $$restProps\n---\n\nIn runes mode, getting an object containing all the props that were passed in is"
},
{
"path": "documentation/docs/99-legacy/10-legacy-on.md",
"chars": 3655,
"preview": "---\ntitle: on:\n---\n\nIn runes mode, event handlers are just like any other attribute or prop.\n\nIn legacy mode, we use the"
},
{
"path": "documentation/docs/99-legacy/20-legacy-slots.md",
"chars": 2776,
"preview": "---\ntitle: <slot>\n---\n\nIn Svelte 5, content can be passed to components in the form of [snippets](snippet) and rendered "
},
{
"path": "documentation/docs/99-legacy/21-legacy-$$slots.md",
"chars": 744,
"preview": "---\ntitle: $$slots\n---\n\nIn runes mode, we know which [snippets](snippet) were provided to a component, as they're just n"
},
{
"path": "documentation/docs/99-legacy/22-legacy-svelte-fragment.md",
"chars": 784,
"preview": "---\ntitle: <svelte:fragment>\n---\n\nThe `<svelte:fragment>` element allows you to place content in a [named slot](legacy-s"
},
{
"path": "documentation/docs/99-legacy/30-legacy-svelte-component.md",
"chars": 509,
"preview": "---\ntitle: <svelte:component>\n---\n\nIn runes mode, `<MyComponent>` will re-render if the value of `MyComponent` changes. "
},
{
"path": "documentation/docs/99-legacy/31-legacy-svelte-self.md",
"chars": 755,
"preview": "---\ntitle: <svelte:self>\n---\n\nThe `<svelte:self>` element allows a component to include itself, recursively.\n\nIt cannot "
},
{
"path": "documentation/docs/99-legacy/40-legacy-component-api.md",
"chars": 6467,
"preview": "---\ntitle: Imperative component API\n---\n\nIn Svelte 3 and 4, the API for interacting with a component is different than i"
},
{
"path": "documentation/docs/99-legacy/index.md",
"chars": 27,
"preview": "---\ntitle: Legacy APIs\n---\n"
},
{
"path": "documentation/docs/index.md",
"chars": 22,
"preview": "---\ntitle: Svelte\n---\n"
},
{
"path": "eslint.config.js",
"chars": 3638,
"preview": "import svelte_config from '@sveltejs/eslint-config';\nimport lube from 'eslint-plugin-lube';\n\nconst no_compiler_imports ="
},
{
"path": "package.json",
"chars": 1687,
"preview": "{\n \"name\": \"svelte-monorepo\",\n \"version\": \"0.0.1\",\n \"description\": \"monorepo for svelte and friends\",\n \"private\": tr"
},
{
"path": "packages/svelte/.gitignore",
"chars": 192,
"preview": "/types/*.map\n/types/compiler\n/compiler/index.js\n\n/action.d.ts\n/animate.d.ts\n/compiler.d.ts\n/easing.d.ts\n/index.d.ts\n/leg"
},
{
"path": "packages/svelte/CHANGELOG-pre-5.md",
"chars": 182618,
"preview": "# svelte\n\n## 4.2.3\n\n### Patch Changes\n\n- fix: improve a11y-click-events-have-key-events message ([#9358](https://github."
},
{
"path": "packages/svelte/CHANGELOG.md",
"chars": 238389,
"preview": "# svelte\n\n## 5.55.1\n\n### Patch Changes\n\n- fix: correctly handle bindings on the server ([#18009](https://github.com/svel"
},
{
"path": "packages/svelte/README.md",
"chars": 1799,
"preview": "<a href=\"https://svelte.dev\">\n\t<picture>\n\t\t<source media=\"(prefers-color-scheme: dark)\" srcset=\"../../assets/banner_dark"
},
{
"path": "packages/svelte/compiler/package.json",
"chars": 25,
"preview": "{\n \"type\": \"commonjs\"\n}\n"
},
{
"path": "packages/svelte/elements.d.ts",
"chars": 87353,
"preview": "// Type definitions for Svelte HTML, based on JSX React 18 typings\n// Original Project/Authors:\n// Type definitions for "
},
{
"path": "packages/svelte/knip.json",
"chars": 317,
"preview": "{\n\t\"$schema\": \"https://unpkg.com/knip@5/schema.json\",\n\t\"entry\": [\n\t\t\"tests/**/*.js\",\n\t\t\"tests/**/*.ts\",\n\t\t\"!tests/**/*.s"
},
{
"path": "packages/svelte/messages/client-errors/errors.md",
"chars": 9015,
"preview": "## async_derived_orphan\n\n> Cannot create a `$derived(...)` with an `await` expression outside of an effect tree\n\nIn Svel"
},
{
"path": "packages/svelte/messages/client-warnings/warnings.md",
"chars": 12917,
"preview": "## assignment_value_stale\n\n> Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not "
},
{
"path": "packages/svelte/messages/compile-errors/options.md",
"chars": 188,
"preview": "## options_invalid_value\n\n> Invalid compiler option: %details%\n\n## options_removed\n\n> Invalid compiler option: %details%"
},
{
"path": "packages/svelte/messages/compile-errors/script.md",
"chars": 7579,
"preview": "## bindable_invalid_location\n\n> `$bindable()` can only be used inside a `$props()` declaration\n\n## constant_assignment\n\n"
},
{
"path": "packages/svelte/messages/compile-errors/style.md",
"chars": 1911,
"preview": "## css_empty_declaration\n\n> Declaration cannot be empty\n\n## css_expected_identifier\n\n> Expected a valid CSS identifier\n\n"
},
{
"path": "packages/svelte/messages/compile-errors/template.md",
"chars": 13250,
"preview": "## animation_duplicate\n\n> An element can only have one 'animate' directive\n\n## animation_invalid_placement\n\n> An element"
},
{
"path": "packages/svelte/messages/compile-warnings/a11y.md",
"chars": 16941,
"preview": "## a11y_accesskey\n\n> Avoid using accesskey\n\nEnforce no `accesskey` on element. Access keys are HTML attributes that allo"
},
{
"path": "packages/svelte/messages/compile-warnings/misc.md",
"chars": 830,
"preview": "## bidirectional_control_characters\n\n> A bidirectional control character was detected in your code. These characters can"
},
{
"path": "packages/svelte/messages/compile-warnings/options.md",
"chars": 904,
"preview": "## options_deprecated_accessors\n\n> The `accessors` option has been deprecated. It will have no effect in runes mode\n\n## "
},
{
"path": "packages/svelte/messages/compile-warnings/script.md",
"chars": 3726,
"preview": "## custom_element_props_identifier\n\n> Using a rest element or a non-destructured declaration with `$props()` means that "
},
{
"path": "packages/svelte/messages/compile-warnings/style.md",
"chars": 605,
"preview": "## css_unused_selector\n\n> Unused CSS selector \"%name%\"\n\nSvelte traverses both the template and the `<style>` tag to find"
},
{
"path": "packages/svelte/messages/compile-warnings/template.md",
"chars": 6117,
"preview": "## attribute_avoid_is\n\n> The \"is\" attribute is not supported cross-browser and should be avoided\n\n## attribute_global_ev"
},
{
"path": "packages/svelte/messages/server-errors/errors.md",
"chars": 2574,
"preview": "## async_local_storage_unavailable\n\n> The node API `AsyncLocalStorage` is not available, but is required to use async se"
},
{
"path": "packages/svelte/messages/server-warnings/warnings.md",
"chars": 881,
"preview": "## unresolved_hydratable\n\n> A `hydratable` value with key `%key%` was created, but at least part of it was not used duri"
},
{
"path": "packages/svelte/messages/shared-errors/errors.md",
"chars": 3079,
"preview": "## experimental_async_required\n\n> Cannot use `%name%(...)` unless the `experimental.async` compiler option is `true`\n\n##"
},
{
"path": "packages/svelte/messages/shared-warnings/warnings.md",
"chars": 870,
"preview": "## dynamic_void_element_content\n\n> `<svelte:element this=\"%tag%\">` is a void element — it cannot have content\n\nElements "
},
{
"path": "packages/svelte/package.json",
"chars": 5512,
"preview": "{\n \"name\": \"svelte\",\n \"description\": \"Cybernetically enhanced web apps\",\n \"license\": \"MIT\",\n \"version\": \"5.55.1\",\n "
},
{
"path": "packages/svelte/rollup.config.js",
"chars": 474,
"preview": "import commonjs from '@rollup/plugin-commonjs';\nimport resolve from '@rollup/plugin-node-resolve';\nimport terser from '@"
},
{
"path": "packages/svelte/scripts/check-treeshakeability.js",
"chars": 4070,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { rollup } from 'roll"
},
{
"path": "packages/svelte/scripts/generate-types.js",
"chars": 3710,
"preview": "import fs from 'node:fs';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport { createB"
},
{
"path": "packages/svelte/scripts/generate-version.js",
"chars": 361,
"preview": "import fs from 'node:fs';\n\nconst pkg = JSON.parse(fs.readFileSync('package.json', 'utf-8'));\n\nfs.writeFileSync(\n\t'./src/"
},
{
"path": "packages/svelte/scripts/process-messages/index.js",
"chars": 10471,
"preview": "/** @import { Node } from 'esrap/languages/ts' */\n/** @import * as ESTree from 'estree' */\n/** @import { AST } from 'sve"
},
{
"path": "packages/svelte/scripts/process-messages/templates/client-errors.js",
"chars": 382,
"preview": "import { DEV } from 'esm-env';\n\nexport * from '../shared/errors.js';\n\n/**\n * MESSAGE\n * @param {string} PARAMETER\n * @re"
},
{
"path": "packages/svelte/scripts/process-messages/templates/client-warnings.js",
"chars": 373,
"preview": "import { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * MESSAGE\n * @"
},
{
"path": "packages/svelte/scripts/process-messages/templates/compile-errors.js",
"chars": 1629,
"preview": "import { CompileDiagnostic } from './utils/compile_diagnostic.js';\n\n/** @typedef {{ start?: number, end?: number }} Node"
},
{
"path": "packages/svelte/scripts/process-messages/templates/compile-warnings.js",
"chars": 1192,
"preview": "import { warnings, ignore_stack, ignore_map, warning_filter } from './state.js';\nimport { CompileDiagnostic } from './ut"
},
{
"path": "packages/svelte/scripts/process-messages/templates/server-errors.js",
"chars": 269,
"preview": "export * from '../shared/errors.js';\n\n/**\n * MESSAGE\n * @param {string} PARAMETER\n * @returns {never}\n */\nexport functio"
},
{
"path": "packages/svelte/scripts/process-messages/templates/server-warnings.js",
"chars": 373,
"preview": "import { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * MESSAGE\n * @"
},
{
"path": "packages/svelte/scripts/process-messages/templates/shared-errors.js",
"chars": 344,
"preview": "import { DEV } from 'esm-env';\n\n/**\n * MESSAGE\n * @param {string} PARAMETER\n * @returns {never}\n */\nexport function CODE"
},
{
"path": "packages/svelte/scripts/process-messages/templates/shared-warnings.js",
"chars": 373,
"preview": "import { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * MESSAGE\n * @"
},
{
"path": "packages/svelte/src/action/public.d.ts",
"chars": 2607,
"preview": "/**\n * Actions can return an object containing the two properties defined in this interface. Both are optional.\n * - upd"
},
{
"path": "packages/svelte/src/ambient.d.ts",
"chars": 14607,
"preview": "declare module '*.svelte' {\n\t// use prettier-ignore for a while because of https://github.com/sveltejs/language-tools/co"
},
{
"path": "packages/svelte/src/animate/index.js",
"chars": 2381,
"preview": "/** @import { FlipParams, AnimationConfig } from './public.js' */\nimport { cubicOut } from '../easing/index.js';\n\n/**\n *"
},
{
"path": "packages/svelte/src/animate/public.d.ts",
"chars": 398,
"preview": "// todo: same as Transition, should it be shared?\nexport interface AnimationConfig {\n\tdelay?: number;\n\tduration?: number"
},
{
"path": "packages/svelte/src/attachments/index.js",
"chars": 3870,
"preview": "/** @import { Action, ActionReturn } from '../action/public' */\n/** @import { Attachment } from './public' */\nimport { n"
},
{
"path": "packages/svelte/src/attachments/public.d.ts",
"chars": 575,
"preview": "/**\n * An [attachment](https://svelte.dev/docs/svelte/@attach) is a function that runs when an element is mounted\n * to "
},
{
"path": "packages/svelte/src/compiler/errors.js",
"chars": 67351,
"preview": "/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { CompileDiagnostic } from './ut"
}
]
// ... and 8511 more files (download for full content)
About this extraction
This page contains the full source code of the sveltejs/svelte GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 8711 files (6.1 MB), approximately 2.2M tokens, and a symbol index with 5266 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.