Showing preview only (3,864K chars total). Download the full file or copy to clipboard to get everything.
Repository: sveltejs/kit
Branch: main
Commit: b31efce05cbc
Files: 2540
Total size: 3.1 MB
Directory structure:
gitextract_6rnhbcf0/
├── .changeset/
│ ├── busy-goats-brush.md
│ ├── config.json
│ ├── eight-sheep-unite.md
│ ├── great-actors-stop.md
│ ├── many-flowers-press.md
│ ├── orange-queens-rush.md
│ └── silver-baths-camp.md
├── .editorconfig
├── .eslint/
│ └── no-runtime-to-exports-imports.js
├── .gitattributes
├── .githooks/
│ └── pre-push
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── feature_request.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── actions/
│ │ ├── platform-test/
│ │ │ └── action.yml
│ │ └── vercel-deploy/
│ │ └── action.yml
│ └── workflows/
│ ├── audit.yml
│ ├── autofix-lint.yml
│ ├── ci.yml
│ ├── platform-tests-all.yml
│ ├── platform-tests-vercel.yml
│ └── release.yml
├── .gitignore
├── .npmrc
├── .prettierrc
├── .well-known/
│ └── funding-manifest-urls
├── AGENTS.md
├── CONTRIBUTING.md
├── FUNDING.json
├── LICENSE
├── README.md
├── documentation/
│ └── docs/
│ ├── 10-getting-started/
│ │ ├── 10-introduction.md
│ │ ├── 20-creating-a-project.md
│ │ ├── 25-project-types.md
│ │ ├── 30-project-structure.md
│ │ ├── 40-web-standards.md
│ │ └── index.md
│ ├── 20-core-concepts/
│ │ ├── 10-routing.md
│ │ ├── 20-load.md
│ │ ├── 30-form-actions.md
│ │ ├── 40-page-options.md
│ │ ├── 50-state-management.md
│ │ ├── 60-remote-functions.md
│ │ └── index.md
│ ├── 25-build-and-deploy/
│ │ ├── 10-building-your-app.md
│ │ ├── 20-adapters.md
│ │ ├── 30-adapter-auto.md
│ │ ├── 40-adapter-node.md
│ │ ├── 50-adapter-static.md
│ │ ├── 55-single-page-apps.md
│ │ ├── 60-adapter-cloudflare.md
│ │ ├── 70-adapter-cloudflare-workers.md
│ │ ├── 80-adapter-netlify.md
│ │ ├── 90-adapter-vercel.md
│ │ ├── 99-writing-adapters.md
│ │ └── index.md
│ ├── 30-advanced/
│ │ ├── 10-advanced-routing.md
│ │ ├── 20-hooks.md
│ │ ├── 25-errors.md
│ │ ├── 30-link-options.md
│ │ ├── 40-service-workers.md
│ │ ├── 50-server-only-modules.md
│ │ ├── 65-snapshots.md
│ │ ├── 67-shallow-routing.md
│ │ ├── 68-observability.md
│ │ ├── 70-packaging.md
│ │ └── index.md
│ ├── 40-best-practices/
│ │ ├── 03-auth.md
│ │ ├── 05-performance.md
│ │ ├── 06-icons.md
│ │ ├── 07-images.md
│ │ ├── 10-accessibility.md
│ │ ├── 20-seo.md
│ │ └── index.md
│ ├── 60-appendix/
│ │ ├── 10-faq.md
│ │ ├── 20-integrations.md
│ │ ├── 25-debugging.md
│ │ ├── 30-migrating-to-sveltekit-2.md
│ │ ├── 40-migrating.md
│ │ ├── 50-additional-resources.md
│ │ ├── 60-glossary.md
│ │ └── index.md
│ ├── 98-reference/
│ │ ├── 10-@sveltejs-kit.md
│ │ ├── 15-@sveltejs-kit-hooks.md
│ │ ├── 15-@sveltejs-kit-node-polyfills.md
│ │ ├── 15-@sveltejs-kit-node.md
│ │ ├── 15-@sveltejs-kit-vite.md
│ │ ├── 20-$app-environment.md
│ │ ├── 20-$app-forms.md
│ │ ├── 20-$app-navigation.md
│ │ ├── 20-$app-paths.md
│ │ ├── 20-$app-server.md
│ │ ├── 20-$app-state.md
│ │ ├── 20-$app-stores.md
│ │ ├── 20-$app-types.md
│ │ ├── 25-$env-dynamic-private.md
│ │ ├── 25-$env-dynamic-public.md
│ │ ├── 25-$env-static-private.md
│ │ ├── 25-$env-static-public.md
│ │ ├── 26-$lib.md
│ │ ├── 27-$service-worker.md
│ │ ├── 50-configuration.md
│ │ ├── 52-cli.md
│ │ ├── 54-types.md
│ │ └── index.md
│ └── index.md
├── eslint.config.js
├── package.json
├── packages/
│ ├── adapter-auto/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── adapters.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── test/
│ │ │ └── adapters.spec.js
│ │ └── tsconfig.json
│ ├── adapter-cloudflare/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── ambient.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── internal.d.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── worker.js
│ │ ├── test/
│ │ │ ├── apps/
│ │ │ │ ├── pages/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── server-side-dep/
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ └── workers/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── config/
│ │ │ │ │ └── wrangler.jsonc
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── server-side-dep/
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.d.ts
│ │ │ │ │ ├── app.html
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +page.server.js
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ ├── ctx/
│ │ │ │ │ │ └── +server.js
│ │ │ │ │ └── read/
│ │ │ │ │ ├── +server.js
│ │ │ │ │ └── file.txt
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.js
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── vite.config.js
│ │ │ └── utils.js
│ │ ├── tsconfig.json
│ │ ├── utils.js
│ │ └── utils.spec.js
│ ├── adapter-netlify/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── ambient.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── internal.d.ts
│ │ ├── package.json
│ │ ├── rollup.config.js
│ │ ├── src/
│ │ │ ├── edge.js
│ │ │ ├── serverless.js
│ │ │ └── shims.js
│ │ ├── test/
│ │ │ ├── apps/
│ │ │ │ ├── basic/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── netlify.toml
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── instrumentation.server.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ └── read/
│ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ └── file.txt
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.ts
│ │ │ │ ├── edge/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── netlify.toml
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ └── read/
│ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ └── file.txt
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.ts
│ │ │ │ └── split/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── netlify.toml
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.html
│ │ │ │ │ ├── instrumentation.server.js
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +error.svelte
│ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ └── [id]/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ └── remote/
│ │ │ │ │ └── query/
│ │ │ │ │ ├── +page.js
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ └── example.remote.js
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.js
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── vite.config.ts
│ │ │ ├── preview.js
│ │ │ └── utils.js
│ │ └── tsconfig.json
│ ├── adapter-node/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ambient.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── internal.d.ts
│ │ ├── package.json
│ │ ├── rollup.config.js
│ │ ├── src/
│ │ │ ├── env.js
│ │ │ ├── handler.js
│ │ │ ├── index.js
│ │ │ └── shims.js
│ │ ├── tests/
│ │ │ ├── env.spec.ts
│ │ │ ├── smoke.spec_disabled.js
│ │ │ └── utils.spec.ts
│ │ ├── tsconfig.json
│ │ └── utils.js
│ ├── adapter-static/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── internal.d.ts
│ │ ├── package.json
│ │ ├── platforms.js
│ │ ├── test/
│ │ │ ├── apps/
│ │ │ │ ├── prerendered/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── global.d.ts
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ ├── explicit.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ └── implicit.json/
│ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ ├── public-env/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── server-emitted-asset/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── vite.config.js
│ │ │ │ └── spa/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .npmrc
│ │ │ │ ├── jsconfig.json
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.html
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +error.svelte
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ ├── about/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ └── fallback/
│ │ │ │ │ └── [...rest]/
│ │ │ │ │ └── +page.svelte
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.js
│ │ │ │ └── vite.config.js
│ │ │ └── utils.js
│ │ └── tsconfig.json
│ ├── adapter-vercel/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── ambient.d.ts
│ │ ├── files/
│ │ │ ├── edge.js
│ │ │ └── serverless.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── internal.d.ts
│ │ ├── package.json
│ │ ├── test/
│ │ │ ├── apps/
│ │ │ │ └── basic/
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.d.ts
│ │ │ │ │ ├── app.html
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── json/
│ │ │ │ │ │ └── +server.ts
│ │ │ │ │ ├── deep/
│ │ │ │ │ │ └── nested/
│ │ │ │ │ │ └── route/
│ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── isr/
│ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── prerendered/
│ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── read/
│ │ │ │ │ │ ├── +server.ts
│ │ │ │ │ │ └── file.txt
│ │ │ │ │ └── server-data/
│ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ └── +page.svelte
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.ts
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── vite.config.ts
│ │ │ ├── utils.js
│ │ │ └── utils.spec.js
│ │ ├── tsconfig.json
│ │ └── utils.js
│ ├── amp/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── enhanced-img/
│ │ ├── .prettierignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.js
│ │ │ └── vite-plugin.js
│ │ ├── test/
│ │ │ ├── Input.svelte
│ │ │ ├── Output.svelte
│ │ │ ├── apps/
│ │ │ │ └── basics/
│ │ │ │ ├── .npmrc
│ │ │ │ ├── jsconfig.json
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.html
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +error.svelte
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ └── +page.svelte
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.js
│ │ │ │ └── vite.config.js
│ │ │ ├── markup-plugin.spec.js
│ │ │ └── utils.js
│ │ ├── tsconfig.json
│ │ └── types/
│ │ ├── ambient.d.ts
│ │ ├── index.d.ts
│ │ └── internal.d.ts
│ ├── kit/
│ │ ├── .gitignore
│ │ ├── .prettierignore
│ │ ├── CHANGELOG-pre-1.md
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── kit.vitest.config.js
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ ├── cp.js
│ │ │ ├── generate-dts.js
│ │ │ └── generate-version.js
│ │ ├── src/
│ │ │ ├── cli.js
│ │ │ ├── constants.js
│ │ │ ├── core/
│ │ │ │ ├── adapt/
│ │ │ │ │ ├── builder.js
│ │ │ │ │ ├── builder.spec.js
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── basic/
│ │ │ │ │ │ │ └── static/
│ │ │ │ │ │ │ └── answer.md
│ │ │ │ │ │ ├── compress/
│ │ │ │ │ │ │ └── foo.css
│ │ │ │ │ │ └── instrument/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── server/
│ │ │ │ │ │ └── instrumentation.server.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── config/
│ │ │ │ │ ├── default-error.html
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── custom-src/
│ │ │ │ │ │ │ └── svelte.config.js
│ │ │ │ │ │ ├── default/
│ │ │ │ │ │ │ └── svelte.config.js
│ │ │ │ │ │ ├── export-string/
│ │ │ │ │ │ │ └── svelte.config.js
│ │ │ │ │ │ ├── multiple/
│ │ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ │ └── svelte.config.ts
│ │ │ │ │ │ └── typescript/
│ │ │ │ │ │ └── svelte.config.ts
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index.spec.js
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── types.d.ts
│ │ │ │ ├── env.js
│ │ │ │ ├── generate_manifest/
│ │ │ │ │ ├── find_server_assets.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── postbuild/
│ │ │ │ │ ├── analyse.js
│ │ │ │ │ ├── crawl.js
│ │ │ │ │ ├── crawl.spec.js
│ │ │ │ │ ├── entities.js
│ │ │ │ │ ├── entities.spec.js
│ │ │ │ │ ├── fallback.js
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── basic-href/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── basic-src/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── basic-srcset/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── encoded-ids/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── href-with-character-reference/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── ids/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── include-rel-external/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ ├── meta/
│ │ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ │ └── output.json
│ │ │ │ │ │ └── unquoted-attributes/
│ │ │ │ │ │ ├── input.html
│ │ │ │ │ │ └── output.json
│ │ │ │ │ ├── prerender.js
│ │ │ │ │ ├── queue.js
│ │ │ │ │ └── queue.spec.js
│ │ │ │ ├── sync/
│ │ │ │ │ ├── create_manifest_data/
│ │ │ │ │ │ ├── conflict.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── index.spec.js
│ │ │ │ │ │ ├── sort.js
│ │ │ │ │ │ ├── test/
│ │ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ │ ├── bar.js
│ │ │ │ │ │ │ │ └── foo.js
│ │ │ │ │ │ │ ├── samples/
│ │ │ │ │ │ │ │ ├── basic/
│ │ │ │ │ │ │ │ │ ├── +page.d.ts
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── about/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── blog/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── [slug].json/
│ │ │ │ │ │ │ │ │ │ │ └── +server.ts
│ │ │ │ │ │ │ │ │ │ └── default.svelte
│ │ │ │ │ │ │ │ │ └── blog.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── basic-layout/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── conflicting-groups/
│ │ │ │ │ │ │ │ │ ├── (x)/
│ │ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── (y)/
│ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── conflicting-params/
│ │ │ │ │ │ │ │ │ ├── [slug1]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── [slug2]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-layout/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ └── +layout.server.ts
│ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-page/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-server/
│ │ │ │ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ │ │ │ └── +server.ts
│ │ │ │ │ │ │ │ ├── custom-extension/
│ │ │ │ │ │ │ │ │ ├── +page.funk
│ │ │ │ │ │ │ │ │ ├── about/
│ │ │ │ │ │ │ │ │ │ └── +page.jazz
│ │ │ │ │ │ │ │ │ ├── blog/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ │ │ └── +page.beebop
│ │ │ │ │ │ │ │ │ │ ├── [slug].json/
│ │ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ │ └── _default.svelte
│ │ │ │ │ │ │ │ │ └── blog.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── declared-layout/
│ │ │ │ │ │ │ │ │ └── +layout-foo.svelte
│ │ │ │ │ │ │ │ ├── encoding/
│ │ │ │ │ │ │ │ │ ├── [x+22]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+23]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── [x+3f]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── hidden-dot/
│ │ │ │ │ │ │ │ │ ├── .unknown/
│ │ │ │ │ │ │ │ │ │ └── foo.txt.js
│ │ │ │ │ │ │ │ │ └── .well-known/
│ │ │ │ │ │ │ │ │ └── dnt-policy.txt/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── hidden-underscore/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── _foo.js
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── _b/
│ │ │ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ │ │ └── d.js
│ │ │ │ │ │ │ │ │ ├── e/
│ │ │ │ │ │ │ │ │ │ └── f/
│ │ │ │ │ │ │ │ │ │ └── g/
│ │ │ │ │ │ │ │ │ │ └── h/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── i/
│ │ │ │ │ │ │ │ │ └── _j.js
│ │ │ │ │ │ │ │ ├── invalid-named-layout-reference/
│ │ │ │ │ │ │ │ │ └── x/
│ │ │ │ │ │ │ │ │ ├── +page@.js
│ │ │ │ │ │ │ │ │ └── +page@.svelte
│ │ │ │ │ │ │ │ ├── invalid-params/
│ │ │ │ │ │ │ │ │ └── [foo][bar]/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── lockfiles/
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ │ │ │ └── +server.js_tmp
│ │ │ │ │ │ │ │ ├── multiple-layouts/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── +layout@.svelte
│ │ │ │ │ │ │ │ ├── multiple-pages/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── +page@.svelte
│ │ │ │ │ │ │ │ ├── multiple-slugs/
│ │ │ │ │ │ │ │ │ └── [file].[ext]/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── named-layout-missing/
│ │ │ │ │ │ │ │ │ └── +page@missing.svelte
│ │ │ │ │ │ │ │ ├── named-layouts/
│ │ │ │ │ │ │ │ │ ├── (special)/
│ │ │ │ │ │ │ │ │ │ ├── (alsospecial)/
│ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ │ │ │ └── c1/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ │ └── a2/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── a1/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── c/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── c2/
│ │ │ │ │ │ │ │ │ │ └── +page@.svelte
│ │ │ │ │ │ │ │ │ └── d/
│ │ │ │ │ │ │ │ │ ├── (special)/
│ │ │ │ │ │ │ │ │ │ ├── (extraspecial)/
│ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ │ ├── d2/
│ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ │ └── d3/
│ │ │ │ │ │ │ │ │ │ │ └── +page@(special).svelte
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── d1/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── nested-errors/
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── bar/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ └── baz/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── nested-optionals/
│ │ │ │ │ │ │ │ │ └── [[a]]/
│ │ │ │ │ │ │ │ │ └── [[b]]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── optional/
│ │ │ │ │ │ │ │ │ ├── [[foo]]bar/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── [[optional]]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ │ │ │ └── [[optional]]/
│ │ │ │ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── prefix[[suffix]]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── optional-group/
│ │ │ │ │ │ │ │ │ └── [[optional]]/
│ │ │ │ │ │ │ │ │ └── (group)/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── page-without-svelte-file/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── error/
│ │ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ │ └── [...path]/
│ │ │ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ │ │ └── layout/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── exists/
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── redirect/
│ │ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ │ ├── rest/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── [...rest]/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── [...rest]/
│ │ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── rest-prefix-suffix/
│ │ │ │ │ │ │ │ │ ├── [...rest].json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── prefix-[...rest]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── symlinks/
│ │ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── static/
│ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ └── baz.txt
│ │ │ │ │ │ │ └── foo.txt
│ │ │ │ │ │ └── types.d.ts
│ │ │ │ │ ├── sync.js
│ │ │ │ │ ├── ts.js
│ │ │ │ │ ├── utils.js
│ │ │ │ │ ├── write_ambient.js
│ │ │ │ │ ├── write_client_manifest.js
│ │ │ │ │ ├── write_non_ambient.js
│ │ │ │ │ ├── write_root.js
│ │ │ │ │ ├── write_server.js
│ │ │ │ │ ├── write_tsconfig.js
│ │ │ │ │ ├── write_tsconfig.spec.js
│ │ │ │ │ └── write_types/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index.spec.js
│ │ │ │ │ └── test/
│ │ │ │ │ ├── actions/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── app-types/
│ │ │ │ │ │ ├── (group)/
│ │ │ │ │ │ │ └── path-a/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── trailing-slash/
│ │ │ │ │ │ │ ├── always/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ └── layout/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ └── inside/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── ignore/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ └── layout/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ └── inside/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── mixed/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ └── never/
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ └── layout/
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ └── inside/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── foo/
│ │ │ │ │ │ │ └── [bar]/
│ │ │ │ │ │ │ └── [baz]/
│ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ ├── matcher-test/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ ├── no-matcher/
│ │ │ │ │ │ │ │ └── [locale]/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ └── with-matcher/
│ │ │ │ │ │ │ └── [[locale=locale]]/
│ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ └── locale.js
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── layout-advanced/
│ │ │ │ │ │ ├── (main)/
│ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ ├── +page@.svelte
│ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── param-type-inference/
│ │ │ │ │ │ ├── optional/
│ │ │ │ │ │ │ └── [[optionalNarrowedParam=narrowed]]/
│ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ ├── narrowed.js
│ │ │ │ │ │ │ └── not_narrowed.js
│ │ │ │ │ │ ├── required/
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── [narrowedParam=narrowed]/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ └── [regularParam=not_narrowed]/
│ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ ├── spread/
│ │ │ │ │ │ │ └── [...spread=narrowed]/
│ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── simple-page-server-and-shared/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── simple-page-server-only/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── simple-page-shared-only/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── slugs/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── [...rest]/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── x/
│ │ │ │ │ │ └── [[optional]]/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ └── slugs-layout-not-all-pages-have-load/
│ │ │ │ │ ├── +layout.js
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── nested/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── [...rest]/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ └── +page@.svelte
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ └── utils.js
│ │ │ ├── exports/
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── sequence.js
│ │ │ │ │ └── sequence.spec.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.spec.js
│ │ │ │ ├── internal/
│ │ │ │ │ ├── event.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── remote-functions.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── node/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── polyfills.js
│ │ │ │ ├── public.d.ts
│ │ │ │ └── vite/
│ │ │ │ ├── build/
│ │ │ │ │ ├── build_server.js
│ │ │ │ │ ├── build_service_worker.js
│ │ │ │ │ ├── utils.js
│ │ │ │ │ └── utils.spec.js
│ │ │ │ ├── dev/
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── module_ids.js
│ │ │ │ ├── preview/
│ │ │ │ │ └── index.js
│ │ │ │ ├── static_analysis/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index.spec.js
│ │ │ │ │ ├── utils.js
│ │ │ │ │ └── utils.spec.js
│ │ │ │ ├── types.d.ts
│ │ │ │ ├── utils.js
│ │ │ │ └── utils.spec.js
│ │ │ ├── runtime/
│ │ │ │ ├── app/
│ │ │ │ │ ├── environment/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── types.d.ts
│ │ │ │ │ ├── forms.js
│ │ │ │ │ ├── navigation.js
│ │ │ │ │ ├── paths/
│ │ │ │ │ │ ├── client.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ ├── client.js
│ │ │ │ │ │ │ └── server.js
│ │ │ │ │ │ ├── public.d.ts
│ │ │ │ │ │ ├── server.js
│ │ │ │ │ │ └── types.d.ts
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── remote/
│ │ │ │ │ │ ├── command.js
│ │ │ │ │ │ ├── form.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── prerender.js
│ │ │ │ │ │ ├── query.js
│ │ │ │ │ │ └── shared.js
│ │ │ │ │ ├── state/
│ │ │ │ │ │ ├── client.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── server.js
│ │ │ │ │ └── stores.js
│ │ │ │ ├── client/
│ │ │ │ │ ├── bundle.js
│ │ │ │ │ ├── client.js
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── entry.js
│ │ │ │ │ ├── fetcher.js
│ │ │ │ │ ├── parse.js
│ │ │ │ │ ├── remote-functions/
│ │ │ │ │ │ ├── command.svelte.js
│ │ │ │ │ │ ├── form.svelte.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── prerender.svelte.js
│ │ │ │ │ │ ├── query.svelte.js
│ │ │ │ │ │ └── shared.svelte.js
│ │ │ │ │ ├── session-storage.js
│ │ │ │ │ ├── state.svelte.js
│ │ │ │ │ ├── types.d.ts
│ │ │ │ │ └── utils.js
│ │ │ │ ├── components/
│ │ │ │ │ ├── svelte-4/
│ │ │ │ │ │ ├── error.svelte
│ │ │ │ │ │ └── layout.svelte
│ │ │ │ │ └── svelte-5/
│ │ │ │ │ ├── error.svelte
│ │ │ │ │ └── layout.svelte
│ │ │ │ ├── env/
│ │ │ │ │ └── dynamic/
│ │ │ │ │ ├── private.js
│ │ │ │ │ └── public.js
│ │ │ │ ├── form-utils.js
│ │ │ │ ├── form-utils.spec.js
│ │ │ │ ├── pathname.js
│ │ │ │ ├── server/
│ │ │ │ │ ├── ambient.d.ts
│ │ │ │ │ ├── app.js
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── cookie.js
│ │ │ │ │ ├── cookie.spec.js
│ │ │ │ │ ├── data/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── endpoint.js
│ │ │ │ │ ├── env_module.js
│ │ │ │ │ ├── fetch.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── page/
│ │ │ │ │ │ ├── actions.js
│ │ │ │ │ │ ├── crypto.js
│ │ │ │ │ │ ├── crypto.spec.js
│ │ │ │ │ │ ├── csp.js
│ │ │ │ │ │ ├── csp.spec.js
│ │ │ │ │ │ ├── data_serializer.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── load_data.js
│ │ │ │ │ │ ├── load_data.spec.js
│ │ │ │ │ │ ├── render.js
│ │ │ │ │ │ ├── respond_with_error.js
│ │ │ │ │ │ ├── serialize_data.js
│ │ │ │ │ │ ├── serialize_data.spec.js
│ │ │ │ │ │ ├── server_routing.js
│ │ │ │ │ │ └── types.d.ts
│ │ │ │ │ ├── remote.js
│ │ │ │ │ ├── respond.js
│ │ │ │ │ ├── utils.js
│ │ │ │ │ ├── validate-headers.js
│ │ │ │ │ └── validate-headers.spec.js
│ │ │ │ ├── shared-server.js
│ │ │ │ ├── shared.js
│ │ │ │ ├── telemetry/
│ │ │ │ │ ├── noop.js
│ │ │ │ │ ├── otel.disabled.spec.js
│ │ │ │ │ ├── otel.enabled.spec.js
│ │ │ │ │ ├── otel.js
│ │ │ │ │ ├── otel.missing.spec.js
│ │ │ │ │ ├── record_span.disabled.spec.js
│ │ │ │ │ ├── record_span.enabled.spec.js
│ │ │ │ │ └── record_span.js
│ │ │ │ ├── utils.js
│ │ │ │ └── utils.spec.js
│ │ │ ├── types/
│ │ │ │ ├── ambient-private.d.ts
│ │ │ │ ├── ambient.d.ts
│ │ │ │ ├── global-private.d.ts
│ │ │ │ ├── internal.d.ts
│ │ │ │ ├── private.d.ts
│ │ │ │ └── synthetic/
│ │ │ │ ├── $env+dynamic+private.md
│ │ │ │ ├── $env+dynamic+public.md
│ │ │ │ ├── $env+static+private.md
│ │ │ │ ├── $env+static+public.md
│ │ │ │ └── $lib.md
│ │ │ ├── utils/
│ │ │ │ ├── array.js
│ │ │ │ ├── css.js
│ │ │ │ ├── css.spec.js
│ │ │ │ ├── env.js
│ │ │ │ ├── error.js
│ │ │ │ ├── escape.js
│ │ │ │ ├── escape.spec.js
│ │ │ │ ├── exports.js
│ │ │ │ ├── exports.spec.js
│ │ │ │ ├── features.js
│ │ │ │ ├── filesystem.js
│ │ │ │ ├── filesystem.spec.js
│ │ │ │ ├── fork.js
│ │ │ │ ├── functions.js
│ │ │ │ ├── hash.js
│ │ │ │ ├── http.js
│ │ │ │ ├── http.spec.js
│ │ │ │ ├── import.js
│ │ │ │ ├── misc.js
│ │ │ │ ├── page_nodes.js
│ │ │ │ ├── promise.js
│ │ │ │ ├── routing.js
│ │ │ │ ├── routing.spec.js
│ │ │ │ ├── streaming.js
│ │ │ │ ├── streaming.spec.js
│ │ │ │ ├── url.js
│ │ │ │ └── url.spec.js
│ │ │ ├── version.js
│ │ │ └── version.spec.js
│ │ ├── svelte-kit.js
│ │ ├── test/
│ │ │ ├── .gitignore
│ │ │ ├── ambient.d.ts
│ │ │ ├── apps/
│ │ │ │ ├── amp/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.d.ts
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── http-equiv/
│ │ │ │ │ │ │ └── cache-control/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── invalid/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── has-stylesheet/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── origin/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── origin.json/
│ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ ├── styles/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── Unused.svelte
│ │ │ │ │ │ │ └── imported.css
│ │ │ │ │ │ ├── valid/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── valid.json/
│ │ │ │ │ │ └── +server.js
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── async/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.client.js
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── remote/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── accessing-env.remote.js
│ │ │ │ │ │ │ ├── batch/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── batch.remote.js
│ │ │ │ │ │ │ ├── batch-ssr/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── batch.remote.js
│ │ │ │ │ │ │ ├── batch-validation/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── batch.remote.js
│ │ │ │ │ │ │ ├── dev/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── preload/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── example.remote.js
│ │ │ │ │ │ │ │ └── schema.js
│ │ │ │ │ │ │ ├── event/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── data.remote.ts
│ │ │ │ │ │ │ ├── form/
│ │ │ │ │ │ │ │ ├── [test_name]/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── file-upload/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── for-duplicate/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── imperative/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── preflight/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── preflight-only/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── preflight-pending/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── redirect-target/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── destination/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── select-untouched/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── set-ssr/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── submitter/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── underscore/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ ├── validate/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── form.remote.ts
│ │ │ │ │ │ │ │ └── value/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── value.remote.ts
│ │ │ │ │ │ │ ├── prerender/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── functions-only/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── prerender.remote.js
│ │ │ │ │ │ │ │ ├── test.txt
│ │ │ │ │ │ │ │ └── whole-page/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── query-boundary/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── data.remote.js
│ │ │ │ │ │ │ ├── query-command.remote.js
│ │ │ │ │ │ │ ├── query-non-exported/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── data.remote.ts
│ │ │ │ │ │ │ ├── query-redirect/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── from-common-layout/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── redirected/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── from-page/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect.remote.js
│ │ │ │ │ │ │ │ └── redirected/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── query-runtime-errors/
│ │ │ │ │ │ │ │ ├── inactive/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── TrackedQuery.svelte
│ │ │ │ │ │ │ │ ├── not-tracked/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── run-in-render/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── server-action/
│ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── action.remote.ts
│ │ │ │ │ │ │ ├── server-endpoint/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ │ └── +server.ts
│ │ │ │ │ │ │ │ └── internal.remote.ts
│ │ │ │ │ │ │ ├── server-load-command/
│ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── transport/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── data.remote.ts
│ │ │ │ │ │ │ └── validation/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── validation.remote.js
│ │ │ │ │ │ └── server-error-boundary/
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ └── nested/
│ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── static/
│ │ │ │ │ │ └── robots.txt
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── client.test.js
│ │ │ │ │ │ ├── server.test.js
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── basics/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.d.ts
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── error.html
│ │ │ │ │ │ ├── global.d.ts
│ │ │ │ │ │ ├── hooks.client.js
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ ├── instrumentation.server.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ ├── lowercase.js
│ │ │ │ │ │ │ ├── numeric.js
│ │ │ │ │ │ │ └── uppercase.js
│ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── accessibility/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── autofocus/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── actions/
│ │ │ │ │ │ │ │ ├── enhance/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── file-without-enctype/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── form-errors/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── adjacent-error-boundary/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── form-errors-persist-fields/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── invalidate-all/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect-in-handle/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── success-data/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── update-form/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── adapter/
│ │ │ │ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── prerendered/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── anchor/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── anchor/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── anchor-with-manual-scroll/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── anchor-afternavigate/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── anchor-onmount/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── answer.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── app-environment/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── asset-import/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── asset-preload/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── prerendered/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── styles.css
│ │ │ │ │ │ │ ├── caching/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── server-data/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── content-length-header/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── content-type-header/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── cookies/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── collect-without-re-escaping/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── set-cookie/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── delete/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── encoding/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── not-decoded-twice/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── set/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── enhanced/
│ │ │ │ │ │ │ │ │ └── basic/
│ │ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── forwarded-in-etag/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serialize/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── set/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── set-in-layout/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── set-more-than-one/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── shared.js
│ │ │ │ │ │ │ ├── csrf/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── _base.css
│ │ │ │ │ │ │ │ ├── _manual.css
│ │ │ │ │ │ │ │ ├── _styles.css
│ │ │ │ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── Dynamic.svelte
│ │ │ │ │ │ │ │ ├── encöded/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── other/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── cyclical-dynamic-import/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── _is_even.js
│ │ │ │ │ │ │ │ └── _is_odd.js
│ │ │ │ │ │ │ ├── data-sveltekit/
│ │ │ │ │ │ │ │ ├── noscroll/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── preload-code/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ ├── eager/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── hover/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── tap/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── viewport/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── preload-data/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── offline/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── slow-navigation/
│ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── reload/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── hash/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── new/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── replacestate/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── delete-route/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [id].json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── encoded/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── @[username]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── escape-sequences/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [u+82d7]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [u+d83e][u+dd2a]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+23]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+25]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+2f]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+3a]-[x+29]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+3c]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [x+3f]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── [x][x+3c][y]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirected/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── 反应/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── 苗条/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── endpoint-input/
│ │ │ │ │ │ │ │ └── sha256/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── endpoint-output/
│ │ │ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ │ │ ├── body/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fallback/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-asset/
│ │ │ │ │ │ │ │ │ ├── absolute/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── relative/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── test.txt
│ │ │ │ │ │ │ │ ├── head-handler/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── head-write-error/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── stream/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── stream-throw-error/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ └── stream-typeerror/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── includes/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── errors/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── clientside/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint-shadow/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint-shadow-not-ok/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint-throw-error/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── endpoint-throw-redirect/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── endpoint.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── error-html/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── make-root-fail/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── error-in-handle/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── error-in-layout/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── init-error-endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── invalid-load-response/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── invalid-route-response/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── invalid-server-load-response/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-client/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-error-client/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-error-page-options/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ └── csr/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ │ ├── load-error-server/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── layout-data/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-error-string-server/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-server/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── load-status-without-error-client/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── missing-actions/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── module-scope-client/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── module-scope-server/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── nested-error-page/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── nope/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── page-endpoint/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── _shared.js
│ │ │ │ │ │ │ │ │ ├── get-explicit/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── get-implicit/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── post-explicit/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── post-implicit/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serverside/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── stack-trace/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── _bad.js
│ │ │ │ │ │ │ ├── get-request-event/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── with-error/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ │ └── with-message/
│ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── goto/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── loadreplace1/
│ │ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ │ ├── loadreplace2/
│ │ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ │ ├── loadreplace3/
│ │ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ │ ├── testentry/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── testfinish/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── teststart/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── headers/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── class/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── echo/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ └── set-cookie/
│ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── iframes/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── parent/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── immutable-headers/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ │ ├── init-hooks/
│ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── navigate/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── interactivity/
│ │ │ │ │ │ │ │ └── toggle-element/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── keepfocus/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── load/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── [dynamic]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── [dynamic].json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── accumulated/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── with-page-data/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── without-page-data/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── cache-control/
│ │ │ │ │ │ │ │ │ ├── bust/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── count/
│ │ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ │ └── increment/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── default/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── count/
│ │ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ │ └── increment/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── force/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── count/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── increment/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── change-detection/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── data.json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── one/
│ │ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── two/
│ │ │ │ │ │ │ │ │ └── [y]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── devalue/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── regex/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── dynamic-import-styles/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── _/
│ │ │ │ │ │ │ │ │ └── Thing.svelte
│ │ │ │ │ │ │ │ ├── fetch-abort-signal/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── slow/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-arraybuffer-b64/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── data/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-asset/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── example.json
│ │ │ │ │ │ │ │ ├── fetch-body-stream-b64/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── data/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-cache-control/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── headers-diff/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── load-data/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-credentialed/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-credentialed.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-external-no-cookies/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-no-body/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-origin-external/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-origin-internal/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── resource/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-relative/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-relative.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-request/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-request-empty-headers/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-request-headers/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── data/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-request.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-response-headers/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── fetch-response-headers.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── fetch-same-url/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── data.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── invalidation/
│ │ │ │ │ │ │ │ │ ├── depends/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── depends-goto/
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── forced/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── reset-states/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── forced-goto/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── reset-states/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── invalidate-then-goto/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── multiple/
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── state.js
│ │ │ │ │ │ │ │ │ ├── multiple-batched/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── [a]/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── [b]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── route/
│ │ │ │ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── shared/
│ │ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── [x]/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── search-params/
│ │ │ │ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── universal/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── server-fetch/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── count.json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── url/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── large-response/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── text.txt/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── mutated-url/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── no-server-load/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── parent/
│ │ │ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── [y]/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── [z]/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── shared/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── [y]/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── [z]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── props/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── raw-body/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── dataview/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── string/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── uint8array/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── raw-body.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── relay/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── relay.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── serialization/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── fetched-from-server.json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── fetched-from-shared.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── serialization-empty-node/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serialization-post/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serialization-post-request/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serialization-post.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── server-data-nostore/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server-data-reuse/
│ │ │ │ │ │ │ │ │ ├── no-load/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── with-changing-parent/
│ │ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── no-load/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── with-server-load/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── with-server-load/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server-fetch-request/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server-log-search-param/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server-response-clone/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── set-cookie-fetch/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a.json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ └── b.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── state.js
│ │ │ │ │ │ │ │ ├── static-file-with-hash/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── unchanged/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── isolated/
│ │ │ │ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── state.js
│ │ │ │ │ │ │ │ ├── unchanged-parent/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── state.js
│ │ │ │ │ │ │ │ │ └── uses-parent/
│ │ │ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── url-hash/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── url-query-param/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── url-to-string/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── window-fetch/
│ │ │ │ │ │ │ │ ├── correct/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── data.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── incorrect/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── outside-load/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── patching/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── patching-server-load/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── patching-server-load-ii/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── match/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── const.ts
│ │ │ │ │ │ │ │ ├── load/
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── slug/
│ │ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── navigation-lifecycle/
│ │ │ │ │ │ │ │ ├── after-navigate/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── after-navigate-properly-removed/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── before-navigate/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── complete/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── event/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── hash-links/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── prevent-navigation/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── redirect/
│ │ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ │ ├── on-navigate/
│ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── scroll-state/
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── nested-layout/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── error/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── foo/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ └── nope/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── baz/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── reset/
│ │ │ │ │ │ │ │ ├── +layout@.svelte
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── no-csr/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── data.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── no-ssr/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── after-navigate/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── browser-only-global/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── margin/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── other/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── ssr-page-config/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── layout/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── inherit/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── overwrite/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── node-analysis/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── origin/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── package.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── params-prop/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── paths/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── deeply/
│ │ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── prerendering/
│ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── prerendered/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── log-url/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── mutative-endpoint/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.server.ts
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── no-ssr/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── prerendered-endpoint/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── api-with-param/
│ │ │ │ │ │ │ │ │ │ └── [option]/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── page/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── proxy/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ └── 中文/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ ├── query/
│ │ │ │ │ │ │ │ └── echo/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── utils.js
│ │ │ │ │ │ │ ├── read-file/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── [auto].txt
│ │ │ │ │ │ │ │ ├── [styles].css
│ │ │ │ │ │ │ │ ├── [url].txt
│ │ │ │ │ │ │ │ └── assets/
│ │ │ │ │ │ │ │ └── [file].txt
│ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── c/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── in-handle/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── loopy/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── missing-status/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── package/
│ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ ├── redirect-on-load/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── redirected/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── reroute/
│ │ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ │ ├── +server.ts
│ │ │ │ │ │ │ │ │ └── [prerendered]/
│ │ │ │ │ │ │ │ │ └── +server.ts
│ │ │ │ │ │ │ │ ├── async/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── +page.ts
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── basic/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── client-only-redirect/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── error-handling/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── client-error/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── client-error-rewritten/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── server-error/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── external/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── invalidate/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── preload-data/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ │ └── prerendered/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── destination/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ ├── reset-focus/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── routing/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── ambiguous/
│ │ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── [slug].json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── b.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── cancellation/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── client/
│ │ │ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── const/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── content-negotiation/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── dirs/
│ │ │ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── [a]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── [b]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── external-popstate/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── focus/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── form-get/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── form-target-blank/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── hashes/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── focus/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── pagestate/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── link-outside-app-target/
│ │ │ │ │ │ │ │ │ ├── source/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── state.js
│ │ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── long-navigation/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── matched/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [fallback]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [letter=lowercase]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [letter=uppercase]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── [number=numeric]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── missing-href/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── next-paint/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── params-in-handle/
│ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── preloading/
│ │ │ │ │ │ │ │ │ ├── hash-route/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── preload-error/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── preloaded/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── preloaded.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── prerendered/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ └── trailing-slash/
│ │ │ │ │ │ │ │ │ ├── always/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── ignore/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── never/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── rest/
│ │ │ │ │ │ │ │ │ ├── [...rest]/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── deep/
│ │ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── deep.json/
│ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ ├── complex/
│ │ │ │ │ │ │ │ │ │ ├── [...parts].json/
│ │ │ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ │ │ └── prefix-[...parts]/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── non-greedy/
│ │ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ │ ├── [dynamic]-bar/
│ │ │ │ │ │ │ │ │ │ │ └── [...rest]/
│ │ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ │ │ │ └── [...rest]/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── path/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ └── [...ignored]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── route-id/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── shadow-dom/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── skipped/
│ │ │ │ │ │ │ │ │ └── [one]/
│ │ │ │ │ │ │ │ │ └── [two]/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── slashes/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── split-params/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── [a]-[b]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── symlink-to/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── trailing-slash/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── always/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── ignore/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── never/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── trailing-slash-server/
│ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── always/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── ignore/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── never/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── scroll/
│ │ │ │ │ │ │ │ ├── cross-document/
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── push-state/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── top/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── selection/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── serialization-basic/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── child/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── serialization-form-enhanced/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── serialization-form-non-enhanced/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── server-deserialize/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── serialization-stream/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── set-cookie/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── shadowed/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── error-get/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── error-post/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── missing-get/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── no-get/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── parent/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── post-success-redirect/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── redirected/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── [a]/
│ │ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect-get/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect-get-with-cookie/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect-get-with-cookie-from-fetch/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── endpoint/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── redirect-post/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect-post-with-cookie/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirected/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── same-render/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── same-render-entry/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── serialization/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── simple/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── post/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── shallow-routing/
│ │ │ │ │ │ │ │ ├── push-state/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── effect/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── replace-state/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── effect/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── snapshot/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ └── [...anything]/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── state/
│ │ │ │ │ │ │ │ ├── client-access/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── [item]/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── foo/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── state-update/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── same-keys/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── same/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── same-deep/
│ │ │ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── navigating/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── url/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── static/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── store/
│ │ │ │ │ │ │ │ ├── client-access/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── [item]/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── foo/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── store-update/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── same-keys/
│ │ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ ├── same/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── same-deep/
│ │ │ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── navigating/
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ │ └── c/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── subscribe/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── streaming/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── discarded-promise/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── fast-n-slow/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── server-error/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── universal/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── tracing/
│ │ │ │ │ │ │ │ ├── http-error/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── non-error-object/
│ │ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ │ ├── one/
│ │ │ │ │ │ │ │ │ └── two/
│ │ │ │ │ │ │ │ │ └── three/
│ │ │ │ │ │ │ │ │ └── [...four]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ │ └── regular-error/
│ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ ├── transform-page-chunk/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── treeshaking/
│ │ │ │ │ │ │ │ ├── browser/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── dev/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── unsafe-replacement/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── untrack/
│ │ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── universal/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── use-action/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── focus-and-scroll/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── xss/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── [path]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── query/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── utils.js
│ │ │ │ │ │ │ │ ├── query-tracking/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── shadow/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── xss.json/
│ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ └── service-worker.js
│ │ │ │ │ ├── static/
│ │ │ │ │ │ ├── empty.js
│ │ │ │ │ │ ├── load/
│ │ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ │ └── a#b.txt
│ │ │ │ │ │ │ └── foo.json
│ │ │ │ │ │ ├── static.json
│ │ │ │ │ │ ├── subdirectory/
│ │ │ │ │ │ │ └── static.json
│ │ │ │ │ │ └── symlink-to/
│ │ │ │ │ │ └── hello.txt
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── client.test.js
│ │ │ │ │ │ ├── cross-platform/
│ │ │ │ │ │ │ ├── client.test.js
│ │ │ │ │ │ │ ├── server.test.js
│ │ │ │ │ │ │ └── test.js
│ │ │ │ │ │ ├── server.test.js
│ │ │ │ │ │ ├── setup.js
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ ├── unit-test/
│ │ │ │ │ │ └── client.spec.js
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── dev-only/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── _test_dependencies/
│ │ │ │ │ │ └── cjs-only/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.client.js
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ │ └── blah/
│ │ │ │ │ │ │ │ └── private.js
│ │ │ │ │ │ │ └── test.server.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── headers/
│ │ │ │ │ │ │ └── invalid/
│ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ ├── illegal-imports/
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── dynamic-private/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── static-private/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── server-only-folder/
│ │ │ │ │ │ │ │ └── static-import/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── server-only-modules/
│ │ │ │ │ │ │ ├── illegal.server.js
│ │ │ │ │ │ │ ├── static-import/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── foo.js
│ │ │ │ │ │ │ └── static-import-2/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── optimize-deps/
│ │ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ └── request-abort/
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ └── +server.js
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── embed/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ └── embed/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── b/
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── hash-based-routing/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── anchor/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── focus/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── rerouted/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── resolve/
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── no-ssr/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ └── browser-globals/
│ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── options/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── env-dir/
│ │ │ │ │ │ └── .env
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── public/
│ │ │ │ │ │ └── answer.html
│ │ │ │ │ ├── source/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── Message.svelte
│ │ │ │ │ │ │ ├── SharedCSS.svelte
│ │ │ │ │ │ │ └── SvelteLogo.svelte
│ │ │ │ │ │ ├── hooks.client.js
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ ├── +layout.server.js
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── +server.js
│ │ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── csp/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── csp-hydratable/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── csp-with-stream/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── custom-extensions/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.jesuslivesineveryone
│ │ │ │ │ │ │ │ ├── [slug]/
│ │ │ │ │ │ │ │ │ └── +page.svelte.md
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── const/
│ │ │ │ │ │ │ │ │ └── +page.whokilledthemuffinman
│ │ │ │ │ │ │ │ └── unsafe-replacement/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── endpoint/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── endpoint-with-slash/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── error/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── fetch/
│ │ │ │ │ │ │ │ ├── link-outside-base/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── link-root/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── inline-style/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── conditional-rendering/
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── Component.svelte
│ │ │ │ │ │ │ │ ├── dynamic-import/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ │ └── Thing.svelte
│ │ │ │ │ │ │ │ ├── import-meta/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── static-dir/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── url-encoded/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── match/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── mode/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── on-navigate/
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── page-endpoint/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── preloading/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── code/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── preloaded/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── resolve-route/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [foo]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── routing/
│ │ │ │ │ │ │ │ └── link-outside-app-target/
│ │ │ │ │ │ │ │ ├── source/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── state.js
│ │ │ │ │ │ │ │ └── target/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── slash/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── child/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── test.txt
│ │ │ │ │ │ └── template.html
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── paths-assets.test.js
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.custom.config.js
│ │ │ │ ├── options-2/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── deeply/
│ │ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ │ └── page/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── deserialize/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── remote/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── count.remote.js
│ │ │ │ │ │ │ ├── serialization-stream/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── trailing-slash-server/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── prerender/
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── service-worker.js
│ │ │ │ │ ├── static/
│ │ │ │ │ │ └── answer.txt
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── options-3/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ └── serialization-stream/
│ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── prerendered-app-error-pages/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── jsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── playwright.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.d.ts
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +error.svelte
│ │ │ │ │ │ ├── +layout.ts
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── read-file-test/
│ │ │ │ │ └── [file].txt
│ │ │ │ ├── test.svelte
│ │ │ │ └── writes/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── package.json
│ │ │ │ ├── playwright.config.js
│ │ │ │ ├── src/
│ │ │ │ │ ├── app.html
│ │ │ │ │ ├── global.d.ts
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── double-mount/
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── new-route/
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ └── universal/
│ │ │ │ │ ├── +page.js
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ └── parent-changed/
│ │ │ │ │ ├── +layout.js
│ │ │ │ │ ├── +page.js
│ │ │ │ │ └── +page.svelte
│ │ │ │ ├── svelte.config.js
│ │ │ │ ├── test/
│ │ │ │ │ └── test.js
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── vite.config.js
│ │ │ ├── build-errors/
│ │ │ │ ├── apps/
│ │ │ │ │ ├── prerender-entry-generator-mismatch/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ ├── [notSpecific]/
│ │ │ │ │ │ │ │ └── +page.ts
│ │ │ │ │ │ │ └── specific/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── prerender-remote-function-error/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── data.remote.ts
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── prerenderable-incorrect-fragment/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── prerenderable-not-prerendered/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── [x]/
│ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── private-dynamic-env/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── private-dynamic-env-dynamic-import/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── private-static-env/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── private-static-env-dynamic-import/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── server-only-folder/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ │ └── server/
│ │ │ │ │ │ │ │ └── something/
│ │ │ │ │ │ │ │ └── private.js
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── server-only-folder-dynamic-import/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ │ └── server/
│ │ │ │ │ │ │ │ └── something/
│ │ │ │ │ │ │ │ └── private.js
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── server-only-module/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ │ └── test.server.js
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── server-only-module-dynamic-import/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ │ └── test.server.js
│ │ │ │ │ │ │ └── routes/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── service-worker-dynamic-public-env/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── service-worker.js
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ ├── service-worker-private-env/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .npmrc
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── service-worker.js
│ │ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.js
│ │ │ │ │ └── syntax-error/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── test.server.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── env.spec.js
│ │ │ │ ├── package.json
│ │ │ │ ├── prerender.spec.js
│ │ │ │ ├── server-only.spec.js
│ │ │ │ ├── syntax-error.spec.js
│ │ │ │ └── tsconfig.json
│ │ │ ├── github-flaky-warning-reporter.js
│ │ │ ├── mocks/
│ │ │ │ └── path.js
│ │ │ ├── prerendering/
│ │ │ │ ├── basics/
│ │ │ │ │ ├── .env
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── globalSetup.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.d.ts
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ ├── (grouped)/
│ │ │ │ │ │ │ │ └── grouped/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ ├── encoding/
│ │ │ │ │ │ │ │ ├── [path]/
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── [path].json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── path with spaces/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── redirect/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── encöded-hash-link/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── fetch-404/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── fetch-endpoint/
│ │ │ │ │ │ │ │ ├── also-not-buffered/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── buffered/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ ├── buffered.json/
│ │ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ │ ├── not-buffered/
│ │ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── not-buffered.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── fetch-image/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [...slug]/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── immutable-headers/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── load-file-with-spaces/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── max-age/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── missing-id/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── optional-params/
│ │ │ │ │ │ │ │ └── [[optional]]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── origin/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── message.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ ├── page.html/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── prerender-origin/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── [dynamic]/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── prerendering-true/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── redirect/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ ├── redirect-encoded/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ ├── redirect-malicious/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ ├── redirect-relative/
│ │ │ │ │ │ │ │ └── +page.js
│ │ │ │ │ │ │ ├── redirect-server/
│ │ │ │ │ │ │ │ └── +page.server.js
│ │ │ │ │ │ │ ├── resolve-relative/
│ │ │ │ │ │ │ │ └── lv1/
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── lv2/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── shadowed-get/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ └── ssr-off/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── shadowed-post/
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── spa-shell/
│ │ │ │ │ │ │ │ ├── +page.js
│ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ ├── trailing-slash/
│ │ │ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ │ ├── page/
│ │ │ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ │ └── standalone-endpoint.json/
│ │ │ │ │ │ │ │ └── +server.js
│ │ │ │ │ │ │ └── 初めまして/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── service-worker.js
│ │ │ │ │ ├── static/
│ │ │ │ │ │ └── file with spaces.json
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── tests.spec.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── options/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── public/
│ │ │ │ │ │ └── robots.txt
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── (group)/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── csp-hydratable/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── rss.xml/
│ │ │ │ │ │ └── +server.js
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── tests.spec.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── paths-base/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.d.ts
│ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ ├── hooks.server.js
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── +layout.js
│ │ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ ├── c/
│ │ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ │ └── d/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── emitted/
│ │ │ │ │ │ │ ├── +page.server.js
│ │ │ │ │ │ │ ├── +page.svelte
│ │ │ │ │ │ │ └── message.csv
│ │ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ │ └── [slug]/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ └── +page.svelte
│ │ │ │ │ │ └── redirect/
│ │ │ │ │ │ └── +page.js
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── tests.spec.js
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ └── test-utils.js
│ │ │ ├── setup.js
│ │ │ ├── tsconfig.json
│ │ │ ├── types/
│ │ │ │ ├── actions.test.ts
│ │ │ │ ├── load.test.ts
│ │ │ │ ├── remote.test.ts
│ │ │ │ └── tsconfig.json
│ │ │ ├── types.d.ts
│ │ │ └── utils.js
│ │ ├── tsconfig.json
│ │ └── types/
│ │ └── index.d.ts
│ ├── package/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── cli.js
│ │ │ ├── config.js
│ │ │ ├── filesystem.js
│ │ │ ├── index.js
│ │ │ ├── types.d.ts
│ │ │ ├── typescript.js
│ │ │ ├── utils.js
│ │ │ └── validate.js
│ │ ├── svelte-package.js
│ │ ├── test/
│ │ │ ├── errors/
│ │ │ │ └── no-lib-folder/
│ │ │ │ ├── package.json
│ │ │ │ ├── svelte.config.js
│ │ │ │ └── tsconfig.json
│ │ │ ├── fixtures/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── jsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── svelte.config.js
│ │ │ │ ├── emitTypes-false/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── svelte.config.js
│ │ │ │ ├── javascript/
│ │ │ │ │ ├── ReadMe.md
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── Test2.svelte.d.ts
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── runes.svelte.d.ts
│ │ │ │ │ │ │ └── runes.svelte.js
│ │ │ │ │ │ ├── utils.d.ts
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── jsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── runes.svelte.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ └── svelte.config.js
│ │ │ │ ├── preserve-output/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── theme.css
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── svelte-3-types/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── svelte-kit/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── jsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── kitlib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── svelte.config.js
│ │ │ │ ├── tsconfig-specified/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── runes.svelte.d.ts
│ │ │ │ │ │ └── runes.svelte.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── runes.svelte.ts
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ ├── tsconfig.build.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── typescript-declaration-map/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── typescript-esnext/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Plain.svelte
│ │ │ │ │ │ ├── Plain.svelte.d.ts
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── Test2.svelte.d.ts
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── runes.svelte.d.ts
│ │ │ │ │ │ ├── runes.svelte.js
│ │ │ │ │ │ ├── utils.d.ts
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Plain.svelte
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test2.svelte
│ │ │ │ │ │ ├── foo.d.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── runes.svelte.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── typescript-nodenext/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── runes.svelte.d.ts
│ │ │ │ │ │ └── runes.svelte.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── runes.svelte.ts
│ │ │ │ │ ├── svelte.config.js
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── typescript-svelte-config/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── runes.svelte.d.ts
│ │ │ │ │ │ └── runes.svelte.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ ├── Test.svelte
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── runes.svelte.ts
│ │ │ │ │ ├── svelte.config.ts
│ │ │ │ │ └── tsconfig.json
│ │ │ │ └── typescript-ts-extension-rewrites/
│ │ │ │ ├── expected/
│ │ │ │ │ ├── Demo.svelte
│ │ │ │ │ ├── Demo.svelte.d.ts
│ │ │ │ │ ├── helper.d.ts
│ │ │ │ │ ├── helper.js
│ │ │ │ │ ├── helper2.d.ts
│ │ │ │ │ ├── helper2.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ └── index.js
│ │ │ │ ├── package.json
│ │ │ │ ├── src/
│ │ │ │ │ └── lib/
│ │ │ │ │ ├── Demo.svelte
│ │ │ │ │ ├── helper.ts
│ │ │ │ │ ├── helper2.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── svelte.config.js
│ │ │ │ └── tsconfig.json
│ │ │ ├── index.spec.js
│ │ │ └── watch/
│ │ │ ├── expected/
│ │ │ │ ├── Test.svelte
│ │ │ │ ├── Test.svelte.d.ts
│ │ │ │ ├── a.d.ts
│ │ │ │ ├── a.js
│ │ │ │ ├── b.d.ts
│ │ │ │ ├── b.js
│ │ │ │ ├── index.js
│ │ │ │ ├── package.json
│ │ │ │ └── post-error.svelte
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── lib/
│ │ │ │ └── index.js
│ │ │ ├── svelte.config.js
│ │ │ └── tsconfig.json
│ │ └── tsconfig.json
│ └── test-redirect-importer/
│ ├── index.js
│ └── package.json
├── playgrounds/
│ ├── README.md
│ └── basic/
│ ├── .gitignore
│ ├── package.json
│ ├── src/
│ │ ├── app.d.ts
│ │ ├── app.html
│ │ ├── lib/
│ │ │ └── index.js
│ │ └── routes/
│ │ ├── +layout.svelte
│ │ └── +page.svelte
│ ├── svelte.config.js
│ ├── tsconfig.json
│ └── vite.config.js
├── pnpm-workspace.yaml
├── renovate.json
├── scripts/
│ ├── check-dependencies.js
│ ├── print-flaky-test-report.js
│ └── sync-all.js
├── test-utils/
│ └── index.js
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .changeset/busy-goats-brush.md
================================================
---
'@sveltejs/kit': patch
---
fix: don't request new data when `.refresh` is called on a query with no cache entry
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": ["@svitejs/changesets-changelog-github-compact", { "repo": "sveltejs/kit" }],
"commit": false,
"linked": [],
"access": "public",
"baseBranch": "main",
"bumpVersionsWithWorkspaceProtocolOnly": true,
"ignore": ["!(@sveltejs/*)"]
}
================================================
FILE: .changeset/eight-sheep-unite.md
================================================
---
'@sveltejs/kit': minor
---
breaking: add `run()` method to queries, disallow awaiting queries outside render
================================================
FILE: .changeset/great-actors-stop.md
================================================
---
'@sveltejs/kit': patch
---
fix: manage queries in their own `$effect.root`
================================================
FILE: .changeset/many-flowers-press.md
================================================
---
'@sveltejs/kit': patch
---
fix: avoid `inlineDynamicImports` deprecation warning when building the service worker with Vite 8
================================================
FILE: .changeset/orange-queens-rush.md
================================================
---
'@sveltejs/kit': minor
---
feat: use `hydratable` for remote function transport
================================================
FILE: .changeset/silver-baths-camp.md
================================================
---
'@sveltejs/kit': patch
---
fix: deduplicate same-cache-key `batch` calls during SSR
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = tab
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
================================================
FILE: .eslint/no-runtime-to-exports-imports.js
================================================
// @ts-expect-error no types here
import path from 'node:path';
/**
* @type {import('eslint').Rule.RuleModule}
*/
export default {
meta: {
type: 'problem',
docs: {
description: 'disallow relative imports from src/runtime to src/exports',
category: 'Possible Errors',
recommended: true
},
schema: [],
messages: {
noRuntimeToExportsImport:
'Relative imports from src/runtime to src/exports are not allowed because they can cause Vite to resolve the same module both via regular Node and internal Vite. Use internal import maps or `@sveltejs/kit/internal` instead.'
}
},
create(context) {
const filename = context.filename;
// Only apply this rule to files in packages/kit/src/runtime
const in_runtime = filename.includes(path.join('packages', 'kit', 'src', 'runtime'));
if (!in_runtime) {
return {};
}
return {
ImportDeclaration(node) {
const import_path = node.source.value;
// Check if this is a relative import
if (typeof import_path === 'string' && import_path.startsWith('.')) {
// Resolve the import path relative to the current file
const current_dir = path.dirname(filename);
const resolved_path = path.resolve(current_dir, import_path);
// Check if the resolved path points to src/exports
const exports_path = path.join('packages', 'kit', 'src', 'exports');
if (resolved_path.includes(exports_path)) {
context.report({
node: node.source,
messageId: 'noRuntimeToExportsImport'
});
}
}
}
};
}
};
================================================
FILE: .gitattributes
================================================
* text=auto eol=lf
/packages/**/test/** -linguist-detectable
/packages/**/fixtures/** -linguist-detectable
================================================
FILE: .githooks/pre-push
================================================
#!/bin/sh
set -e
pnpm install --frozen-lockfile
pnpm lint
pnpm check
================================================
FILE: .github/FUNDING.yml
================================================
open_collective: svelte
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "\U0001F41E Bug report"
description: Report an issue with SvelteKit
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! **Before you start, make sure you have the latest versions of the packages you're using, including adapters.**
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: Please [check if bugs related to building are caused by Vite](https://github.com/sveltejs/kit#bug-reporting) and [file there](https://github.com/vitejs/vite/issues) if appropriate. 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: A link to a repository, or a fork of https://node.new/sveltekit, that reproduces the issue. Reproductions must be [short, self-contained and correct](http://sscce.org/) and must not contain files or code that aren't relevant to the issue — please do NOT just paste a link to your project. Explaining how to reproduce is generally not enough. It pushes the burden of creating a reproduction project onto a small set of volunteer maintainers and isn't scalable. If no reproduction is provided, 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. 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 --binaries --browsers --npmPackages "{svelte,@sveltejs/*,vite}"`
render: Shell
placeholder: System, Binaries, Browsers
validations:
required: true
- type: dropdown
id: severity
attributes:
label: Severity
options:
- annoyance
- serious, but I can work around it
- blocking an upgrade
- blocking all usage of SvelteKit
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Information
================================================
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 SvelteKit users in real time.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: "Feature Request"
description: Suggest an idea for this project
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: textarea
id: alternatives
attributes:
label: Alternatives considered
description: "Please provide a clear and concise description of any alternative solutions or features you've considered."
- 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 SvelteKit without it
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Information
description: Add any other context or screenshots about the feature request here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
closes #<!-- Add the related issue number here. Repeat this line for each additional issue it closes -->
<!-- Explain the goal of the PR, why it is needed, and what has been changed to achieve that goal -->
---
### Please don't delete this checklist! 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
- [ ] This message body should clearly illustrate what problems it solves.
- [ ] Ideally, include a test that fails without this PR but passes with it.
### Tests
- [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check`
### Changesets
- [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`.
### Edits
- [ ] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.
================================================
FILE: .github/actions/platform-test/action.yml
================================================
name: 'Platform Test'
description: 'Run Playwright tests against a deployed platform preview'
inputs:
test-app-dir:
description: 'Path to the test app directory'
required: true
deployment-url:
description: 'URL of the deployed preview to test against'
required: true
runs:
using: 'composite'
steps:
- name: Install Playwright
shell: bash
run: pnpm playwright install chromium --no-shell
- name: Run Playwright tests
shell: bash
working-directory: ${{ inputs.test-app-dir }}
env:
DEPLOYMENT_URL: ${{ inputs.deployment-url }}
run: pnpm test:platform
- name: Upload test artifacts
if: failure()
uses: actions/upload-artifact@v7
with:
name: platform-test-results-${{ github.job }}
path: ${{ inputs.test-app-dir }}/test-results
retention-days: 3
================================================
FILE: .github/actions/vercel-deploy/action.yml
================================================
name: 'Vercel Deploy'
description: 'Set up the repo and deploy a test app to Vercel'
inputs:
# Important: When setting up a new Vercel test app, make sure
# to set the root directory in the dashboard to the correct path.
# The `vercel deploy` command runs from the root of the repository,
# so it has to be able to look up the test app's dir in order to know
# what to deploy.
vercel-project-id:
description: 'Vercel project ID for the test app'
required: true
vercel-token:
description: 'Vercel authentication token'
required: true
vercel-org-id:
description: 'Vercel organization ID'
required: true
outputs:
deployment-url:
description: 'URL of the deployed preview'
value: ${{ steps.deploy.outputs.url }}
runs:
using: 'composite'
steps:
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- name: Install dependencies
shell: bash
run: pnpm install --frozen-lockfile
- name: Install Vercel CLI
shell: bash
run: npm i -g vercel
- name: Deploy to Vercel
id: deploy
shell: bash
env:
VERCEL_TOKEN: ${{ inputs.vercel-token }}
VERCEL_ORG_ID: ${{ inputs.vercel-org-id }}
VERCEL_PROJECT_ID: ${{ inputs.vercel-project-id }}
run: echo "url=$(vercel deploy --yes --token="$VERCEL_TOKEN")" >> "$GITHUB_OUTPUT"
================================================
FILE: .github/workflows/audit.yml
================================================
name: audit
on:
schedule:
- cron: "0 5 * * *" # daily 5AM
env:
# not needed for audit
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
Audit:
# prevents this action from running on forks
if: github.repository == 'sveltejs/kit'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: '24.x'
cache: pnpm
- run: pnpm install --frozen-lockfile
# check prod dependencies as these would affect users
- run: pnpm audit --prod
================================================
FILE: .github/workflows/autofix-lint.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/kit' &&
(
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@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Run prettier
run: pnpm format
- name: Generate types
run: pnpm -F @sveltejs/kit generate:types
- 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 lint"
git push origin HEAD
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
paths-ignore: &paths_ignore
- '.changeset/**'
- '.githooks/**'
- '.github/ISSUE_TEMPLATE/**'
- '.github/copilot-instructions.md'
- '.github/FUNDING.yml'
- '.github/PULL_REQUEST_TEMPLATE.md'
- 'documentation/**'
- 'packages/*/CHANGELOG*.md'
- 'packages/kit/src/types/synthetic/**'
- 'AGENTS.md'
- 'CLAUDE.md'
- 'CONTRIBUTING.md'
- 'FUNDING.json'
- 'LICENSE'
- 'README.md'
pull_request:
paths-ignore: *paths_ignore
env:
# we call `pnpm playwright install` instead
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
# cancel in-progress runs on new commits to same PR (gitub.event.number)
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
pkg-pr-new:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpx pkg-pr-new publish --comment=off ./packages/*
lint-all:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm run lint
- run: cd packages/kit && pnpm prepublishOnly && { [ "`git status --porcelain=v1`" == "" ] || (echo "Generated types have changed — please run prepublishOnly locally and commit the changes after you have reviewed them"; git diff; exit 1); }
- run: pnpm run check
test-kit:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- node-version: 18
os: ubuntu-latest
e2e-browser: 'chromium'
vite: 'baseline'
- node-version: 20
os: ubuntu-latest
e2e-browser: 'chromium'
vite: 'current'
- node-version: 22
os: ubuntu-latest
e2e-browser: 'chromium'
vite: 'current'
- node-version: 24
os: ubuntu-latest
e2e-browser: 'chromium'
vite: 'current'
- node-version: 24
os: ubuntu-latest
e2e-browser: 'chromium'
vite: 'beta'
env:
KIT_E2E_BROWSER: ${{matrix.e2e-browser}}
MATRIX_VITE: ${{matrix.vite}}
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: setup overrides for matrix.vite
if: matrix.vite != 'current'
run:
| # copies catalogs.vite-xxx to overrides in pnpm-workspace.yaml so the subsequent `pnpm install` enforces them
yq -i '.overrides =.catalogs."vite-${{matrix.vite}}"' pnpm-workspace.yaml
pnpm install --no-frozen-lockfile
git checkout pnpm-lock.yaml pnpm-workspace.yaml # revert changes to pnpm files to avoid cache key changes
pnpm --dir packages/kit ls vite
- run: pnpm playwright install ${{ matrix.e2e-browser }}
- run: pnpm run sync-all
- run: pnpm test:kit
env:
NODE_OPTIONS: ${{matrix.node-version == 22 && '--experimental-strip-types' || ''}} # allows loading svelte.config.ts
- name: Print flaky test report
run: node scripts/print-flaky-test-report.js
- name: Archive test results
if: failure()
shell: bash
run: find packages -type d -name test-results -not -empty | tar -czf test-results.tar.gz --files-from=-
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v7
with:
retention-days: 3
name: test-failure-${{ github.run_id }}-${{ matrix.os }}-${{ matrix.node-version }}-${{ matrix.e2e-browser }}-vite-${{matrix.vite}}
path: test-results.tar.gz
test-kit-cross-browser:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- node-version: 24
os: windows-latest
e2e-browser: 'chromium'
mode: 'dev'
- node-version: 24
os: ubuntu-latest
e2e-browser: 'firefox'
mode: 'dev'
- node-version: 24
os: macOS-latest
e2e-browser: 'webkit'
mode: 'dev'
- node-version: 24
os: windows-latest
e2e-browser: 'chromium'
mode: 'build'
- node-version: 24
os: ubuntu-latest
e2e-browser: 'firefox'
mode: 'build'
- node-version: 24
os: macOS-latest
e2e-browser: 'webkit'
mode: 'build'
env:
KIT_E2E_BROWSER: ${{matrix.e2e-browser}}
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm playwright install ${{ matrix.e2e-browser }}
- run: pnpm run sync-all
- run: pnpm test:cross-platform:${{ matrix.mode }}
- name: Print flaky test report
run: node scripts/print-flaky-test-report.js
- name: Archive test results
if: failure()
shell: bash
run: find packages -type d -name test-results -not -empty | tar -czf test-results-cross-platform-${{ matrix.mode }}.tar.gz --files-from=-
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v7
with:
retention-days: 3
name: test-failure-cross-platform-${{ matrix.mode }}-${{ github.run_id }}-${{ matrix.os }}-${{ matrix.node-version }}-${{ matrix.e2e-browser }}
path: test-results-cross-platform-${{ matrix.mode }}.tar.gz
test-kit-server-side-route-resolution:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- mode: 'dev'
- mode: 'build'
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm playwright install chromium --no-shell
- run: pnpm run sync-all
- run: pnpm test:server-side-route-resolution:${{ matrix.mode }}
- name: Print flaky test report
run: node scripts/print-flaky-test-report.js
- name: Archive test results
if: failure()
shell: bash
run: find packages -type d -name test-results -not -empty | tar -czf test-results-server-side-route-resolution-${{ matrix.mode }}.tar.gz --files-from=-
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v7
with:
retention-days: 3
name: test-failure-server-side-route-resolution-${{ matrix.mode }}-${{ github.run_id }}
path: test-results-server-side-route-resolution-${{ matrix.mode }}.tar.gz
test-kit-svelte-async:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- mode: 'dev'
- mode: 'build'
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm playwright install chromium --no-shell
- run: pnpm run sync-all
- run: pnpm test:svelte-async:${{ matrix.mode }}
- name: Print flaky test report
run: node scripts/print-flaky-test-report.js
- name: Archive test results
if: failure()
shell: bash
run: find packages -type d -name test-results -not -empty | tar -czf test-results-svelte-async-${{ matrix.mode }}.tar.gz --files-from=-
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v7
with:
retention-days: 3
name: test-failure-svelte-async-${{ matrix.mode }}-${{ github.run_id }}
path: test-results-svelte-async-${{ matrix.mode }}.tar.gz
test-others:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22, 24]
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5.0.0
- uses: actions/setup-node@v6
with:
node-version: ${{matrix.node-version}}
cache: pnpm
# required for testing netlify edge functions
- uses: denoland/setup-deno@v2
with:
deno-version: ^2.2.4
- run: pnpm install --frozen-lockfile
- name: setup overrides for matrix.node
if: matrix.node-version == 18
run:
| # copies catalogs.node-xx to overrides in pnpm-workspace.yaml so the subsequent `pnpm install` enforces them
yq -i '.overrides =.catalogs."node-18"' pnpm-workspace.yaml
pnpm install --no-frozen-lockfile
git checkout pnpm-lock.yaml pnpm-workspace.yaml # revert changes to pnpm files to avoid cache key changes
pnpm --dir packages/kit ls vite @sveltejs/vite-plugin-svelte
- run: pnpm playwright install chromium --no-shell
- run: cd packages/kit && pnpm prepublishOnly
- run: pnpm run test:others
env:
NODE_OPTIONS: ${{matrix.node-version == 22 && '--experimental-strip-types' || ''}} # allows loading svelte.config.ts
================================================
FILE: .github/workflows/platform-tests-all.yml
================================================
name: Platform Tests (All)
on:
workflow_dispatch:
inputs:
sha:
description: 'Commit SHA to test and update check status on'
required: false
default: ''
permissions:
contents: write
jobs:
vercel:
uses: ./.github/workflows/platform-tests-vercel.yml
with:
sha: ${{ inputs.sha }}
secrets: inherit
report-status:
if: always()
needs: [vercel]
runs-on: ubuntu-latest
steps:
- name: Determine outcome
id: outcome
run: |
if [ "${{ contains(needs.*.result, 'failure') }}" = "true" ]; then
echo "conclusion=failure" >> "$GITHUB_OUTPUT"
echo "title=Platform tests failed" >> "$GITHUB_OUTPUT"
echo "summary=One or more platform test jobs failed. See the [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details." >> "$GITHUB_OUTPUT"
elif [ "${{ contains(needs.*.result, 'cancelled') }}" = "true" ]; then
echo "conclusion=cancelled" >> "$GITHUB_OUTPUT"
echo "title=Platform tests cancelled" >> "$GITHUB_OUTPUT"
echo "summary=Platform tests were cancelled before completing." >> "$GITHUB_OUTPUT"
else
echo "conclusion=success" >> "$GITHUB_OUTPUT"
echo "title=Platform tests passed" >> "$GITHUB_OUTPUT"
echo "summary=All platform test jobs passed." >> "$GITHUB_OUTPUT"
fi
- name: Report results
env:
GH_TOKEN: ${{ github.token }}
run: |
gh api repos/${{ github.repository }}/dispatches \
-f event_type=platform-tests-result \
-f 'client_payload[sha]=${{ inputs.sha || github.sha }}' \
-f 'client_payload[conclusion]=${{ steps.outcome.outputs.conclusion }}' \
-f 'client_payload[title]=${{ steps.outcome.outputs.title }}' \
-f 'client_payload[summary]=${{ steps.outcome.outputs.summary }}' \
-f 'client_payload[details_url]=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
================================================
FILE: .github/workflows/platform-tests-vercel.yml
================================================
name: Platform Tests (Vercel)
on:
workflow_dispatch:
inputs:
sha:
description: 'Commit SHA to test'
required: false
default: ''
workflow_call:
inputs:
sha:
description: 'Commit SHA to test'
required: false
type: string
default: ''
permissions:
contents: read
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
jobs:
test-basic:
if: github.repository == 'sveltejs/kit'
runs-on: ubuntu-latest
timeout-minutes: 15
environment: '@sveltejs/adapter-vercel platform tests'
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.sha || github.sha }}
- uses: ./.github/actions/vercel-deploy
id: deploy
with:
test-app-dir: packages/adapter-vercel/test/apps/basic
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID_BASIC }}
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
- uses: ./.github/actions/platform-test
with:
test-app-dir: packages/adapter-vercel/test/apps/basic
deployment-url: ${{ steps.deploy.outputs.deployment-url }}
================================================
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/kit'
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@v5.0.0
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.x
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
# This expects you to have a script called release which does a build for your packages and calls changeset publish
publish: pnpm changeset:release
version: pnpm changeset:version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_CONFIG_PROVENANCE: true
# TODO alert discord
# - name: Send a Slack notification if a publish happens
# if: steps.changesets.outputs.published == 'true'
# # You can do something when a publish happens.
# run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!"
================================================
FILE: .gitignore
================================================
.DS_Store
node_modules
dist
test-results/
package-lock.json
yarn.lock
vite.config.js.timestamp-*
/packages/package/test/**/package
/documentation/types.js
.env
.vercel_build_output
.svelte-kit
.cloudflare
.pnpm-debug.log
.netlify
.turbo
.vercel
.test-tmp
symlink-from
.idea/
_tmp_flaky_test_output.txt
================================================
FILE: .npmrc
================================================
link-workspace-packages = true
shell-emulator = true
================================================
FILE: .prettierrc
================================================
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"overrides": [
{
"files": ["*.svelte"],
"options": {
"bracketSameLine": false
}
},
{
"files": ["packages/*/README.md"],
"options": {
"useTabs": false,
"tabWidth": 2
}
},
{
"files": [
"**/CHANGELOG.md",
"**/vite.config.js.timestamp-*",
"**/.netlify/**",
"**/.svelte-kit/**",
"**/.custom-out-dir/**",
"**/test-results/**",
"**/.vercel/**",
"**/.wrangler/**",
"documentation/**/*.md",
"packages/package/test/fixtures/**/expected/**/*",
"packages/package/test/watch/expected/**/*",
"packages/package/test/watch/package/**/*",
"packages/kit/src/core/postbuild/fixtures/**/*",
"packages/adapter-cloudflare/test/apps/workers/dist/**/*",
"packages/*/test/**/build/**"
],
"options": {
"rangeEnd": 0
}
}
]
}
================================================
FILE: .well-known/funding-manifest-urls
================================================
https://svelte.dev/funding.json
================================================
FILE: AGENTS.md
================================================
# SvelteKit Coding Agent Guide
This guide is for AI coding agents working in the SvelteKit monorepo.
**Important:** Read and follow [`CONTRIBUTING.md`](./CONTRIBUTING.md) as well - it contains essential information about testing, code structure, and contribution guidelines that applies here.
## Quick Reference
### Essential Commands
```bash
# Initial setup (takes 3-4 minutes, set 10+ min timeout)
pnpm install --frozen-lockfile
# Build all packages (~1-2 seconds)
pnpm build
# Format code (~15 seconds)
pnpm run format
# Lint (takes 2-3 minutes, set 5+ min timeout)
pnpm run lint
# Type checking (takes 3-4 minutes, set 8+ min timeout)
pnpm run check
```
### Testing Commands
```bash
# Unit tests only (fastest - ~6 seconds)
pnpm -F @sveltejs/kit test:unit
# Run a single unit test file
pnpm -F @sveltejs/kit test:unit:dev path/to/test.spec.js
# Integration tests (10-30 minutes, set 60+ min timeout)
pnpm test:kit
# A single integration test suite (name of suite found in packages/kit/test/apps/*/package.json)
pnpm -F {name-of-suite} test
# Run single Playwright test (must use workdir - no pnpm -F shorthand)
cd packages/kit/test/apps/basics && npx playwright test --grep "test name"
# Other package tests (5-15 minutes, set 30+ min timeout)
pnpm test:others
```
### Pre-submission Checklist
Before opening a PR, **all of these must pass** (see also the [PR template](./.github/PULL_REQUEST_TEMPLATE.md)):
1. `pnpm run format` - Auto-format code
2. `pnpm run lint` - Check code style (don't cancel early)
3. `pnpm run check` - Type checking (don't cancel early)
4. `pnpm -F @sveltejs/kit test:unit` - Run unit tests
5. For @sveltejs/kit changes: `pnpm -F @sveltejs/kit prepublishOnly` - Generate types
6. Run `pnpm changeset` to document changes (prefix with `fix`, `feat`, `breaking`, or `chore`)
## Code Style Examples
The coding style guidelines are in `CONTRIBUTING.md`. Here are additional examples:
### Imports
```javascript
// JSDoc type imports at the top
/** @import { Handle, RequestEvent } from '@sveltejs/kit' */
// Named imports (no default exports)
import { HttpError, SvelteKitError } from '@sveltejs/kit/internal';
```
### Functions
```javascript
// Exported named functions (no default exports)
export function coalesce_to_error(err) {
// Implementation
}
// JSDoc for all parameters and return types
/**
* @param {unknown} error
* @returns {Error}
*/
export function coalesce_to_error(error) {
// Implementation
}
// Use arrow functions for callbacks
const handler = (event) => {
/* ... */
};
```
### Error Handling
```javascript
// Type checking with instanceof
if (error instanceof HttpError || error instanceof SvelteKitError) {
// Handle
}
// Graceful fallbacks
const status = error?.status ?? 500;
// Optional chaining and nullish coalescing
const content_type = request.headers.get('content-type')?.split(';', 1)[0];
```
### TypeScript/JSDoc
- Use JSDoc annotations for all function parameters and return types
- Complex types: `/** @type {Array<{ type: string, subtype: string }>} */`
- Type casting when needed: `/** @type {Error} */ (err)`
- Enable strict mode: `checkJs: true`, `strict: true` in tsconfig.json
### Formatting (via Prettier)
- **Tabs for indentation** (not spaces)
- **Single quotes** for strings
- **No trailing commas**
- **100 character line width**
- Files are auto-formatted by `pnpm run format`
### Comments
````javascript
// JSDoc with usage examples for public APIs
/**
* Sequence multiple handle functions
*
* @example
* ```js
* export const handle = sequence(first, second);
* ```
*
* @param {...Handle} handlers
* @returns {Handle}
*/
// Inline comments for clarifications
// no match equals invalid header — ignore
````
## Key Packages
- `@sveltejs/kit` - Main framework (`packages/kit/`)
- `adapter-*` - Platform adapters (node, cloudflare, netlify, vercel, static, auto)
- `@sveltejs/package` - Package building utilities
- `@sveltejs/enhanced-img` - Enhanced image component
- `@sveltejs/amp` - AMP support
## Troubleshooting
- **Browser tests fail**: `pnpm playwright install chromium`
- **Build failures**: Ensure `pnpm install --frozen-lockfile` completed
- **Type errors**: Run `pnpm -F @sveltejs/kit prepublishOnly`
- **Lint issues**: Run `pnpm run format` first
================================================
FILE: CONTRIBUTING.md
================================================
# SvelteKit Contributing Guide
## Preparing
This is a monorepo, meaning the repo holds multiple packages. It requires the use of [pnpm](https://pnpm.io/). You can [install pnpm](https://pnpm.io/installation) with:
```sh
npm i -g pnpm
```
`pnpm` commands run in the project's root directory will run on all sub-projects. You can checkout the code and install the dependencies with:
```sh
git clone git@github.com:sveltejs/kit.git
cd kit
pnpm install
```
## Testing Changes
### Playground
You can use the playground at [`playgrounds/basic`](./playgrounds/basic/) to experiment with your changes to SvelteKit locally.
### Linking local changes
If you want to test against an existing project, you can use [pnpm `overrides`](https://pnpm.io/package_json#pnpmoverrides) in that project:
```jsonc
{
// ...
"pnpm": {
"overrides": {
"@sveltejs/kit": "link:../path/to/svelte-kit/packages/kit",
// additionally/optional the adapter you're using
"@sveltejs/adapter-auto": "link:../path/to/svelte-kit/packages/adapter-auto"
}
}
}
```
### Testing PR changes
Each pull request will be built and published via [pkg.pr.new/](https://pkg.pr.new/). You can test the change by installing the package with your PR number:
```
npm add https://pkg.pr.new/sveltejs/kit/@sveltejs/kit@YOUR_PR_NUMBER_GOES_HERE
```
## Code structure
Entry points to be aware of are:
- [`packages/package`](https://github.com/sveltejs/kit/tree/main/packages/package) - for the `svelte-package` command
- [`packages/kit/src/core`](https://github.com/sveltejs/kit/tree/main/packages/kit/src/core) - code that's called at dev/build-time
- [`packages/kit/src/core/sync`](https://github.com/sveltejs/kit/tree/main/packages/kit/src/core/sync) - for `svelte-kit sync`, which regenerates routing info and type definitions
- [`packages/kit/src/runtime`](https://github.com/sveltejs/kit/tree/main/packages/kit/src/runtime) - code that's called at runtime
- [`packages/kit/src/exports/vite`](https://github.com/sveltejs/kit/tree/main/packages/kit/src/exports/vite) - for all the Vite plugin related stuff
- [`packages/adapter-[platform]`](https://github.com/sveltejs/kit/tree/main/packages) - for the various SvelteKit-provided adapters
## Good first issues
If you're looking for an issue to tackle to get familiar with the codebase and test suite, the [**low hanging fruit**](https://github.com/sveltejs/kit/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22) label contains issues that ought to be relatively straightforward to fix. Check to see if a PR already exists for an issue before working on it!
Issues that have a clear solution but which _may_ be slightly more involved have the [**ready to implement**](https://github.com/sveltejs/kit/issues?q=is%3Aissue+is%3Aopen+label%3A%22ready+to+implement%22) label.
Issues with the [**soon**](https://github.com/sveltejs/kit/issues?q=is%3Aissue+is%3Aopen+milestone%3Asoon) milestone are higher priority than issues with the [**later**](https://github.com/sveltejs/kit/issues?q=is%3Aissue+is%3Aopen+milestone%3Alater+) label (though PRs for 'later' issues are still welcome, especially if you're affected by them).
## Testing
Run `pnpm test:kit` to run the tests from the `packages/kit` directory. You can also run `pnpm test:others` to run tests from all packages **except** the `packages/kit` directory. Browser tests live in subdirectories of `packages/kit/test` such as `packages/kit/test/apps/basics`.
You can run the tests for only a single package by first moving to that directory. E.g. `cd packages/kit`.
For some packages you must rebuild each time before running the tests if you've made code changes. These packages have a `build` command. Packages like `packages/kit` don't require a build step.
To run a single integration test or otherwise control the running of the tests locally see [the Playwright CLI docs](https://playwright.dev/docs/test-cli). Note that you will need to run these commands from the test project directory such as `packages/kit/test/apps/basics`.
You can run the test server with `cd packages/kit/test/apps/basics; pnpm run dev` to hit it with your browser. The Playwright Inspector offers similar functionality.
You may need to install some dependencies first, e.g. with `npx playwright install-deps` (which only works on Ubuntu).
If there are tests that fail on the CI, you can retrieve the failed screenshots by going to the summary page of the CI run. You can usually find this by clicking on "Details" of the check results, clicking "Summary" at the top-left corner, and then scrolling to the bottom "Artifacts" section to download the archive.
It is very easy to introduce flakiness in a browser test. If you try to fix the flakiness in a test, you can run it until failure to gain some confidence you've fixed the test with a command like:
```
npx playwright test --workers=1 --repeat-each 1000 --max-failures 1 -g "accepts a Request object"
```
## Working on Vite and other dependencies
If you would like to test local changes to Vite or another dependency, you can build it and then use [`pnpm.overrides`](https://pnpm.io/package_json#pnpmoverrides). Please note that `pnpm.overrides` must be specified in the root `package.json` and you must first list the package as a dependency in the root `package.json`:
```jsonc
{
// ...
"dependencies": {
"vite": "^4.0.0"
},
"pnpm": {
"overrides": {
"vite": "link:../path/to/vite/packages/vite"
}
}
}
```
## Documentation changes
All documentation for SvelteKit is in the [`documentation` directory](https://github.com/sveltejs/kit/tree/main/documentation), and any improvements should be made as a Pull Request to this repository. The site itself is located in the [`sveltejs/svelte.dev` repo](https://github.com/sveltejs/svelte.dev) and can be run locally to preview changes.
## Sending PRs
When you open a PR, the [PR template](./.github/PULL_REQUEST_TEMPLATE.md) includes a checklist. Please read it carefully and don't delete it.
**Run tests locally before submitting.** CI runs the full suite, but catching failures early saves time for everyone. At a minimum, run `pnpm format`, `pnpm lint`, `pnpm check`, and `pnpm -F @sveltejs/kit test:unit`.
### Coding style
There are a few guidelines we follow:
- Internal variables are written with `snake_case` while external APIs are written with `camelCase`
- Provide a single object as the argument to public APIs. This object can have multiple properties
- Avoid creating new test projects under `packages/kit/test/apps` but reuse an existing one when possible
- Ensure `pnpm lint` and `pnpm check` pass. You can run `pnpm format` to format the code
To use the git hooks in the repo, which will save you from waiting for CI to tell you that you forgot to lint, run this:
```sh
git config core.hookspath .githooks
```
### Generating changelogs
For changes to be reflected in package changelogs, run `pnpm changeset` and follow the prompts.
### Type changes
If your PR changes the generated types of SvelteKit, run `pnpm generate:types` inside `packages/kit` and commit the new output (don't format it with Prettier!). Review the changes carefully to ensure there are no unwanted changes. If you don't commit type changes, CI will fail.
## Releases
The [Changesets GitHub action](https://github.com/changesets/action#with-publishing) will create and update a PR that applies changesets and publishes new versions of changed packages to npm.
New packages will need to be published manually the first time if they are scoped to the `@sveltejs` organisation, by running this from the package directory:
```sh
npm publish --access=public
```
================================================
FILE: FUNDING.json
================================================
{
"drips": {
"ethereum": {
"ownedBy": "0xCE08E02c37d90d75C2bf7D9e55f7606C8DB80E70"
}
}
}
================================================
FILE: LICENSE
================================================
Copyright (c) 2020 [these people](https://github.com/sveltejs/kit/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
================================================
[](https://svelte.dev/chat)
# SvelteKit
Web development, streamlined. Read the [documentation](https://svelte.dev/docs/kit) to get started.
### Packages
| Package | Changelog |
| --------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [@sveltejs/kit](packages/kit) | [Changelog](packages/kit/CHANGELOG.md) |
| [@sveltejs/adapter-auto](packages/adapter-auto) | [Changelog](packages/adapter-auto/CHANGELOG.md) |
| [@sveltejs/adapter-cloudflare](packages/adapter-cloudflare) | [Changelog](packages/adapter-cloudflare/CHANGELOG.md) |
| [@sveltejs/adapter-netlify](packages/adapter-netlify) | [Changelog](packages/adapter-netlify/CHANGELOG.md) |
| [@sveltejs/adapter-node](packages/adapter-node) | [Changelog](packages/adapter-node/CHANGELOG.md) |
| [@sveltejs/adapter-static](packages/adapter-static) | [Changelog](packages/adapter-static/CHANGELOG.md) |
| [@sveltejs/adapter-vercel](packages/adapter-vercel) | [Changelog](packages/adapter-vercel/CHANGELOG.md) |
| [@sveltejs/amp](packages/amp) | [Changelog](packages/amp/CHANGELOG.md) |
| [@sveltejs/enhanced-img](packages/enhanced-img) | [Changelog](packages/enhanced-img/CHANGELOG.md) |
| [@sveltejs/package](packages/package) | [Changelog](packages/package/CHANGELOG.md) |
[Additional adapters](https://sveltesociety.dev/packages?category=sveltekit-adapters) are maintained by the community.
## Bug reporting
Please make sure the issue you're reporting involves SvelteKit. Many issues related to how a project builds originate from [Vite](https://vitejs.dev/), which is used to build a SvelteKit project. You can create a new Vite project with `npm create vite@latest` for client-side only repros and `npm create vite-extra@latest` for SSR or library repros.
If an issue originates from Vite, please report it in the [Vite issue tracker](https://github.com/vitejs/vite/issues).
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md) for information on how to develop SvelteKit locally.
## 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.
## License
[MIT](https://github.com/sveltejs/kit/blob/main/LICENSE)
================================================
FILE: documentation/docs/10-getting-started/10-introduction.md
================================================
---
title: Introduction
---
## Before we begin
> [!NOTE] If you're new to Svelte or SvelteKit we recommend checking out the [interactive tutorial](/tutorial/kit).
>
> If you get stuck, reach out for help in the [Discord chatroom](/chat).
## What is SvelteKit?
SvelteKit is a framework for rapidly developing robust, performant web applications using [Svelte](../svelte). If you're coming from React, SvelteKit is similar to Next. If you're coming from Vue, SvelteKit is similar to Nuxt.
To learn more about the kinds of applications you can build with SvelteKit, see the [documentation regarding project types](project-types).
## What is Svelte?
In short, Svelte is a way of writing user interface components — like a navigation bar, comment section, or contact form — that users see and interact with in their browsers. The Svelte compiler converts your components to JavaScript that can be run to render the HTML for the page and to CSS that styles the page. You don't need to know Svelte to understand the rest of this guide, but it will help. If you'd like to learn more, check out [the Svelte tutorial](/tutorial).
## SvelteKit vs Svelte
Svelte renders UI components. You can compose these components and render an entire page with just Svelte, but you need more than just Svelte to write an entire app.
SvelteKit helps you build web apps while following modern best practices and providing solutions to common development challenges. It offers everything from basic functionalities — like a [router](glossary#Routing) that updates your UI when a link is clicked — to more advanced capabilities. Its extensive list of features includes [build optimizations](https://vitejs.dev/guide/features.html#build-optimizations) to load only the minimal required code; [offline support](service-workers); [preloading](link-options#data-sveltekit-preload-data) pages before user navigation; [configurable rendering](page-options) to handle different parts of your app on the server via [SSR](glossary#SSR), in the browser through [client-side rendering](glossary#CSR), or at build-time with [prerendering](glossary#Prerendering); [image optimization](images); and much more. Building an app with all the modern best practices is fiendishly complicated, but SvelteKit does all the boring stuff for you so that you can get on with the creative part.
It reflects changes to your code in the browser instantly to provide a lightning-fast and feature-rich development experience by leveraging [Vite](https://vitejs.dev/) with a [Svelte plugin](https://github.com/sveltejs/vite-plugin-svelte) to do [Hot Module Replacement (HMR)](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/config.md#hot).
================================================
FILE: documentation/docs/10-getting-started/20-creating-a-project.md
================================================
---
title: Creating a project
---
The easiest way to start building a SvelteKit app is to run `npx sv create`:
```sh
npx sv create my-app
cd my-app
npm run dev
```
The first command will scaffold a new project in the `my-app` directory asking if you'd like to set up some basic tooling such as TypeScript. See [the CLI docs](/docs/cli/overview) for information about these options and [the integrations page](./integrations) for pointers on setting up additional tooling. `npm run dev` will then start the development server on [localhost:5173](http://localhost:5173) - make sure you install dependencies before running this if you didn't do so during project creation.
There are two basic concepts:
- Each page of your app is a [Svelte](../svelte) component
- You create pages by adding files to the `src/routes` directory of your project. These will be server-rendered so that a user's first visit to your app is as fast as possible, then a client-side app takes over
Try editing the files to get a feel for how everything works.
## Editor setup
We recommend using [Visual Studio Code (aka VS Code)](https://code.visualstudio.com/download) with [the Svelte extension](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode), but [support also exists for numerous other editors](https://sveltesociety.dev/collection/editor-support-c85c080efc292a34).
================================================
FILE: documentation/docs/10-getting-started/25-project-types.md
================================================
---
title: Project types
---
SvelteKit offers configurable rendering, which allows you to build and deploy your project in several different ways. You can build all of the below types of applications and more with SvelteKit. Rendering settings are not mutually exclusive and you may choose the optimal manner with which to render different parts of your application.
If you don't have a particular way you'd like to build your application in mind, don't worry! The way your application is built, deployed, and rendered is controlled by which adapter you've chosen and a small amount of configuration and these can always be changed later. The [project structure](project-structure) and [routing](glossary#Routing) will be the same regardless of the project type that you choose.
## Default rendering
By default, when a user visits a site, SvelteKit will render the first page with [server-side rendering (SSR)](glossary#SSR) and subsequent pages with [client-side rendering (CSR)](glossary#CSR). Using SSR for the initial render improves SEO and perceived performance of the initial page load. Client-side rendering then takes over and updates the page without having to rerender common components, which is typically faster and eliminates a flash when navigating between pages. Apps built with this hybrid rendering approach have also been called [transitional apps](https://www.youtube.com/watch?v=860d8usGC0o).
## Static site generation
You can use SvelteKit as a [static site generator (SSG)](glossary#SSG) that fully [prerenders](glossary#Prerendering) your site with static rendering using [`adapter-static`](adapter-static). You may also use [the prerender option](page-options#prerender) to prerender only some pages and then choose a different adapter with which to dynamically server-render other pages.
Tools built solely to do static site generation may scale the prerendering process more efficiently during build when rendering a very large number of pages. When working with very large statically generated sites, you can avoid long build times with [Incremental Static Regeneration (ISR) if using `adapter-vercel`](adapter-vercel#Incremental-Static-Regeneration). And in contrast to purpose-built SSGs, SvelteKit allows for nicely mixing and matching different rendering types on different pages.
## Single-page app
[Single-page apps (SPAs)](glossary#SPA) exclusively use [client-side rendering (CSR)](glossary#CSR). You can [build single-page apps (SPAs)](single-page-apps) with SvelteKit. As with all types of SvelteKit applications, you can write your backend in SvelteKit or [another language or framework](#Separate-backend). If you are building an application with no backend or a [separate backend](#Separate-backend), you can simply skip over and ignore the parts of the docs talking about `server` files.
## Multi-page app
SvelteKit isn't typically used to build [traditional multi-page apps](glossary#MPA). However, in SvelteKit you can remove all JavaScript on a page with [`csr = false`](page-options#csr), which will render subsequent links on the server, or you can use [`data-sveltekit-reload`](link-options#data-sveltekit-reload) to render specific links on the server.
## Separate backend
If your backend is written in another language such as Go, Java, PHP, Ruby, Rust, or C#, there are a couple of ways that you can deploy your application. The most recommended way would be to deploy your SvelteKit frontend separately from your backend utilizing `adapter-node` or a serverless adapter. Some users prefer not to have a separate process to manage and decide to deploy their application as a [single-page app (SPA)](single-page-apps) served by their backend server, but note that single-page apps have worse SEO and performance characteristics.
If you are using an external backend, you can simply skip over and ignore the parts of the docs talking about `server` files. You may also want to reference [the FAQ about how to make calls to a separate backend](faq#How-do-I-use-a-different-backend-API-server).
## Serverless app
SvelteKit apps are simple to run on serverless platforms. [The default zero config adapter](adapter-auto) will automatically run your app on a number of supported platforms or you can use [`adapter-vercel`](adapter-vercel), [`adapter-netlify`](adapter-netlify), or [`adapter-cloudflare`](adapter-cloudflare) to provide platform-specific configuration. And [community adapters](/packages#sveltekit-adapters) allow you to deploy your application to almost any serverless environment. Some of these adapters such as [`adapter-vercel`](adapter-vercel) and [`adapter-netlify`](adapter-netlify) offer an `edge` option, to support [edge rendering](glossary#Edge) for improved latency.
## Your own server
You can deploy to your own server or VPS using [`adapter-node`](adapter-node).
## Container
You can use [`adapter-node`](adapter-node) to run a SvelteKit app within a container such as Docker or LXC.
## Library
You can create a library to be used by other Svelte apps with the [`@sveltejs/package`](packaging) add-on to SvelteKit by choosing the library option when running [`sv create`](/docs/cli/sv-create).
## Offline app
SvelteKit has full support for [service workers](service-workers) allowing you to build many types of applications such as offline apps and [progressive web apps](glossary#PWA).
## Mobile app
You can turn a [SvelteKit SPA](single-page-apps) into a mobile app with [Tauri](https://v2.tauri.app/start/frontend/sveltekit/) or [Capacitor](https://capacitorjs.com/solution/svelte). Mobile features like the camera, geolocation, and push notifications are available via plugins for both platforms.
These mobile development platforms work by starting a local web server and then serving your application like a static host on your phone. You may find [`bundleStrategy: 'single'`](configuration#output) to be a helpful option to limit the number of requests made. E.g. at the time of writing, the Capacitor local server uses HTTP/1, which limits the number of concurrent connections.
## Desktop app
You can turn a [SvelteKit SPA](single-page-apps) into a desktop app with [Tauri](https://v2.tauri.app/start/frontend/sveltekit/), [Wails](https://wails.io/docs/guides/sveltekit/), or [Electron](https://www.electronjs.org/).
## Browser extension
You can build browser extensions using either [`adapter-static`](adapter-static) or [community adapters](/packages#sveltekit-adapters) specifically tailored towards browser extensions.
## Embedded device
Because of its efficient rendering, Svelte can be run on low power devices. Embedded devices like microcontrollers and TVs may limit the number of concurrent connections. In order to reduce the number of concurrent requests, you may find [`bundleStrategy: 'single'`](configuration#output) to be a helpful option in this deployment configuration.
================================================
FILE: documentation/docs/10-getting-started/30-project-structure.md
================================================
---
title: Project structure
---
A typical SvelteKit project looks like this:
```tree
my-project/
├ src/
│ ├ lib/
│ │ ├ server/
│ │ │ └ [your server-only lib files]
│ │ └ [your lib files]
│ ├ params/
│ │ └ [your param matchers]
│ ├ routes/
│ │ └ [your routes]
│ ├ app.html
│ ├ error.html
│ ├ hooks.client.js
│ ├ hooks.server.js
│ ├ service-worker.js
│ └ instrumentation.server.js
├ static/
│ └ [your static assets]
├ tests/
│ └ [your tests]
├ package.json
├ svelte.config.js
├ tsconfig.json
└ vite.config.js
```
You'll also find common files like `.gitignore` and `.npmrc` (and `.prettierrc` and `eslint.config.js` and so on, if you chose those options when running `npx sv create`).
## Project files
### src
The `src` directory contains the meat of your project. Everything except `src/routes` and `src/app.html` is optional.
- `lib` contains your library code (utilities and components), which can be imported via the [`$lib`]($lib) alias, or packaged up for distribution using [`svelte-package`](packaging)
- `server` contains your server-only library code. It can be imported by using the [`$lib/server`](server-only-modules) alias. SvelteKit will prevent you from importing these in client code.
- `params` contains any [param matchers](advanced-routing#Matching) your app needs
- `routes` contains the [routes](routing) of your application. You can also colocate other components that are only used within a single route here
- `app.html` is your page template — an HTML document containing the following placeholders:
- `%sveltekit.head%` — `<link>` and `<script>` elements needed by the app, plus any `<svelte:head>` content
- `%sveltekit.body%` — the markup for a rendered page. This should live inside a `<div>` or other element, rather than directly inside `<body>`, to prevent bugs caused by browser extensions injecting elements that are then destroyed by the hydration process. SvelteKit will warn you in development if this is not the case
- `%sveltekit.assets%` — either [`paths.assets`](configuration#paths), if specified, or a relative path to [`paths.base`](configuration#paths)
- `%sveltekit.nonce%` — a [CSP](configuration#csp) nonce for manually included links and scripts, if used
- `%sveltekit.env.[NAME]%` - this will be replaced at render time with the `[NAME]` environment variable, which must begin with the [`publicPrefix`](configuration#env) (usually `PUBLIC_`). It will fallback to `''` if not matched.
- `%sveltekit.version%` — the app version, which can be specified with the [`version`](configuration#version) configuration
- `error.html` is the page that is rendered when everything else fails. It can contain the following placeholders:
- `%sveltekit.status%` — the HTTP status
- `%sveltekit.error.message%` — the error message
- `hooks.client.js` contains your client [hooks](hooks)
- `hooks.server.js` contains your server [hooks](hooks)
- `service-worker.js` contains your [service worker](service-workers)
- `instrumentation.server.js` contains your [observability](observability) setup and instrumentation code
- Requires adapter support. If your adapter supports it, it is guaranteed to run prior to loading and running your application code.
(Whether the project contains `.js` or `.ts` files depends on whether you opt to use TypeScript when you create your project.)
If you added [Vitest](https://vitest.dev) when you set up your project, your unit tests will live in the `src` directory with a `.test.js` extension.
### static
Any static assets that should be served without any alteration to the name — such as `robots.txt` — go in here. It's generally preferable to minimize the number of assets in `static/` and instead `import` them. Using an `import` allows [Vite's built-in handling](images#Vite's-built-in-handling) to give a unique name to an asset based on a hash of its contents so that it can be cached.
### tests
If you added [Playwright](https://playwright.dev/) for browser testing when you set up your project, the tests will live in this directory.
### package.json
Your `package.json` file must include `@sveltejs/kit`, `svelte` and `vite` as `devDependencies`.
When you create a project with `npx sv create`, you'll also notice that `package.json` includes `"type": "module"`. This means that `.js` files are interpreted as native JavaScript modules with `import` and `export` keywords. Legacy CommonJS files need a `.cjs` file extension.
### svelte.config.js
This file contains your Svelte and SvelteKit [configuration](configuration).
### tsconfig.json
This file (or `jsconfig.json`, if you prefer type-checked `.js` files over `.ts` files) configures TypeScript, if you added typechecking during `npx sv create`. Since SvelteKit relies on certain configuration being set a specific way, it generates its own `.svelte-kit/tsconfig.json` file which your own config `extends`. To make changes to top-level options such as `include` and `exclude`, we recommend extending the generated config; see the [`typescript.config` setting](configuration#typescript) for more details.
### vite.config.js
A SvelteKit project is really just a [Vite](https://vitejs.dev) project that uses the [`@sveltejs/kit/vite`](@sveltejs-kit-vite) plugin, along with any other [Vite configuration](https://vitejs.dev/config/).
## Other files
### .svelte-kit
As you develop and build your project, SvelteKit will generate files in a `.svelte-kit` directory (configurable as [`outDir`](configuration#outDir)). You can ignore its contents, and delete them at any time (they will be regenerated when you next `dev` or `build`).
================================================
FILE: documentation/docs/10-getting-started/40-web-standards.md
================================================
---
title: Web standards
---
Throughout this documentation, you'll see references to the standard [Web APIs](https://developer.mozilla.org/en-US/docs/Web/API) that SvelteKit builds on top of. Rather than reinventing the wheel, we _use the platform_, which means your existing web development skills are applicable to SvelteKit. Conversely, time spent learning SvelteKit will help you be a better web developer elsewhere.
These APIs are available in all modern browsers and in many non-browser environments like Cloudflare Workers, Deno, and Vercel Functions. During development, and in [adapters](adapters) for Node-based environments (including AWS Lambda), they're made available via polyfills where necessary (for now, that is — Node is rapidly adding support for more web standards).
In particular, you'll get comfortable with the following:
## Fetch APIs
SvelteKit uses [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch) for getting data from the network. It's available in [hooks](hooks) and [server routes](routing#server) as well as in the browser.
> [!NOTE] A special version of `fetch` is available in [`load`](load) functions, [server hooks](hooks#Server-hooks) and [API routes](routing#server) for invoking endpoints directly during server-side rendering, without making an HTTP call, while preserving credentials. (To make credentialled fetches in server-side code outside `load`, you must explicitly pass `cookie` and/or `authorization` headers.) It also allows you to make relative requests, whereas server-side `fetch` normally requires a fully qualified URL.
Besides `fetch` itself, the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) includes the following interfaces:
### Request
An instance of [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) is accessible in [hooks](hooks) and [server routes](routing#server) as `event.request`. It contains useful methods like `request.json()` and `request.formData()` for getting data that was posted to an endpoint.
### Response
An instance of [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) is returned from `await fetch(...)` and handlers in `+server.js` files. Fundamentally, a SvelteKit app is a machine for turning a `Request` into a `Response`.
### Headers
The [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) interface allows you to read incoming `request.headers` and set outgoing `response.headers`. For example, you can get the `request.headers` as shown below, and use the [`json` convenience function](@sveltejs-kit#json) to send modified `response.headers`:
```js
// @errors: 2461
/// file: src/routes/what-is-my-user-agent/+server.js
import { json } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export function GET({ request }) {
// log all headers
console.log(...request.headers);
// create a JSON Response using a header we received
return json({
// retrieve a specific header
userAgent: request.headers.get('user-agent')
}, {
// set a header on the response
headers: { 'x-custom-header': 'potato' }
});
}
```
## FormData
When dealing with HTML native form submissions you'll be working with [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) objects.
```js
// @errors: 2461
/// file: src/routes/hello/+server.js
import { json } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export async function POST(event) {
const body = await event.request.formData();
// log all fields
console.log([...body]);
return json({
// get a specific field's value
name: body.get('name') ?? 'world'
});
}
```
## Stream APIs
Most of the time, your endpoints will return complete data, as in the `userAgent` example above. Sometimes, you may need to return a response that's too large to fit in memory in one go, or is delivered in chunks, and for this the platform provides [streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API) — [ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream), [WritableStream](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) and [TransformStream](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream).
## URL APIs
URLs are represented by the [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) interface, which includes useful properties like `origin` and `pathname` (and, in the browser, `hash`). This interface shows up in various places — `event.url` in [hooks](hooks) and [server routes](routing#server), [`page.url`]($app-state) in [pages](routing#page), `from` and `to` in [`beforeNavigate` and `afterNavigate`]($app-navigation) and so on.
### URLSearchParams
Wherever you encounter a URL, you can access query parameters via `url.searchParams`, which is an instance of [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams):
```js
// @filename: ambient.d.ts
declare global {
const url: URL;
}
export {};
// @filename: index.js
// ---cut---
const foo = url.searchParams.get('foo');
```
## Web Crypto
The [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is made available via the `crypto` global. It's used internally for [Content Security Policy](configuration#csp) headers, but you can also use it for things like generating UUIDs:
```js
const uuid = crypto.randomUUID();
```
================================================
FILE: documentation/docs/10-getting-started/index.md
================================================
---
title: Getting started
---
================================================
FILE: documentation/docs/20-core-concepts/10-routing.md
================================================
---
title: Routing
---
At the heart of SvelteKit is a _filesystem-based router_. The routes of your app — i.e. the URL paths that users can access — are defined by the directories in your codebase:
- `src/routes` is the root route
- `src/routes/about` creates an `/about` route
- `src/routes/blog/[slug]` creates a route with a _parameter_, `slug`, that can be used to load data dynamically when a user requests a page like `/blog/hello-world`
> [!NOTE] You can change `src/routes` to a different directory by editing the [project config](configuration).
Each route directory contains one or more _route files_, which can be identified by their `+` prefix.
We'll introduce these files in a moment in more detail, but here are a few simple rules to help you remember how SvelteKit's routing works:
* All files can run on the server
* All files run on the client except `+server` files
* `+layout` and `+error` files apply to subdirectories as well as the directory they live in
## +page
### +page.svelte
A `+page.svelte` component defines a page of your app. By default, pages are rendered both on the server ([SSR](glossary#SSR)) for the initial request and in the browser ([CSR](glossary#CSR)) for subsequent navigation.
```svelte
<!--- file: src/routes/+page.svelte --->
<h1>Hello and welcome to my site!</h1>
<a href="/about">About my site</a>
```
```svelte
<!--- file: src/routes/about/+page.svelte --->
<h1>About this site</h1>
<p>TODO...</p>
<a href="/">Home</a>
```
> [!NOTE] SvelteKit uses `<a>` elements to navigate between routes, rather than a framework-specific `<Link>` component.
Pages can receive data from `load` functions via the `data` prop.
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
</script>
<h1>{data.title}</h1>
<div>{@html data.content}</div>
```
As of 2.24, pages also receive a `params` prop which is typed based on the route parameters. This is particularly useful alongside [remote functions](remote-functions):
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
import { getPost } from '../blog.remote';
/** @type {import('./$types').PageProps} */
let { params } = $props();
const post = $derived(await getPost(params.slug));
</script>
<h1>{post.title}</h1>
<div>{@html post.content}</div>
```
> [!LEGACY]
> `PageProps` was added in 2.16.0. In earlier versions, you had to type the `data` property manually with `PageData` instead, see [$types](#\$types).
>
> In Svelte 4, you'd use `export let data` instead.
### +page.js
Often, a page will need to load some data before it can be rendered. For this, we add a `+page.js` module that exports a `load` function:
```js
/// file: src/routes/blog/[slug]/+page.js
import { error } from '@sveltejs/kit';
/** @type {import('./$types').PageLoad} */
export function load({ params }) {
if (params.slug === 'hello-world') {
return {
title: 'Hello world!',
content: 'Welcome to our blog. Lorem ipsum dolor sit amet...'
};
}
error(404, 'Not found');
}
```
This function runs alongside `+page.svelte`, which means it runs on the server during server-side rendering and in the browser during client-side navigation. See [`load`](load) for full details of the API.
As well as `load`, `+page.js` can export values that configure the page's behaviour:
- `export const prerender = true` or `false` or `'auto'`
- `export const ssr = true` or `false`
- `export const csr = true` or `false`
You can find more information about these in [page options](page-options).
### +page.server.js
If your `load` function can only run on the server — for example, if it needs to fetch data from a database or you need to access private [environment variables]($env-static-private) like API keys — then you can rename `+page.js` to `+page.server.js` and change the `PageLoad` type to `PageServerLoad`.
```js
/// file: src/routes/blog/[slug]/+page.server.js
// @filename: ambient.d.ts
declare global {
const getPostFromDatabase: (slug: string) => {
title: string;
content: string;
}
}
export {};
// @filename: index.js
// ---cut---
import { error } from '@sveltejs/kit';
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
const post = await getPostFromDatabase(params.slug);
if (post) {
return post;
}
error(404, 'Not found');
}
```
During client-side navigation, SvelteKit will load this data from the server, which means that the returned value must be serializable using [devalue](https://github.com/rich-harris/devalue). See [`load`](load) for full details of the API.
Like `+page.js`, `+page.server.js` can export [page options](page-options) — `prerender`, `ssr` and `csr`.
A `+page.server.js` file can also export _actions_. If `load` lets you read data from the server, `actions` let you write data _to_ the server using the `<form>` element. To learn how to use them, see the [form actions](form-actions) section.
## +error
If an error occurs during `load`, SvelteKit will render a default error page. You can customise this error page on a per-route basis by adding an `+error.svelte` file:
```svelte
<!--- file: src/routes/blog/[slug]/+error.svelte --->
<script>
import { page } from '$app/state';
</script>
<h1>{page.status}: {page.error.message}</h1>
```
> [!LEGACY]
> `$app/state` was added in SvelteKit 2.12. If you're using an earlier version or are using Svelte 4, use `$app/stores` instead.
SvelteKit will 'walk up the tree' looking for the closest error boundary — if the file above didn't exist it would try `src/routes/blog/+error.svelte` and then `src/routes/+error.svelte` before rendering the default error page. If _that_ fails (or if the error was thrown from the `load` function of the root `+layout`, which sits 'above' the root `+error`), SvelteKit will bail out and render a static fallback error page, which you can customise by creating a `src/error.html` file.
If the error occurs inside a `load` function in `+layout(.server).js`, the closest error boundary in the tree is an `+error.svelte` file _above_ that layout (not next to it).
If no route can be found (404), `src/routes/+error.svelte` (or the default error page, if that file does not exist) will be used.
> [!NOTE] `+error.svelte` is _not_ used when an error occurs inside [`handle`](hooks#Server-hooks-handle) or a [+server.js](#server) request handler.
You can read more about error handling [here](errors).
## +layout
So far, we've treated pages as entirely standalone components — upon navigation, the existing `+page.svelte` component will be destroyed, and a new one will take its place.
But in many apps, there are elements that should be visible on _every_ page, such as top-level navigation or a footer. Instead of repeating them in every `+page.svelte`, we can put them in _layouts_.
### +layout.svelte
To create a layout that applies to every page, make a file called `src/routes/+layout.svelte`. The default layout (the one that SvelteKit uses if you don't bring your own) looks like this...
```svelte
<script>
let { children } = $props();
</script>
{@render children()}
```
...but we can add whatever markup, styles and behaviour we want. The only requirement is that the component includes a `@render` tag for the page content. For example, let's add a nav bar:
```svelte
<!--- file: src/routes/+layout.svelte --->
<script>
let { children } = $props();
</script>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
<a href="/settings">Settings</a>
</nav>
{@render children()}
```
If we create pages for `/`, `/about` and `/settings`...
```html
/// file: src/routes/+page.svelte
<h1>Home</h1>
```
```html
/// file: src/routes/about/+page.svelte
<h1>About</h1>
```
```html
/// file: src/routes/settings/+page.svelte
<h1>Settings</h1>
```
...the nav will always be visible, and clicking between the three pages will only result in the `<h1>` being replaced.
Layouts can be _nested_. Suppose we don't just have a single `/settings` page, but instead have nested pages like `/settings/profile` and `/settings/notifications` with a shared submenu (for a real-life example, see [github.com/settings](https://github.com/settings)).
We can create a layout that only applies to pages below `/settings` (while inheriting the root layout with the top-level nav):
```svelte
<!--- file: src/routes/settings/+layout.svelte --->
<script>
/** @type {import('./$types').LayoutProps} */
let { data, children } = $props();
</script>
<h1>Settings</h1>
<div class="submenu">
{#each data.sections as section}
<a href="/settings/{section.slug}">{section.title}</a>
{/each}
</div>
{@render children()}
```
> [!LEGACY]
> `LayoutProps` was added in 2.16.0. In earlier versions, you had to [type the properties manually instead](#\$types).
You can see how `data` is populated by looking at the `+layout.js` example in the next section just below.
By default, each layout inherits the layout above it. Sometimes that isn't what you want - in this case, [advanced layouts](advanced-routing#Advanced-layouts) can help you.
### +layout.js
Just like `+page.svelte` loading data from `+page.js`, your `+layout.svelte` component can get data from a [`load`](load) function in `+layout.js`.
```js
/// file: src/routes/settings/+layout.js
/** @type {import('./$types').LayoutLoad} */
export function load() {
return {
sections: [
{ slug: 'profile', title: 'Profile' },
{ slug: 'notifications', title: 'Notifications' }
]
};
}
```
If a `+layout.js` exports [page options](page-options) — `prerender`, `ssr` and `csr` — they will be used as defaults for child pages.
Data returned from a layout's `load` function is also available to all its child pages:
```svelte
<!--- file: src/routes/settings/profile/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
console.log(data.sections); // [{ slug: 'profile', title: 'Profile' }, ...]
</script>
```
> [!NOTE] Often, layout data is unchanged when navigating between pages. SvelteKit will intelligently rerun [`load`](load) functions when necessary.
### +layout.server.js
To run your layout's `load` function on the server, move it to `+layout.server.js`, and change the `LayoutLoad` type to `LayoutServerLoad`.
Like `+layout.js`, `+layout.server.js` can export [page options](page-options) — `prerender`, `ssr` and `csr`.
## +server
As well as pages, you can define routes with a `+server.js` file (sometimes referred to as an 'API route' or an 'endpoint'), which gives you full control over the response. Your `+server.js` file exports functions corresponding to HTTP verbs like `GET`, `POST`, `PATCH`, `PUT`, `DELETE`, `OPTIONS`, and `HEAD` that take a [`RequestEvent`](@sveltejs-kit#RequestEvent) argument and return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object.
For example we could create an `/api/random-number` route with a `GET` handler:
```js
/// file: src/routes/api/random-number/+server.js
import { error } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export function GET({ url }) {
const min = Number(url.searchParams.get('min') ?? '0');
const max = Number(url.searchParams.get('max') ?? '1');
const d = max - min;
if (isNaN(d) || d < 0) {
error(400, 'min and max must be numbers, and min must be less than max');
}
const random = min + Math.random() * d;
return new Response(String(random));
}
```
The first argument to `Response` can be a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream), making it possible to stream large amounts of data or create server-sent events (unless deploying to platforms that buffer responses, like AWS Lambda).
You can use the [`error`](@sveltejs-kit#error), [`redirect`](@sveltejs-kit#redirect) and [`json`](@sveltejs-kit#json) methods from `@sveltejs/kit` for convenience (but you don't have to).
If an error is thrown (either `error(...)` or an unexpected error), the response will be a JSON representation of the error or a fallback error page — which can be customised via `src/error.html` — depending on the `Accept` header. The [`+error.svelte`](#error) component will _not_ be rendered in this case. You can read more about error handling [here](errors).
> [!NOTE] When creating an `OPTIONS` handler, note that Vite will inject `Access-Control-Allow-Origin` and `Access-Control-Allow-Methods` headers — these will not be present in production unless you add them.
> [!NOTE] `+layout` files have no effect on `+server.js` files. If you want to run some logic before each request, add it to the server [`handle`](hooks#Server-hooks-handle) hook.
### Receiving data
By exporting `POST`/`PUT`/`PATCH`/`DELETE`/`OPTIONS`/`HEAD` handlers, `+server.js` files can be used to create a complete API:
```svelte
<!--- file: src/routes/add/+page.svelte --->
<script>
let a = $state(0);
let b = $state(0);
let total = $state(0);
async function add() {
const response = await fetch('/api/add', {
method: 'POST',
body: JSON.stringify({ a, b }),
headers: {
'content-type': 'application/json'
}
});
total = await response.json();
}
</script>
<input type="number" bind:value={a}> +
<input type="number" bind:value={b}> =
{total}
<button onclick={add}>Calculate</button>
```
```js
/// file: src/routes/api/add/+server.js
import { json } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export async function POST({ request }) {
const { a, b } = await request.json();
return json(a + b);
}
```
> [!NOTE] In general, [form actions](form-actions) are a better way to submit data from the browser to the server.
> [!NOTE] If a `GET` handler is exported, a `HEAD` request will return the `content-length` of the `GET` handler's response body.
### Fallback method handler
Exporting the `fallback` handler will match any unhandled request methods, including methods like `MOVE` which have no dedicated export from `+server.js`.
```js
/// file: src/routes/api/add/+server.js
import { json, text } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export async function POST({ request }) {
const { a, b } = await request.json();
return json(a + b);
}
// This handler will respond to PUT, PATCH, DELETE, etc.
/** @type {import('./$types').RequestHandler} */
export async function fallback({ request }) {
return text(`I caught your ${request.method} request!`);
}
```
> [!NOTE] For `HEAD` requests, the `GET` handler takes precedence over the `fallback` handler.
### Content negotiation
`+server.js` files can be placed in the same directory as `+page` files, allowing the same route to be either a page or an API endpoint. To determine which, SvelteKit applies the following rules:
- `PUT`/`PATCH`/`DELETE`/`OPTIONS` requests are always handled by `+server.js` since they do not apply to pages
- `GET`/`POST`/`HEAD` requests are treated as page requests if the `accept` header prioritises `text/html` (in other words, it's a browser page request), else they are handled by `+server.js`.
- Responses to `GET` requests will include a `Vary: Accept` header, so that proxies and browsers cache HTML and JSON responses separately.
## $types
Throughout the examples above, we've been importing types from a `$types.d.ts` file. This is a file SvelteKit creates for you in a hidden directory if you're using TypeScript (or JavaScript with JSDoc type annotations) to give you type safety when working with your root files.
For example, annotating `let { data } = $props()` with `PageProps` (or `LayoutProps`, for a `+layout.svelte` file) tells TypeScript that the type of `data` is whatever was returned from `load`:
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
</script>
```
> [!NOTE]
> The `PageProps` and `LayoutProps` types, added in 2.16.0, are a shortcut for typing the `data` prop as `PageData` or `LayoutData`, as well as other props, such as `form` for pages, or `children` for layouts. In earlier versions, you had to type these properties manually. For example, for a page:
>
> ```js
> /// file: +page.svelte
> /** @type {{ data: import('./$types').PageData, form: import('./$types').ActionData }} */
> let { data, form } = $props();
> ```
>
> Or, for a layout:
>
> ```js
> /// file: +layout.svelte
> /** @type {{ data: import('./$types').LayoutData, children: Snippet }} */
> let { data, children } = $props();
> ```
In turn, annotating the `load` function with `PageLoad`, `PageServerLoad`, `LayoutLoad` or `LayoutServerLoad` (for `+page.js`, `+page.server.js`, `+layout.js` and `+layout.server.js` respectively) ensures that `params` and the return value are correctly typed.
If you're using VS Code or any IDE that supports the language server protocol and TypeScript plugins then you can omit these types _entirely_! Svelte's IDE tooling will insert the correct types for you, so you'll get type checking without writing them yourself. It also works with our command line tool `svelte-check`.
You can read more about omitting `$types` in our [blog post](/blog/zero-config-type-safety) about it.
## Other files
Any other files inside a route directory are ignored by SvelteKit. This means you can colocate components and utility modules with the routes that need them.
If components and modules are needed by multiple routes, it's a good idea to put them in [`$lib`]($lib).
## Further reading
- [Tutorial: Routing](/tutorial/kit/pages)
- [Tutorial: API routes](/tutorial/kit/get-handlers)
- [Docs: Advanced routing](advanced-routing)
================================================
FILE: documentation/docs/20-core-concepts/20-load.md
================================================
---
title: Loading data
---
Before a [`+page.svelte`](routing#page-page.svelte) component (and its containing [`+layout.svelte`](routing#layout-layout.svelte) components) can be rendered, we often need to get some data. This is done by defining `load` functions.
## Page data
A `+page.svelte` file can have a sibling `+page.js` that exports a `load` function, the return value of which is available to the page via the `data` prop:
```js
/// file: src/routes/blog/[slug]/+page.js
/** @type {import('./$types').PageLoad} */
export function load({ params }) {
return {
post: {
title: `Title for ${params.slug} goes here`,
content: `Content for ${params.slug} goes here`
}
};
}
```
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
</script>
<h1>{data.post.title}</h1>
<div>{@html data.post.content}</div>
```
> [!LEGACY]
> Before version 2.16.0, the props of a page and layout had to be typed individually:
> ```js
> /// file: +page.svelte
> /** @type {{ data: import('./$types').PageData }} */
> let { data } = $props();
> ```
>
> In Svelte 4, you'd use `export let data` instead.
Thanks to the generated `$types` module, we get full type safety.
A `load` function in a `+page.js` file runs both on the server and in the browser (unless combined with `export const ssr = false`, in which case it will [only run in the browser](page-options#ssr)). If your `load` function should _always_ run on the server (because it uses private environment variables, for example, or accesses a database) then it would go in a `+page.server.js` instead.
A more realistic version of your blog post's `load` function, that only runs on the server and pulls data from a database, might look like this:
```js
/// file: src/routes/blog/[slug]/+page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function getPost(slug: string): Promise<{ title: string, content: string }>
}
// @filename: index.js
// ---cut---
import * as db from '$lib/server/database';
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
return {
post: await db.getPost(params.slug)
};
}
```
Notice that the type changed from `PageLoad` to `PageServerLoad`, because server `load` functions can access additional arguments. To understand when to use `+page.js` and when to use `+page.server.js`, see [Universal vs server](load#Universal-vs-server).
## Layout data
Your `+layout.svelte` files can also load data, via `+layout.js` or `+layout.server.js`.
```js
/// file: src/routes/blog/[slug]/+layout.server.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function getPostSummaries(): Promise<Array<{ title: string, slug: string }>>
}
// @filename: index.js
// ---cut---
import * as db from '$lib/server/database';
/** @type {import('./$types').LayoutServerLoad} */
export async function load() {
return {
posts: await db.getPostSummaries()
};
}
```
```svelte
<!--- file: src/routes/blog/[slug]/+layout.svelte --->
<script>
/** @type {import('./$types').LayoutProps} */
let { data, children } = $props();
</script>
<main>
<!-- +page.svelte is `@render`ed here -->
{@render children()}
</main>
<aside>
<h2>More posts</h2>
<ul>
{#each data.posts as post}
<li>
<a href="/blog/{post.slug}">
{post.title}
</a>
</li>
{/each}
</ul>
</aside>
```
> [!LEGACY]
> `LayoutProps` was added in 2.16.0. In earlier versions, properties had to be typed individually:
> ```js
> /// file: +layout.svelte
> /** @type {{ data: import('./$types').LayoutData, children: Snippet }} */
> let { data, children } = $props();
> ```
Data returned from layout `load` functions is available to child `+layout.svelte` components and the `+page.svelte` component as well as the layout that it 'belongs' to.
```svelte
/// file: src/routes/blog/[slug]/+page.svelte
<script>
+++import { page } from '$app/state';+++
/** @type {import('./$types').PageProps} */
let { data } = $props();
+++ // we can access `data.posts` because it's returned from
// the parent layout `load` function
let index = $derived(data.posts.findIndex(post => post.slug === page.params.slug));
let next = $derived(data.posts[index + 1]);+++
</script>
<h1>{data.post.title}</h1>
<div>{@html data.post.content}</div>
+++{#if next}
<p>Next post: <a href="/blog/{next.slug}">{next.title}</a></p>
{/if}+++
```
> [!NOTE] If multiple `load` functions return data with the same key, the last one 'wins' — the result of a layout `load` returning `{ a: 1, b: 2 }` and a page `load` returning `{ b: 3, c: 4 }` would be `{ a: 1, b: 3, c: 4 }`.
## page.data
The `+page.svelte` component, and each `+layout.svelte` component above it, has access to its own data plus all the data from its parents.
In some cases, we might need the opposite — a parent layout might need to access page data or data from a child layout. For example, the root layout might want to access a `title` property returned from a `load` function in `+page.js` or `+page.server.js`. This can be done with `page.data`:
```svelte
<!--- file: src/routes/+layout.svelte --->
<script>
import { page } from '$app/state';
</script>
<svelte:head>
<title>{page.data.title}</title>
</svelte:head>
```
Type information for `page.data` is provided by `App.PageData`.
> [!LEGACY]
> `$app/state` was added in SvelteKit 2.12. If you're using an earlier version or are using Svelte 4, use `$app/stores` instead.
> It provides a `page` store with the same interface that you can subscribe to, e.g. `$page.data.title`.
## Universal vs server
As we've seen, there are two types of `load` function:
* `+page.js` and `+layout.js` files export _universal_ `load` functions that run both on the server and in the browser
* `+page.server.js` and `+layout.server.js` files export _server_ `load` functions that only run server-side
Conceptually, they're the same thing, but there are some important differences to be aware of.
### When does which load function run?
Server `load` functions _always_ run on the server.
By default, universal `load` functions run on the server during SSR when the user first visits your page. They will then run again during hydration, reusing any responses from [fetch requests](#Making-fetch-requests). All subsequent invocations of universal `load` functions happen in the browser. You can customize the behavior through [page options](page-options). If you disable [server-side rendering](page-options#ssr), you'll get an SPA and universal `load` functions _always_ run on the client.
If a route contains both universal and server `load` functions, the server `load` runs first.
A `load` function is invoked at runtime, unless you [prerender](page-options#prerender) the page — in that case, it's invoked at build time.
### Input
Both universal and server `load` functions have access to properties describing the request (`params`, `route` and `url`) and various functions (`fetch`, `setHeaders`, `parent`, `depends` and `untrack`). These are described in the following sections.
Server `load` functions are called with a `ServerLoadEvent`, which inherits `clientAddress`, `cookies`, `locals`, `platform` and `request` from `RequestEvent`.
Universal `load` functions are called with a `LoadEvent`, which has a `data` property. If you have `load` functions in both `+page.js` and `+page.server.js` (or `+layout.js` and `+layout.server.js`), the return value of the server `load` function is the `data` property of the universal `load` function's argument.
### Output
A universal `load` function can return an object containing any values, including things like custom classes and component constructors.
A server `load` function must return data that can be serialized with [devalue](https://github.com/rich-harris/devalue) — anything that can be represented as JSON plus things like `BigInt`, `Date`, `Map`, `Set` and `RegExp`, or repeated/cyclical references — so that it can be transported over the network. Your data can include [promises](#Streaming-with-promises), in which case it will be streamed to browsers. If you need to serialize/deserialize custom types, use [transport hooks](hooks#Universal-hooks-transport).
### When to use which
Server `load` functions are convenient when you need to access data directly from a database or filesystem, or need to use private environment variables.
Universal `load` functions are useful when you need to `fetch` data from an external API and don't need private credentials, since SvelteKit can get the data directly from the API rather than going via your server. They are also useful when you need to return something that can't be serialized, such as a Svelte component constructor.
In rare cases, you might need to use both together — for example, you might need to return an instance of a custom class that was initialised with data from your server. When using both, the server `load` return value is _not_ passed directly to the page, but to the universal `load` function (as the `data` property):
```js
/// file: src/routes/+page.server.js
/** @type {import('./$types').PageServerLoad} */
export async function load() {
return {
serverMessage: 'hello from server load function'
};
}
```
```js
/// file: src/routes/+page.js
// @errors: 18047
/** @type {import('./$types').PageLoad} */
export async function load({ data }) {
return {
serverMessage: data.serverMessage,
universalMessage: 'hello from universal load function'
};
}
```
## Using URL data
Often the `load` function depends on the URL in one way or another. For this, the `load` function provides you with `url`, `route` and `params`.
### url
An instance of [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL), containing properties like the `origin`, `hostname`, `pathname` and `searchParams` (which contains the parsed query string as a [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) object). `url.hash` cannot be accessed during `load`, since it is unavailable on the server.
> [!NOTE] In some environments this is derived from request headers during server-side rendering. If you're using [adapter-node](adapter-node), for example, you may need to configure the adapter in order for the URL to be correct.
### route
Contains the name of the current route directory, relative to `src/routes`:
```js
/// file: src/routes/a/[b]/[...c]/+page.js
/** @type {import('./$types').PageLoad} */
export function load({ route }) {
console.log(route.id); // '/a/[b]/[...c]'
}
```
### params
`params` is derived from `url.pathname` and `route.id`.
Given a `route.id` of `/a/[b]/[...c]` and a `url.pathname` of `/a/x/y/z`, the `params` object would look like this:
```json
{
"b": "x",
"c": "y/z"
}
```
## Making fetch requests
To get data from an external API or a `+server.js` handler, you can use the provided `fetch` function, which behaves identically to the [native `fetch` web API](https://developer.mozilla.org/en-US/docs/Web/API/fetch) with a few additional features:
- It can be used to make credentialed requests on the server, as it inherits the `cookie` and `authorization` headers for the page request.
- It can make relative requests on the server (ordinarily, `fetch` requires a URL with an origin when used in a server context).
- Internal requests (e.g. for `+server.js` routes) go directly to the handler function when running on the server, without the overhead of an HTTP call.
- During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text`, `json` and `arrayBuffer` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](hooks#Server-hooks-handle).
- During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request - if you received a warning in your browser console when using the browser `fetch` instead of the `load` `fetch`, this is why.
```js
/// file: src/routes/items/[id]/+page.js
/** @type {import('./$types').PageLoad} */
export async function load({ fetch, params }) {
const res = await fetch(`/api/items/${params.id}`);
const item = await res.json();
return { item };
}
```
## Cookies
A server `load` function can get and set [`cookies`](@sveltejs-kit#Cookies).
```js
/// file: src/routes/+layout.server.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function getUser(sessionid: string | undefined): Promise<{ name: string, avatar: string }>
}
// @filename: index.js
// ---cut---
import * as db from '$lib/server/database';
/** @type {import('./$types').LayoutServerLoad} */
export async function load({ cookies }) {
const sessionid = cookies.get('sessionid');
return {
user: await db.getUser(sessionid)
};
}
```
Cookies will only be passed through the provided `fetch` function if the target host is the same as the SvelteKit application or a more specific subdomain of it.
For example, if SvelteKit is serving my.domain.com:
- domain.com WILL NOT receive cookies
- my.domain.com WILL receive cookies
- api.domain.com WILL NOT receive cookies
- sub.my.domain.com WILL receive cookies
Other cookies will not be passed when `credentials: 'include'` is set, because SvelteKit does not know which domain which cookie belongs to (the browser does not pass this information along), so it's not safe to forward any of them. Use the [handleFetch hook](hooks#Server-hooks-handleFetch) to work around it.
## Headers
Both server and universal `load` functions have access to a `setHeaders` function that, when running on the server, can set headers for the response. (When running in the browser, `setHeaders` has no effect.) This is useful if you want the page to be cached, for example:
```js
// @errors: 2322 1360
/// file: src/routes/products/+page.js
/** @type {import('./$types').PageLoad} */
export async function load({ fetch, setHeaders }) {
const url = `https://cms.example.com/products.json`;
const response = await fetch(url);
// Headers are only set during SSR, caching the page's HTML
// for the same length of time as the underlying data.
setHeaders({
age: response.headers.get('age'),
'cache-control': response.headers.get('cache-control')
});
return response.json();
}
```
Setting the same header multiple times (even in separate `load` functions) is an error. You can only set a given header once using the `setHeaders` function. You cannot add a `set-cookie` header with `setHeaders` — use `cookies.set(name, value, options)` instead.
## Using parent data
Occasionally it's useful for a `load` function to access data from a parent `load` function, which can be done with `await parent()`:
```js
/// file: src/routes/+layout.js
/** @type {import('./$types').LayoutLoad} */
export function load() {
return { a: 1 };
}
```
```js
/// file: src/routes/abc/+layout.js
/** @type {import('./$types').LayoutLoad} */
export async function load({ parent }) {
const { a } = await parent();
return { b: a + 1 };
}
```
```js
/// file: src/routes/abc/+page.js
/** @type {import('./$types').PageLoad} */
export async function load({ parent }) {
const { a, b } = await parent();
return { c: a + b };
}
```
```svelte
<!--- file: src/routes/abc/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
</script>
<!-- renders `1 + 2 = 3` -->
<p>{data.a} + {data.b} = {data.c}</p>
```
> [!NOTE] Notice that the `load` function in `+page.js` receives the merged data from both layout `load` functions, not just the immediate parent.
Inside `+page.server.js` and `+layout.server.js`, `parent` returns data from parent `+layout.server.js` files.
In `+page.js` or `+layout.js` it will return data from parent `+layout.js` files. However, a missing `+layout.js` is treated as a `({ data }) => data` function, meaning that it will also return data from parent `+layout.server.js` files that are not 'shadowed' by a `+layout.js` file
Take care not to introduce waterfalls when using `await parent()`. Here, for example, `getData(params)` does not depend on the result of calling `parent()`, so we should call it first to avoid a delayed render.
```js
/// file: +page.js
// @filename: ambient.d.ts
declare function getData(params: Record<string, string>): Promise<{ meta: any }>
// @filename: index.js
// ---cut---
/** @type {import('./$types').PageLoad} */
export async function load({ params, parent }) {
---const parentData = await parent();---
const data = await getData(params);
+++const parentData = await parent();+++
return {
...data,
meta: { ...parentData.meta, ...data.meta }
};
}
```
## Errors
If an error is thrown during `load`, the nearest [`+error.svelte`](routing#error) will be rendered. For [_expected_](errors#Expected-errors) errors, use the `error` helper from `@sveltejs/kit` to specify the HTTP status code and an optional message:
```js
/// file: src/routes/admin/+layout.server.js
// @filename: ambient.d.ts
declare namespace App {
interface Locals {
user?: {
name: string;
isAdmin: boolean;
}
}
}
// @filename: index.js
// ---cut---
import { error } from '@sveltejs/kit';
/** @type {import('./$types').LayoutServerLoad} */
export function load({ locals }) {
if (!locals.user) {
error(401, 'not logged in');
}
if (!locals.user.isAdmin) {
error(403, 'not an admin');
}
}
```
Calling `error(...)` will throw an exception, making it easy to stop execution from inside helper functions.
If an [_unexpected_](errors#Unexpected-errors) error is thrown, SvelteKit will invoke [`handleError`](hooks#Shared-hooks-handleError) and treat it as a 500 Internal Error.
> [!NOTE] [In SvelteKit 1.x](migrating-to-sveltekit-2#redirect-and-error-are-no-longer-thrown-by-you) you had to `throw` the error yourself
## Redirects
To redirect users, use the `redirect` helper from `@sveltejs/kit` to specify the location to which they should be redirected alongside a `3xx` status code. Like `error(...)`, calling `redirect(...)` will throw an exception, making it easy to stop execution from inside helper functions.
```js
/// file: src/routes/user/+layout.server.js
// @filename: ambient.d.ts
declare namespace App {
interface Locals {
user?: {
name: string;
}
}
}
// @filename: index.js
// ---cut---
import { redirect } from '@sveltejs/kit';
/** @type {import('./$types').LayoutServerLoad} */
export function load({ locals }) {
if (!locals.user) {
redirect(307, '/login');
}
}
```
> [!NOTE] Don't use `redirect()` inside a `try {...}` block, as the redirect will immediately trigger the catch statement.
In the browser, you can also navigate programmatically outside of a `load` function using [`goto`]($app-navigation#goto) from [`$app.navigation`]($app-navigation).
> [!NOTE] [In SvelteKit 1.x](migrating-to-sveltekit-2#redirect-and-error-are-no-longer-thrown-by-you) you had to `throw` the `redirect` yourself
## Streaming with promises
When using a server `load`, promises will be streamed to the browser as they resolve. This is useful if you have slow, non-essential data, since you can start rendering the page before all the data is available:
```js
/// file: src/routes/blog/[slug]/+page.server.js
// @filename: ambient.d.ts
declare global {
const loadPost: (slug: string) => Promise<{ title: string, content: string }>;
const loadComments: (slug: string) => Promise<{ content: string }>;
}
export {};
// @filename: index.js
// ---cut---
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
return {
// make sure the `await` happens at the end, otherwise we
// can't start loading comments until we've loaded the post
comments: loadComments(params.slug),
post: await loadPost(params.slug)
};
}
```
This is useful for creating skeleton loading states, for example:
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
</script>
<h1>{data.post.title}</h1>
<div>{@html data.post.content}</div>
{#await data.comments}
Loading comments...
{:then comments}
{#each comments as comment}
<p>{comment.content}</p>
{/each}
{:catch error}
<p>error loading comments: {error.message}</p>
{/await}
```
When streaming data, be careful to handle promise rejections correctly. More specifically, the server could crash with an "unhandled promise rejection" error if a lazy-loaded promise fails before rendering starts (at which point it's caught) and isn't handling the error in some way. When using SvelteKit's `fetch` directly in the `load` function, SvelteKit will handle this case for you. For other promises, it is enough to attach a noop-`catch` to the promise to mark it as handled.
```js
/// file: src/routes/+page.server.js
/** @type {import('./$types').PageServerLoad} */
export function load({ fetch }) {
const ok_manual = Promise.reject();
ok_manual.catch(() => {});
return {
ok_manual,
ok_fetch: fetch('/fetch/that/could/fail'),
dangerous_unhandled: Promise.reject()
};
}
```
> [!NOTE] On platforms that do not support streaming, such as AWS Lambda or Firebase, responses will be buffered. This means the page will only render once all promises resolve. If you are using a proxy (e.g. NGINX), make sure it does not buffer responses from the proxied server.
> [!NOTE] Streaming data will only work when JavaScript is enabled. You should avoid returning promises from a universal `load` function if the page is server rendered, as these are _not_ streamed — instead, the promise is recreated when the function reruns in the browser.
> [!NOTE] The headers and status code of a response cannot be changed once the response has started streaming, therefore you cannot `setHeaders` or throw redirects inside a streamed promise.
> [!NOTE] [In SvelteKit 1.x](migrating-to-sveltekit-2#Top-level-promises-are-no-longer-awaited) top-level promises were automatically awaited, only nested promises were streamed.
## Parallel loading
When rendering (or navigating to) a page, SvelteKit runs all `load` functions concurrently, avoiding a waterfall of requests. During client-side navigation, the result of calling multiple server `load` functions are grouped into a single response. Once all `load` functions have returned, the page is rendered.
## Rerunning load functions
SvelteKit tracks the dependencies of each `load` function to avoid rerunning it unnecessarily during navigation.
For example, given a pair of `load` functions like these...
```js
/// file: src/routes/blog/[slug]/+page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function getPost(slug: string): Promise<{ title: string, content: string }>
}
// @filename: index.js
// ---cut---
import * as db from '$lib/server/database';
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
return {
post: await db.getPost(params.slug)
};
}
```
```js
/// file: src/routes/blog/[slug]/+layout.server.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function getPostSummaries(): Promise<Array<{ title: string, slug: string }>>
}
// @filename: index.js
// ---cut---
import * as db from '$lib/server/database';
/** @type {import('./$types').LayoutServerLoad} */
export async function load() {
return {
posts: await db.getPostSummaries()
};
}
```
...the one in `+page.server.js` will rerun if we navigate from `/blog/trying-the-raw-meat-diet` to `/blog/i-regret-my-choices` because `params.slug` has changed. The one in `+layout.server.js` will not, because the data is still valid. In other words, we won't call `db.getPostSummaries()` a second time.
A `load` function that calls `await parent()` will also rerun if a parent `load` function is rerun.
Dependency tracking does not apply _after_ the `load` function has returned — for example, accessing `params.x` inside a nested [promise](#Streaming-with-promises) will not cause the function to rerun when `params.x` changes. (Don't worry, you'll get a warning in development if you accidentally do this.) Instead, access the parameter in the main body of your `load` function.
Search parameters are tracked independently from the rest of the url. For example, accessing `event.url.searchParams.get("x")` inside a `load` function will make that `load` function re-run when navigating from `?x=1` to `?x=2`, but not when navigating from `?x=1&y=1` to `?x=1&y=2`.
### Untracking dependencies
In rare cases, you may wish to exclude something from the dependency tracking mechanism. You can do this with the provided `untrack` function:
```js
/// file: src/routes/+page.js
/** @type {import('./$types').PageLoad} */
export async function load({ untrack, url }) {
// Untrack url.pathname so that path changes don't trigger a rerun
if (untrack(() => url.pathname === '/')) {
return { message: 'Welcome!' };
}
}
```
### Manual invalidation
You can also rerun `load` functions that apply to the current page using [`invalidate(url)`]($app-navigation#invalidate), which reruns all `load` functions that depend on `url`, and [`invalidateAll()`]($app-navigation#invalidateAll), which reruns every `load` function. Server load functions will never automatically depend on a fetched `url` to avoid leaking secrets to the client.
A `load` function depends on `url` if it calls `fetch(url)` or `depends(url)`. Note that `url` can be a custom identifier that starts with `[a-z]:`:
```js
/// file: src/routes/random-number/+page.js
/** @type {import('./$types').PageLoad} */
export async function load({ fetch, depends }) {
// load reruns when `invalidate('https://api.example.com/random-number')` is called...
const response = await fetch('https://api.example.com/random-number');
// ...or when `invalidate('app:random')` is called
depends('app:random');
return {
number: await response.json()
};
}
```
```svelte
<!--- file: src/routes/random-number/+page.svelte --->
<script>
import { invalidate, invalidateAll } from '$app/navigation';
/** @type {import('./$types').PageProps} */
let { data } = $props();
function rerunLoadFunction() {
// any of these will cause the `load` function to rerun
invalidate('app:random');
invalidate('https://api.example.com/random-number');
invalidate(url => url.href.includes('random-number'));
invalidateAll();
}
</script>
<p>random number: {data.number}</p>
<button onclick={rerunLoadFunction}>Update random number</button>
```
### When do load functions rerun?
To summarize, a `load` function will rerun in the following situations:
- It references a property of `params` whose value has changed
- It references a property of `url` (such as `url.pathname` or `url.search`) whose value has changed. Properties in `request.url` are _not_ tracked
- It calls `url.searchParams.get(...)`, `url.searchParams.getAll(...)` or `url.searchParams.has(...)` and the parameter in question changes. Accessing other properties of `url.searchParams` will have the same effect as accessing `url.search`.
- It calls `await parent()` and a parent `load` function reran
- A child `load` function calls `await parent()` and is rerunning, and the parent is a server load function
- It declared a dependency on a specific URL via [`fetch`](#Making-fetch-requests) (universal load only) or [`depends`](@sveltejs-kit#LoadEvent), and that URL was marked invalid with [`invalidate(url)`]($app-navigation#invalidate)
- All active `load` functions were forcibly rerun with [`invalidateAll()`]($app-navigation#invalidateAll)
`params` and `url` can change in response to a `<a href="..">` link click, a [`<form>` interaction](form-actions#GET-vs-POST), a [`goto`]($app-navigation#goto) invocation, or a [`redirect`](@sveltejs-kit#redirect).
Note that rerunning a `load` function will update the `data` prop inside the corresponding `+layout.svelte` or `+page.svelte`; it does _not_ cause the component to be recreated. As a result, internal state is preserved. If this isn't what you want, you can reset whatever you need to reset inside an [`afterNavigate`]($app-navigation#afterNavigate) callback, and/or wrap your component in a [`{#key ...}`](../svelte/key) block.
## Implications for authentication
A couple features of loading data have important implications for auth checks:
- Layout `load` functions do not run on every request, such as during client side navigation between child routes. [(When do load functions rerun?)](load#Rerunning-load-functions-When-do-load-functions-rerun)
- Layout and page `load` functions run concurrently unless `await parent()` is called. If a layout `load` throws, the page `load` function runs, but the client will not receive the returned data.
There are a few possible strategies to ensure an auth check occurs before protected code.
To prevent data waterfalls and preserve layout `load` caches:
- Use [hooks](hooks) to protect multiple routes before any `load` functions run
- Use auth guards directly in `+page.server.js` `load` functions for route specific protection
Putting an auth guard in `+layout.server.js` requires all child pages to call `await parent()` before protected code. Unless every child page depends on returned data from `await parent()`, the other options will be more performant.
## Using `getRequestEvent`
When running server `load` functions, the `event` object passed to the function as an argument can also be retrieved with [`getRequestEvent`]($app-server#getRequestEvent). This allows shared logic (such as authentication guards) to access information about the current request without it needing to be passed around.
For example, you might have a function that requires users to be logged in, and redirects them to `/login` if not:
```js
/// file: src/lib/server/auth.js
// @filename: ambient.d.ts
interface User {
name: string;
}
declare namespace App {
interface Locals {
user?: User;
}
}
// @filename: index.ts
// ---cut---
import { redirect } from '@sveltejs/kit';
import { getRequestEvent } from '$app/server';
export function requireLogin() {
const { locals, url } = getRequestEvent();
// assume `locals.user` is populated in `handle`
if (!locals.user) {
const redirectTo = url.pathname + url.search;
const params = new URLSearchParams({ redirectTo });
redirect(303, `/login?${params}`);
}
return locals.user;
}
```
Now, you can call `requireLogin` in any `load` function (or [form action](form-actions), for example) to guarantee that the user is logged in:
```js
/// file: +page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/auth' {
interface User {
name: string;
}
export function requireLogin(): User;
}
// @filename: index.ts
// ---cut---
import { requireLogin } from '$lib/server/auth';
export function load() {
const user = requireLogin();
// `user` is guaranteed to be a user object here, because otherwise
// `requireLogin` would throw a redirect and we wouldn't get here
return {
message: `hello ${user.name}!`
};
}
```
## Further reading
- [Tutorial: Loading data](/tutorial/kit/page-data)
- [Tutorial: Errors and redirects](/tutorial/kit/error-basics)
- [Tutorial: Advanced loading](/tutorial/kit/await-parent)
================================================
FILE: documentation/docs/20-core-concepts/30-form-actions.md
================================================
---
title: Form actions
---
A `+page.server.js` file can export _actions_, which allow you to `POST` data to the server using the `<form>` element.
When using `<form>`, client-side JavaScript is optional, but you can easily _progressively enhance_ your form interactions with JavaScript to provide the best user experience.
## Default actions
In the simplest case, a page declares a `default` action:
```js
/// file: src/routes/login/+page.server.js
/** @satisfies {import('./$types').Actions} */
export const actions = {
default: async (event) => {
// TODO log the user in
}
};
```
To invoke this action from the `/login` page, just add a `<form>` — no JavaScript needed:
```svelte
<!--- file: src/routes/login/+page.svelte --->
<form method="POST">
<label>
Email
<input name="email" type="email">
</label>
<label>
Password
<input name="password" type="password">
</label>
<button>Log in</button>
</form>
```
If someone were to click the button, the browser would send the form data via `POST` request to the server, running the default action.
> [!NOTE] Actions always use `POST` requests, since `GET` requests should never have side-effects.
We can also invoke the action from other pages (for example if there's a login widget in the nav in the root layout) by adding the `action` attribute, pointing to the page:
```html
/// file: src/routes/+layout.svelte
<form method="POST" action="/login">
<!-- content -->
</form>
```
## Named actions
Instead of one `default` action, a page can have as many named actions as it needs:
```js
/// file: src/routes/login/+page.server.js
/** @satisfies {import('./$types').Actions} */
export const actions = {
--- default: async (event) => {---
+++ login: async (event) => {+++
// TODO log the user in
},
+++ register: async (event) => {
// TODO register the user
}+++
};
```
To invoke a named action, add a query parameter with the name prefixed by a `/` character:
```svelte
<!--- file: src/routes/login/+page.svelte --->
<form method="POST" action="?/register">
```
```svelte
<!--- file: src/routes/+layout.svelte --->
<form method="POST" action="/login?/register">
```
As well as the `action` attribute, we can use the `formaction` attribute on a button to `POST` the same form data to a different action than the parent `<form>`:
```svelte
/// file: src/routes/login/+page.svelte
<form method="POST" +++action="?/login"+++>
<label>
Email
<input name="email" type="email">
</label>
<label>
Password
<input name="password" type="password">
</label>
<button>Log in</button>
+++<button formaction="?/register">Register</button>+++
</form>
```
> [!NOTE] We can't have default actions next to named actions, because if you POST to a named action without a redirect, the query parameter is persisted in the URL, which means the next default POST would go through the named action from before.
## Anatomy of an action
Each action receives a `RequestEvent` object, allowing you to read the data with `request.formData()`. After processing the request (for example, logging the user in by setting a cookie), the action can respond with data that will be available through the `form` property on the corresponding page and through `page.form` app-wide until the next update.
```js
/// file: src/routes/login/+page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/db';
// @filename: index.js
// ---cut---
import * as db from '$lib/server/db';
/** @type {import('./$types').PageServerLoad} */
export async function load({ cookies }) {
const user = await db.getUserFromSession(cookies.get('sessionid'));
return { user };
}
/** @satisfies {import('./$types').Actions} */
export const actions = {
login: async ({ cookies, request }) => {
const data = await request.formData();
const email = data.get('email');
const password = data.get('password');
const user = await db.getUser(email);
cookies.set('sessionid', await db.createSession(user), { path: '/' });
return { success: true };
},
register: async (event) => {
// TODO register the user
}
};
```
```svelte
<!--- file: src/routes/login/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data, form } = $props();
</script>
{#if form?.success}
<!-- this message is ephemeral; it exists because the page was rendered in
response to a form submission. it will vanish if the user reloads -->
<p>Successfully logged in! Welcome back, {data.user.name}</p>
{/if}
```
> [!LEGACY]
> `PageProps` was added in 2.16.0. In earlier versions, you had to type the `data` and `form` properties individually:
> ```js
> /// file: +page.svelte
> /** @type {{ data: import('./$types').PageData, form: import('./$types').ActionData }} */
> let { data, form } = $props();
> ```
>
> In Svelte 4, you'd use `export let data` and `export let form` instead to declare properties.
### Validation errors
If the request couldn't be processed because of invalid data, you can return validation errors — along with the previously submitted form values — back to the user so that they can try again. The `fail` function lets you return an HTTP status code (typically 400 or 422, in the case of validation errors) along with the data. The status code is available through `page.status` and the data through `form`:
```js
/// file: src/routes/login/+page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/db';
// @filename: index.js
// ---cut---
+++import { fail } from '@sveltejs/kit';+++
import * as db from '$lib/server/db';
/** @satisfies {import('./$types').Actions} */
export const actions = {
login: async ({ cookies, request }) => {
const data = await request.formData();
const email = data.get('email');
const password = data.get('password');
+++ if (!email) {
return fail(400, { email, missing: true });
}+++
const user = await db.getUser(email);
+++ if (!user || user.password !== db.hash(password)) {
return fail(400, { email, incorrect: true });
}+++
cookies.set('sessionid', await db.createSession(user), { path: '/' });
return { success: true };
},
register: async (event) => {
// TODO register the user
}
};
```
> [!NOTE] Note that as a precaution, we only return the email back to the page — not the password.
```svelte
/// file: src/routes/login/+page.svelte
<form method="POST" action="?/login">
+++ {#if form?.missing}<p class="error">The email field is required</p>{/if}
{#if form?.incorrect}<p class="error">Invalid credentials!</p>{/if}+++
<label>
Email
<input name="email" type="email" +++value={form?.email ?? ''}+++>
</label>
<label>
Password
<input name="password" type="password">
</label>
<button>Log in</button>
<button formaction="?/register">Register</button>
</form>
```
The returned data must be serializable as JSON. Beyond that, the structure is entirely up to you. For example, if you had multiple forms on the page, you could distinguish which `<form>` the returned `form` data referred to with an `id` property or similar.
### Redirects
Redirects (and errors) work exactly the same as in [`load`](load#Redirects):
```js
// @errors: 2345
/// file: src/routes/login/+page.server.js
// @filename: ambient.d.ts
declare module '$lib/server/db';
// @filename: index.js
// ---cut---
import { fail, +++redirect+++ } from '@sveltejs/kit';
import * as db from '$lib/server/db';
/** @satisfies {import('./$types').Actions} */
export const actions = {
login: async ({ cookies, request, +++url+++ }) => {
const data = await request.formData();
const email = data.get('email');
const password = data.get('password');
const user = await db.getUser(email);
if (!user) {
return fail(400, { email, missing: true });
}
if (user.password !== db.hash(password)) {
return fail(400, { email, incorrect: true });
}
cookies.set('sessionid', await db.createSession(user), { path: '/' });
+++ if (url.searchParams.has('redirectTo')) {
redirect(303, url.searchParams.get('redirectTo'));
}+++
return { success: true };
},
register: async (event) => {
// TODO register the user
}
};
```
## Loading data
After an action runs, the page will be re-rendered (unless a redirect or an unexpected error occurs), with the action's return value available to the page as the `form` prop. This means that your page's `load` functions will run after the action completes.
Note that `handle` runs before the action is invoked, and does not rerun before the `load` functions. This means that if, for example, you use `handle` to populate `event.locals` based on a cookie, you must update `event.locals` when you set or delete the cookie in an action:
```js
/// file: src/hooks.server.js
// @filename: ambient.d.ts
declare namespace App {
interface Locals {
user: {
name: string;
} | null
}
}
// @filename: global.d.ts
declare global {
function getUser(sessionid: string | undefined): {
name: string;
};
}
export {};
// @filename: index.js
// ---cut---
/** @type {import('@sveltejs/kit').Handle} */
export async function handle({ event, resolve }) {
event.locals.user = await getUser(event.cookies.get('sessionid'));
return resolve(event);
}
```
```js
/// file: src/routes/account/+page.server.js
// @filename: ambient.d.ts
declare namespace App {
interface Locals {
user: {
name: string;
} | null
}
}
// @filename: index.js
// ---cut---
/** @type {import('./$types').PageServerLoad} */
export function load(event) {
return {
user: event.locals.user
};
}
/** @satisfies {import('./$types').Actions} */
export const actions = {
logout: async (event) => {
event.cookies.delete('sessionid', { path: '/' });
event.locals.user = null;
}
};
```
## Progressive enhancement
In the preceding sections we built a `/login` action that [works without client-side JavaScript](https://kryogenix.org/code/browser/everyonehasjs.html) — not a `fetch` in sight. That's great, but when JavaScript _is_ available we can progressively enhance our form interactions to provide a better user experience.
### use:enhance
The easiest way to progressively enhance a form is to add the `use:enhance` action:
```svelte
/// file: src/routes/login/+page.svelte
<script>
+++import { enhance } from '$app/forms';+++
/** @type {import('./$types').PageProps} */
let { form } = $props();
</script>
<form method="POST" +++use:enhance+++>
```
> [!NOTE] `use:enhance` can only be used with forms that have `method="POST"` and point to actions defined in a `+page.server.js` file. It will not work with `method="GET"`, which is the default for forms without a specified method. Attempting to use `use:enhance` on forms without `method="POST"` or posting to a `+server.js` endpoint will result in an error.
> [!NOTE] Yes, it's a little confusing that the `enhance` action and `<form action>` are both called 'action'. These docs are action-packed. Sorry.
Without an argument, `use:enhance` will emulate the browser-native behaviour, just without the full-page reloads. It will:
- update the `form` property, `page.form` and `page.status` on a successful or invalid response, but only if the action is on the same page you're submitting from. For example, if your form looks like `<form action="/somewhere/else" ..>`, the `form` prop and the `page.form` state will _not_ be updated. This is because in the native form submission case you would be redirected to the page the action is on. If you want to have them updated either way, use [`applyAction`](#Progressive-enhancement-Customising-use:enhance)
- reset the `<form>` element
- invalidate all data using `invalidateAll` on a successful response
- call `goto` on a redirect response
- render the nearest `+error` boundary if an error occurs
- [reset focus](accessibility#Focus-management) to the appropriate element
### Customising use:enhance
To customise the behaviour, you can provide a `SubmitFunction` that runs immediately before the form is submitted, and (optionally) returns a callback that runs with the `ActionResult`.
```svelte
<form
method="POST"
use:enhance={({ formElement, formData, action, cancel, submitter }) => {
// `formElement` is this `<form>` element
// `formData` is its `FormData` object that's about to be submitted
// `action` is the URL to which the form is posted
// calling `cancel()` will prevent the submission
// `submitter` is the `HTMLElement` that caused the form to be submitted
return async ({ result, update }) => {
// `result` is an `ActionResult` object
// `update` is a function which triggers the default logic that would be triggered if this callback wasn't set
};
}}
>
```
You can use these functions to show and hide loading UI, and so on.
If you return a callback, you override the default post-submission behavior. To get it back, call `update`, which accepts `invalidateAll` and `reset` parameters, or use `applyAction` on the result:
```svelte
/// file: src/routes/login/+page.svelte
<script>
import { enhance, +++applyAction+++ } from '$app/forms';
/** @type {import('./$types').PageProps} */
let { form } = $props();
</script>
<form
method="POST"
use:enhance={({ formElement, formData, action, cancel }) => {
return async ({ result }) => {
// `result` is an `ActionResult` object
+++ if (result.type === 'redirect') {
goto(result.location);
} else {
await applyAction(result);
}+++
};
}}
>
```
The behaviour of `applyAction(result)` depends on `result.type`:
- `success`, `failure` — sets `page.status` to `result.status` and updates `form` and `page.form` to `result.data` (regardless of where you are submitting from, in contrast to `update` from `enhance`)
- `redirect` — calls `goto(result.location, { invalidateAll: true })`
- `error` — renders the nearest `+error` boundary with `result.error`
In all cases, [focus will be reset](accessibility#Focus-management).
### Custom event listener
We can also implement progressive enhancement ourselves, without `use:enhance`, with a normal event listener on the `<form>`:
```svelte
<!--- file: src/routes/login/+page.svelte --->
<script>
import { invalidateAll, goto } from '$app/navigation';
import { applyAction, deserialize } from '$app/forms';
/** @type {import('./$types').PageProps} */
let { form } = $props();
/** @param {SubmitEvent & { currentTarget: EventTarget & HTMLFormElement}} event */
async function handleSubmit(event) {
event.preventDefault();
const data = new FormData(event.currentTarget, event.submitter);
const response = await fetch(event.currentTarget.action, {
method: 'POST',
body: data
});
/** @type {import('@sveltejs/kit').ActionResult} */
const result = deserialize(await response.text());
if (result.type === 'success') {
// rerun all `load` functions, following the successful update
await invalidateAll();
}
applyAction(result);
}
</script>
<form method="POST" onsubmit={handleSubmit}>
<!-- content -->
</form>
```
Note that you need to `deserialize` the response before processing it further using the corresponding method from `$app/forms`. `JSON.parse()` isn't enough because form actions - like `load` functions - also support returning `Date` or `BigInt` objects.
If you have a `+server.js` alongside your `+page.server.js`, `fetch` requests will be routed there by default. To `POST` to an action in `+page.server.js` instead, use the custom `x-sveltekit-action` header:
```js
// @errors: 2532 2304
const response = await fetch(this.action, {
method: 'POST',
body: data,
+++ headers: {
'x-sveltekit-action': 'true'
}+++
});
```
## Alternatives
Form actions are the preferred way to send data to the server, since they can be progressively enhanced, but you can also use [`+server.js`](routing#server) files to expose (for example) a JSON API. Here's how such an interaction could look like:
```svelte
<!--- file: src/routes/send-message/+page.svelte --->
<script>
function rerun() {
fetch('/api/ci', {
method: 'POST'
});
}
</script>
<button onclick={rerun}>Rerun CI</button>
```
```js
// @errors: 2355 1360 2322
/// file: src/routes/api/ci/+server.js
/** @type {import('./$types').RequestHandler} */
export function POST() {
// do something
}
```
## GET vs POST
As we've seen, to invoke a form action you must use `method="POST"`.
Some forms don't need to `POST` data to the server — search inputs, for example. For these you can use `method="GET"` (or, equivalently, no `method` at all), and SvelteKit will treat them like `<a>` elements, using the client-side router instead of a full page navigation:
```html
<form action="/search">
<label>
Search
<input name="q">
</label>
</form>
```
Submitting this form will navigate to `/search?q=...` and invoke your load function but will not invoke an action. As with `<a>` elements, you can set the [`data-sveltekit-reload`](link-options#data-sveltekit-reload), [`data-sveltekit-replacestate`](link-options#data-sveltekit-replacestate), [`data-sveltekit-keepfocus`](link-options#data-sveltekit-keepfocus) and [`data-sveltekit-noscroll`](link-options#data-sveltekit-noscroll) attributes on the `<form>` to control the router's behaviour.
## Further reading
- [Tutorial: Forms](/tutorial/kit/the-form-element)
================================================
FILE: documentation/docs/20-core-concepts/40-page-options.md
================================================
---
title: Page options
---
By default, SvelteKit will render (or [prerender](glossary#Prerendering)) any component first on the server and send it to the client as HTML. It will then render the component again in the browser to make it interactive in a process called [_hydration_](glossary#Hydration). For this reason, you need to ensure that components can run in both places. SvelteKit will then initialize a [_router_](routing) that takes over subsequent navigations.
You can control each of these on a page-by-page basis by exporting options from [`+page.js`](routing#page-page.js) or [`+page.server.js`](routing#page-page.server.js), or for groups of pages using a shared [`+layout.js`](routing#layout-layout.js) or [`+layout.server.js`](routing#layout-layout.server.js). To define an option for the whole app, export it from the root layout. Child layouts and pages override values set in parent layouts, so — for example — you can enable prerendering for your entire app then disable it for pages that need to be dynamically rendered.
You can mix and match these options in different areas of your app. For example, you could prerender your marketing page for maximum speed, server-render your dynamic pages for SEO and accessibility and turn your admin section into an SPA by rendering it on the client only. This makes SvelteKit very versatile.
## prerender
It's likely that at least some routes of your app can be represented as a simple HTML file generated at build time. These routes can be [_prerendered_](glossary#Prerendering).
```js
/// file: +page.js/+page.server.js/+server.js
export const prerender = true;
```
Alternatively, you can set `export const prerender = true` in your root `+layout.js` or `+layout.server.js` and prerender everything except pages that are explicitly marked as _not_ prerenderable:
```js
/// file: +page.js/+page.server.js/+server.js
export const prerender = false;
```
Routes with `prerender = true` will be excluded from manifests used for dynamic SSR, making your server (or serverless/edge functions) smaller. In some cases you might want to prerender a route but also include it in the manifest (for example, with a route like `/blog/[slug]` where you want to prerender your most recent/popular content but server-render the long tail) — for these cases, there's a third option, 'auto':
```js
/// file: +page.js/+page.server.js/+server.js
export const prerender = 'auto';
```
> [!NOTE] If your entire app is suitable for prerendering, you can use [`adapter-static`](adapter-static), which will output files suitable for use with any static webserver.
The prerenderer will start at the root of your app and generate files for any prerenderable pages or `+server.js` routes it finds. Each page is scanned for `<a>` elements that point to other pages that are candidates for prerendering — because of this, you generally don't need to specify which pages should be accessed. If you _do_ need to specify which pages should be accessed by the prerenderer, you can do so with [`config.kit.prerender.entries`](configuration#prerender), or by exporting an [`entries`](#entries) function from your dynamic route.
While prerendering, the value of `building` imported from [`$app/environment`]($app-environment) will be `true`.
### Prerendering server routes
Unlike the other page options, `prerender` also applies to `+server.js` files. These files are _not_ affected by layouts, but will inherit default values from the pages that fetch data from them, if any. For example if a `+page.js` contains this `load` function...
```js
/// file: +page.js
export const prerender = true;
/** @type {import('./$types').PageLoad} */
export async function load({ fetch }) {
const res = await fetch('/my-server-route.json');
return await res.json();
}
```
...then `src/routes/my-server-route.json/+server.js` will be treated as prerenderable if it doesn't contain its own `export const prerender = false`.
### When not to prerender
The basic rule is this: for a page to be prerenderable, any two users hitting it directly must get the same content from the server.
> [!NOTE] Not all pages are suitable for prerendering. Any content that is prerendered will be seen by all users. You can of course fetch personalized data in `onMount` in a prerendered page, but this may result in a poorer user experience since it will involve blank initial content or loading indicators.
Note that you can still prerender pages that load data based on the page's parameters, such as a `src/routes/blog/[slug]/+page.svelte` route.
Accessing [`url.searchParams`](load#Using-URL-data-url) during prerendering is forbidden. If you need to use it, ensure you are only doing so in the browser (for example in `onMount`).
Pages with [actions](form-actions) cannot be prerendered, because a server must be able to handle the action `POST` requests.
### Route conflicts
Because prerendering writes to the filesystem, it isn't possible to have two endpoints that would cause a directory and a file to have the same name. For example, `src/routes/foo/+server.js` and `src/routes/foo/bar/+server.js` would try to create `foo` and `foo/bar`, which is impossible.
For that reason among others, it's recommended that you always include a file extension — `src/routes/foo.json/+server.js` and `src/routes/foo/bar.json/+server.js` would result in `foo.json` and `foo/bar.json` files living harmoniously side-by-side.
For _pages_, we skirt around this problem by writing `foo/index.html` instead of `foo`.
### Troubleshooting
If you encounter an error like 'The following routes were marked as prerenderable, but were not prerendered' it's because the route in question (or a parent layout, if it's a page) has `export const prerender = true` but the page wasn't reached by the prerendering crawler and thus wasn't prerendered.
Since these routes cannot be dynamically server-rendered, this will cause errors when people try to access the route in question. There are a few ways to fix it:
* Ensure that SvelteKit can find the route by following links from [`config.kit.prerender.entries`](configuration#prerender) or the [`entries`](#entries) page option. Add links to dynamic routes (i.e. pages with `[parameters]` ) to this option if they are not found through crawling the other entry points, else they are not prerendered because SvelteKit doesn't know what value the parameters should have. Pages not marked as prerenderable will be ignored and their links to other pages will not be crawled, even if some of them would be prerenderable.
* Ensure that SvelteKit can find the route by discovering a link to it from one of your other prerendered pages that have server-side rendering enabled.
* Change `export const prerender = true` to `export const prerender = 'auto'`. Routes with `'auto'` can be dynamically server rendered
## entries
SvelteKit will discover pages to prerender automatically, by starting at _entry points_ and crawling them. By default, all your non-dynamic routes are considered entry points — for example, if you have these routes...
```sh
/ # non-dynamic
/blog # non-dynamic
/blog/[slug] # dynamic, because of `[slug]`
```
...SvelteKit will prerender `/` and `/blog`, and in the process discover links like `<a href="/blog/hello-world">` which give it new pages to prerender.
Most of the time, that's enough. In some situations, links to pages like `/blog/hello-world` might not exist (or might not exist on prerendered pages), in which case we need to tell SvelteKit about their existence.
This can be done with [`config.kit.prerender.entries`](configuration#prerender), or by exporting an `entries` function from a `+page.js`, a `+page.server.js` or a `+server.js` belonging to a dynamic route:
```js
/// file: src/routes/blog/[slug]/+page.server.js
/** @type {import('./$types').EntryGenerator} */
export function entries() {
return [
{ slug: 'hello-world' },
{ slug: 'another-blog-post' }
];
}
export const prerender = true;
```
`entries` can be an `async` function, allowing you to (for example) retrieve a list of posts from a CMS or database, in the example above.
## ssr
Normally, SvelteKit renders your page on the server before sending that HTML to the client where it's [hydrated](glossary#Hydration). This is also required for prerendering to save the full contents of a page.
If you set `ssr` to `false`, it renders an empty 'shell' page instead. This is useful if your page is unable to be rendered on the server (because you use browser-only globals like `document` for example), but in most situations it's not recommended ([see appendix](glossary#SSR)).
```js
/// file: +page.js
export const ssr = false;
// If both `ssr` and `csr` are `false`, nothing will be rendered!
```
If you add `export const ssr = false` to your root `+layout.js`, your entire app will only be rendered on the client — which essentially means you turn your app into an [SPA](glossary#SPA). You should not do this if your goal is to build a [statically generated site](glossary#SSG).
> [!NOTE] If all your page options are boolean or string literal values, SvelteKit will evaluate them statically. If not, it will import your `+page.js` or `+layout.js` file on the server (both at build time, and at runtime if your app isn't fully static) so it can evaluate the options. In the second case, browser-only code must not run when the module is loaded. In practice, this means you should import browser-only code in your `+page.svelte` or `+layout.svelte` file instead.
## csr
Ordinarily, SvelteKit [hydrates](glossary#Hydration) your server-rendered HTML into an interactive client-side-rendered (CSR) page. Some pages don't require JavaScript at all — many blog posts and 'about' pages fall into this category. In these cases you can disable CSR:
```js
/// file: +page.js
export const csr = false;
// If both `csr` and `ssr` are `false`, nothing will be rendered!
```
Disabling CSR does not ship any JavaScript to the client. This means:
* The webpage should work with HTML and CSS only.
* `<script>` tags inside all Svelte components are removed.
* `<form>` elements cannot be [progressively enhanced](form-actions#Progressive-enhancement).
* Links are handled by the browser with a full-page navigation.
* Hot Module Replacement (HMR) will be disabled.
You can enable `csr` during development (for example to take advantage of HMR) like so:
```js
/// file: +page.js
import { dev } from '$app/environment';
export const csr = dev;
```
## trailingSlash
By default, SvelteKit will remove trailing slashes from URLs — if you visit `/about/`, it will respond with a redirect to `/about`. You can change this behaviour with the `trailingSlash` option, which can be one of `'never'` (the default), `'always'`, or `'ignore'`.
As with other page options, you can export this value from a `+layout.js` or a `+layout.server.js` and it will apply to all child pages. You can also export the configuration from `+server.js` files.
```js
/// file: src/routes/+layout.js
export const trailingSlash = 'always';
```
This option also affects [prerendering](#prerender). If `trailingSlash` is `always`, a route like `/about` will result in an `about/index.html` file, otherwise it will create `about.html`, mirroring static webserver conventions.
> [!NOTE] Ignoring trailing slashes is not recommended — the semantics of relative paths differ between the two cases (`./y` from `/x` is `/y`, but from `/x/` is `/x/y`), and `/x` and `/x/` are treated as separate URLs which is harmful to SEO.
## config
With the concept of [adapters](adapters), SvelteKit is able to run on a variety of platforms. Each of these might have specific configuration to further tweak the deployment — for example on Vercel you could choose to deploy some parts of your app on the edge and others on serverless environments.
`config` is an object with key-value pairs at the top level. Beyond that, the concrete shape is dependent on the adapter you're using. Every adapter should provide a `Config` interface to import for type safety. Consult the documentation of your adapter for more information.
```js
// @filename: ambient.d.ts
declare module 'some-adapter' {
export interface Config { runtime: string }
}
// @filename: index.js
// ---cut---
/// file: src/routes/+page.js
/** @type {import('some-adapter').Config} */
export const config = {
runtime: 'edge'
};
```
`config` objects are merged at the top level (but _not_ deeper levels). This means you don't need to repeat all the values in a `+page.js` if you want to only override some of the values in the upper `+layout.js`. For example this layout configuration...
```js
/// file: src/routes/+layout.js
export const config = {
runtime: 'edge',
regions: 'all',
foo: {
bar: true
}
}
```
...is overridden by this page configuration...
```js
/// file: src/routes/+page.js
export const config = {
regions: ['us1', 'us2'],
foo: {
baz: true
}
}
```
...which results in the config value `{ runtime: 'edge', regions: ['us1', 'us2'], foo: { baz: true } }` for that page.
## Further reading
- [Tutorial: Page options](/tutorial/kit/page-options)
================================================
FILE: documentation/docs/20-core-concepts/50-state-management.md
================================================
---
title: State management
---
If you're used to building client-only apps, state management in an app that spans server and client might seem intimidating. This section provides tips for avoiding some common gotchas.
## Avoid shared state on the server
Browsers are _stateful_ — state is stored in memory as the user interacts with the application. Servers, on the other hand, are _stateless_ — the content of the response is determined entirely by the content of the request.
Conceptually, that is. In reality, servers are often long-lived and shared by multiple users. For that reason it's important not to store data in shared variables. For example, consider this code:
```js
// @errors: 7034 7005
/// file: +page.server.js
let user;
/** @type {import('./$types').PageServerLoad} */
export function load() {
return { user };
}
/** @satisfies {import('./$types').Actions} */
export const actions = {
default: async ({ request }) => {
const data = await request.formData();
// NEVER DO THIS!
user = {
name: data.get('name'),
embarrassingSecret: data.get('secret')
};
}
}
```
The `user` variable is shared by everyone who connects to this server. If Alice submitted an embarrassing secret, and Bob visited the page after her, Bob would know Alice's secret. In addition, when Alice returns to the site later in the day, the server may have restarted, losing her data.
Instead, you should _authenticate_ the user using [`cookies`](load#Cookies) and persist the data to a database.
## No side-effects in load
For the same reason, your `load` functions should be _pure_ — no side-effects (except maybe the occasional `console.log(...)`). For example, you might be tempted to write to a store or global state inside a `load` function so that you can use the value in your components:
```js
/// file: +page.js
// @filename: ambient.d.ts
declare module '$lib/user' {
export const user: { set: (value: any) => void };
}
// @filename: index.js
// ---cut---
import { user } from '$lib/user';
/** @type {import('./$types').PageLoad} */
export async function load({ fetch }) {
const response = await fetch('/api/user');
// NEVER DO THIS!
user.set(await response.json());
}
```
As with the previous example, this puts one user's information in a place that is shared by _all_ users. Instead, just return the data...
```js
/// file: +page.js
/** @type {import('./$types').PageLoad} */
export async function load({ fetch }) {
const response = await fetch('/api/user');
+++ return {
user: await response.json()
};+++
}
```
...and pass it around to the components that need it, or use [`page.data`](load#page.data).
If you're not using SSR, then there's no risk of accidentally exposing one user's data to another. But you should still avoid side-effects in your `load` functions — your application will be much easier to reason about without them.
## Using state and stores with context
You might wonder how we're able to use `page.data` and other [app state]($app-state) (or [app stores]($app-stores)) if we can't use global state. The answer is that app state and app stores on the server use Svelte's [context API](/tutorial/svelte/context-api) — the state (or store) is attached to the component tree with `setContext`, and when you subscribe you retrieve it with `getContext`. We can do the same thing with our own state:
```svelte
<!--- file: src/routes/+layout.svelte --->
<script>
import { setContext } from 'svelte';
/** @type {import('./$types').LayoutProps} */
let { data } = $props();
// Pass a function referencing our state
// to the context for child components to access
setContext('user', () => data.user);
</script>
```
```svelte
<!--- file: src/routes/user/+page.svelte --->
<script>
import { getContext } from 'svelte';
// Retrieve user store from context
const user = getContext('user');
</script>
<p>Welcome {user().name}</p>
```
> [!NOTE] We're passing a function into `setContext` to keep reactivity across boundaries. Read more about it [here](/docs/svelte/$state#Passing-state-into-functions)
> [!LEGACY]
> You also use stores from `svelte/store` for this, but when using Svelte 5 it is recommended to make use of universal reactivity instead.
Updating the value of context-based state in deeper-level pages or components while the page is being rendered via SSR will not affect the value in the parent component because it has already been rendered by the time the state value is updated. In contrast, on the client (when CSR is enabled, which is the default) the value will be propagated and components, pages, and layouts higher in the hierarchy will react to the new value. Therefore, to avoid values 'flashing' during state updates during hydration, it is generally recommended to pass state down into components rather than up.
If you're not using SSR (and can guarantee that you won't need to use SSR in future) then you can safely keep state in a shared module, without using the context API.
## Component and page state is preserved
When you navigate around your application, SvelteKit reuses existing layout and page components. For example, if you have a route like this...
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
// THIS CODE IS BUGGY!
const wordCount = data.content.split(' ').length;
const estimatedReadingTime = wordCount / 250;
</script>
<header>
<h1>{data.title}</h1>
<p>Reading time: {Math.round(estimatedReadingTime)} minutes</p>
</header>
<div>{@html data.content}</div>
```
...then navigating from `/blog/my-short-post` to `/blog/my-long-post` won't cause the layout, page and any other components within to be destroyed and recreated. Instead the `data` prop (and by extension `data.title` and `data.content`) will update (as it would with any other Svelte component) and, because the code isn't rerunning, lifecycle methods like `onMount` and `onDestroy` won't rerun and `estimatedReadingTime` won't be recalculated.
Instead, we need to make the value [_reactive_](/tutorial/svelte/state):
```svelte
/// file: src/routes/blog/[slug]/+page.svelte
<script>
/** @type {import('./$types').PageProps} */
let { data } = $props();
+++ let wordCount = $derived(data.content.split(' ').length);
let estimatedReadingTime = $derived(wordCount / 250);+++
</script>
```
> [!NOTE] If your code in `onMount` and `onDestroy` has to run again after navigation you can use [afterNavigate]($app-navigation#afterNavigate) and [beforeNavigate]($app-navigation#beforeNavigate) respectively.
Reusing components like this means that things like sidebar scroll state are preserved, and you can easily animate between changing values. In the case that you do need to completely destroy and remount a component on navigation, you can use this pattern:
```svelte
<script>
import { page } from '$app/state';
</script>
{#key page.url.pathname}
<BlogPost title={data.title} content={data.title} />
{/key}
```
## Storing state in the URL
If you have state that should survive a reload and/or affect SSR, such as filters or sorting rules on a table, URL search parameters (like `?sort=price&order=ascending`) are a good place to put them. You can put them in `<a href="...">` or `<form action="...">` attributes, or set them programmatically via `goto('?key=value')`. They can be accessed inside `load` functions via the `url` parameter, and inside components via `page.url.searchParams`.
## Storing ephemeral state in snapshots
Some UI state, such as 'is the accordion open?', is disposable — if the user navigates away or refreshes the page, it doesn't matter if the state is lost. In some cases, you _do_ want the data to persist if the user navigates to a different page and comes back, but storing the state in the URL or in a database would be overkill. For this, SvelteKit provides [snapshots](snapshots), which let you associate component state with a history entry.
================================================
FILE: documentation/docs/20-core-concepts/60-remote-functions.md
================================================
---
title: Remote functions
---
<blockquote class="since note">
<p>Available since 2.27</p>
</blockquote>
Remote functions are a tool for type-safe communication between client and server. They can be _called_ anywhere in your app, but always _run_ on the server, meaning they can safely access [server-only modules](server-only-modules) containing things like environment variables and database clients.
Combined with Svelte's experimental support for [`await`](/docs/svelte/await-expressions), it allows you to load and manipulate data directly inside your components.
This feature is currently experimental, meaning it is likely to contain bugs and is subject to change without notice. You must opt in by adding the `kit.experimental.remoteFunctions` option in your `svelte.config.js` and optionally, the `compilerOptions.experimental.async` option to use `await` in components:
```js
/// file: svelte.config.js
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
experimental: {
+++remoteFunctions: true+++
}
},
compilerOptions: {
experimental: {
+++async: true+++
}
}
};
export default config;
```
## Overview
Remote functions are exported from a `.remote.js` or `.remote.ts` file, and come in four flavours: `query`, `form`, `command` and `prerender`. On the client, the exported functions are transformed to `fetch` wrappers that invoke their counterparts on the server via a generated HTTP endpoint. Remote files can be placed anywhere in your `src` directory (except inside the `src/lib/server` directory), and third party libraries can provide them, too.
## query
The `query` function allows you to read dynamic data from the server (for _static_ data, consider using [`prerender`](#prerender) instead):
```js
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import { query } from '$app/server';
import * as db from '$lib/server/database';
export const getPosts = query(async () => {
const posts = await db.sql`
SELECT title, slug
FROM post
ORDER BY published_at
DESC
`;
return posts;
});
```
> [!NOTE] Throughout this page, you'll see imports from fictional modules like `$lib/server/database` and `$lib/server/auth`. These are purely for illustrative purposes — you can use whatever database client and auth setup you like.
>
> The `db.sql` function above is a [tagged template function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) that escapes any interpolated values.
The query returned from `getPosts` works as a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) that resolves to `posts`:
```svelte
<!--- file: src/routes/blog/+page.svelte --->
<script>
import { getPosts } from './data.remote';
</script>
<h1>Recent posts</h1>
<ul>
{#each await getPosts() as { title, slug }}
<li><a href="/blog/{slug}">{title}</a></li>
{/each}
</ul>
```
Until the promise resolves — and if it errors — the nearest [`<svelte:boundary>`](../svelte/svelte-boundary) will be invoked.
While using `await` is recommended, as an alternative the query also has `loading`, `error` and `current` properties:
```svelte
<!--- file: src/routes/blog/+page.svelte --->
<script>
import { getPosts } from './data.remote';
const query = getPosts();
</script>
<h1>Recent posts</h1>
{#if query.error}
<p>oops!</p>
{:else if query.loading}
<p>loading...</p>
{:else}
<ul>
{#each query.current as { title, slug }}
<li><a href="/blog/{slug}">{title}</a></li>
{/each}
</ul>
{/if}
```
> [!NOTE] For the rest of this document, we'll use the `await` form.
### Query arguments
Query functions can accept an argument, such as the `slug` of an individual post:
```svelte
<!--- file: src/routes/blog/[slug]/+page.svelte --->
<script>
import { getPost } from '../data.remote';
let { params } = $props();
const post = $derived(await getPost(params.slug));
</script>
<h1>{post.title}</h1>
<div>{@html post.content}</div>
```
Since `getPost` exposes an HTTP endpoint, it's important to validate this argument to be sure that it's the correct type. For this, we can use any [Standard Schema](https://standardschema.dev/) validation library such as [Zod](https://zod.dev/) or [Valibot](https://valibot.dev/):
```js
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { error } from '@sveltejs/kit';
import { query } from '$app/server';
import * as db from '$lib/server/database';
export const getPosts = query(async () => { /* ... */ });
export const getPost = query(v.string(), async (slug) => {
const [post] = await db.sql`
SELECT * FROM post
WHERE slug = ${slug}
`;
if (!post) error(404, 'Not found');
return post;
});
```
Both the argument and the return value are serialized with [devalue](https://github.com/sveltejs/devalue), which handles types like `Date` and `Map` (and custom types defined in your [transport hook](hooks#Universal-hooks-transport)) in addition to JSON.
### Refreshing queries
Any query can be re-fetched via its `refresh` method, which retrieves the latest value from the server:
```svelte
<button onclick={() => getPosts().refresh()}>
Check for new posts
</button>
```
> [!NOTE] Queries are cached while they're on the page, meaning `getPosts() === getPosts()`. This means you don't need a reference like `const posts = getPosts()` in order to update the query.
## query.batch
`query.batch` works like `query` except that it batches requests that happen within the same macrotask. This solves the so-called n+1 problem: rather than each query resulting in a separate database call (for example), simultaneous queries are grouped together.
On the server, the callback receives an array of the arguments the function was called with. It must return a function of the form `(input: Input, index: number) => Output`. SvelteKit will then call this with each of the input arguments to resolve the individual calls with their results.
```js
/// file: weather.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { query } from '$app/server';
import * as db from '$lib/server/database';
export const getWeather = query.batch(v.string(), async (cityIds) => {
const weather = await db.sql`
SELECT * FROM weather
WHERE city_id = ANY(${cityIds})
`;
const lookup = new Map(weather.map(w => [w.city_id, w]));
return (cityId) => lookup.get(cityId);
});
```
```svelte
<!--- file: Weather.svelte --->
<script>
import CityWeather from './CityWeather.svelte';
import { getWeather } from './weather.remote';
let { cities } = $props();
let limit = $state(5);
</script>
<h2>Weather</h2>
{#each cities.slice(0, limit) as city}
<h3>{city.name}</h3>
<CityWeather weather={await getWeather(city.id)} />
{/each}
{#if cities.length > limit}
<button onclick={() => limit += 5}>
Load more
</button>
{/if}
```
## form
The `form` function makes it easy to write data to the server. It takes a callback that receives `data` constructed from the submitted [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData)...
```ts
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
declare module '$lib/server/auth' {
interface User {
name: string;
}
/**
* Gets a user's info from their cookies, using `getRequestEvent`
*/
export function getUser(): Promise<User | null>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { error, redirect } from '@sveltejs/kit';
import { query, form } from '$app/server';
import * as db from '$lib/server/database';
import * as auth from '$lib/server/auth';
export const getPosts = query(async () => { /* ... */ });
export const getPost = query(v.string(), async (slug) => { /* ... */ });
export const createPost = form(
v.object({
title: v.pipe(v.string(), v.nonEmpty()),
content:v.pipe(v.string(), v.nonEmpty())
}),
async ({ title, content }) => {
// Check the user is logged in
const user = await auth.getUser();
if (!user) error(401, 'Unauthorized');
const slug = title.toLowerCase().replace(/ /g, '-');
// Insert into the database
await db.sql`
INSERT INTO post (slug, title, content)
VALUES (${slug}, ${title}, ${content})
`;
// Redirect to the newly created page
redirect(303, `/blog/${slug}`);
}
);
```
...and returns an object that can be spread onto a `<form>` element. The callback is called whenever the form is submitted.
```svelte
<!--- file: src/routes/blog/new/+page.svelte --->
<script>
import { createPost } from '../data.remote';
</script>
<h1>Create a new post</h1>
<form {...createPost}>
<!-- form content goes here -->
<button>Publish!</button>
</form>
```
The form object contains `method` and `action` properties that allow it to work without JavaScript (i.e. it submits data and reloads the page). It also has an [attachment](/docs/svelte/@attach) that progressively enhances the form when JavaScript is available, submitting data *without* reloading the entire page.
As with `query`, if the callback uses the submitted `data`, it should be [validated](#query-Query-arguments) by passing a [Standard Schema](https://standardschema.dev) as the first argument to `form`.
### Fields
A form is composed of a set of _fields_, which are defined by the schema. In the case of `createPost`, we have two fields, `title` and `content`, which are both strings. To get the attributes for a field, call its `.as(...)` method, specifying which [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#input_types) to use:
```svelte
<form {...createPost}>
<label>
<h2>Title</h2>
+++<input {...createPost.fields.title.as('text')} />+++
</label>
<label>
<h2>Write your post</h2>
+++<textarea {...createPost.fields.content.as('text')}></textarea>+++
</label>
<button>Publish!</button>
</form>
```
These attributes allow SvelteKit to set the correct input type, set a `name` that is used to construct the `data` passed to the handler, populate the `value` of the form (for example following a failed submission, to save the user having to re-enter everything), and set the [`aria-invalid`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-invalid) state.
> [!NOTE] The generated `name` attribute uses JS object notation (e.g. `nested.array[0].value`). String keys that require quotes such as `object['nested-array'][0].value` are not supported. Under the hood, boolean checkbox and number field names are prefixed with `b:` and `n:`, respectively, to signal SvelteKit to coerce the values from strings prior to validation.
Fields can be nested in objects and arrays, and their values can be strings, numbers, booleans or `File` objects. For example, if your schema looked like this...
```js
/// file: data.remote.js
import * as v from 'valibot';
import { form } from '$app/server';
// ---cut---
const datingProfile = v.object({
name: v.string(),
photo: v.file(),
info: v.object({
height: v.number(),
likesDogs: v.optional(v.boolean(), false)
}),
attributes: v.array(v.string())
});
export const createProfile = form(datingProfile, (data) => { /* ... */ });
```
...your form could look like this:
```svelte
<script>
import { createProfile } from './data.remote';
const { name, photo, info, attributes } = createProfile.fields;
</script>
<form {...createProfile} enctype="multipart/form-data">
<label>
<input {...name.as('text')} /> Name
</label>
<label>
<input {...photo.as('file')} /> Photo
</label>
<label>
<input {...info.height.as('number')} /> Height (cm)
</label>
<label>
<input {...info.likesDogs.as('checkbox')} /> I like dogs
</label>
<h2>My best attributes</h2>
<input {...attributes[0].as('text')} />
<input {...attributes[1].as('text')} />
<input {...attributes[2].as('text')} />
<button>submit</button>
</form>
```
Because our form contains a `file` input, we've added an `enctype="multipart/form-data"` attribute. The values for `info.height` and `info.likesDogs` are coerced to a number and a boolean respectively.
> [!NOTE] If a `checkbox` input is unchecked, the value is not included in the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object that SvelteKit constructs the data from. As such, we have to make the value optional in our schema. In Valibot that means using `v.optional(v.boolean(), false)` instead of just `v.boolean()`, whereas in Zod it would mean using `z.coerce.boolean<boolean>()`.
In the case of `radio` and `checkbox` inputs that all belong to the same field, the `value` must be specified as a second argument to `.as(...)`:
```js
/// file: data.remote.js
import * as v from 'valibot';
import { form } from '$app/server';
// ---cut---
export const operatingSystems = /** @type {const} */ (['windows', 'mac', 'linux']);
export const languages = /** @type {const} */ (['html', 'css', 'js']);
export const survey = form(
v.object({
operatingSystem: v.picklist(operatingSystems),
languages: v.optional(v.array(v.picklist(languages)), []),
}),
(data) => { /* ... */ },
);
```
```svelte
<form {...survey}>
<h2>Which operating system do you use?</h2>
{#each operatingSystems as os}
<label>
<input {...survey.fields.operatingSystem.as('radio', os)}>
{os}
</label>
{/each}
<h2>Which languages do you write code in?</h2>
{#each languages as language}
<label>
<input {...survey.fields.languages.as('checkbox', language)}>
{language}
</label>
{/each}
<button>submit</button>
</form>
```
Alternatively, you could use `select` and `select multiple`:
```svelte
<form {...survey}>
<h2>Which operating system do you use?</h2>
<select {...survey.fields.operatingSystem.as('select')}>
{#each operatingSystems as os}
<option>{os}</option>
{/each}
</select>
<h2>Which languages do you write code in?</h2>
<select {...survey.fields.languages.as('select multiple')}>
{#each languages as language}
<option>{language}</option>
{/each}
</select>
<button>submit</button>
</form>
```
> [!NOTE] As with unchecked `checkbox` inputs, if no selections are made then the data will be `undefined`. For this reason, the `languages` field uses `v.optional(v.array(...), [])` rather than just `v.array(...)`.
### Programmatic validation
In addition to declarative schema validation, you can programmatically mark fields as invalid inside the form handler using the `invalid` helper from `@sveltejs/kit`. This is useful for cases where you can't know if something is valid until you try to perform some action.
- It throws just like `redirect` or `error`
- It accepts multiple arguments that can be strings (for issues relating to the form as a whole — these will only show up in `fields.allIssues()`) or standard-schema-compliant issues (for those relating to a specific field). Use the `issue` parameter for type-safe creation of such issues:
```js
/// file: src/routes/shop/data.remote.js
import * as v from 'valibot';
import { invalid } from '@sveltejs/kit';
import { form } from '$app/server';
import * as db from '$lib/server/database';
export const buyHotcakes = form(
v.object({
qty: v.pipe(
v.number(),
v.minValue(1, 'you must buy at least one hotcake')
)
}),
async (data, issue) => {
try {
await db.buy(data.qty);
} catch (e) {
if (e.code === 'OUT_OF_STOCK') {
invalid(
issue.qty(`we don't have enough hotcakes`)
);
}
}
}
);
```
### Validation
If the submitted data doesn't pass the schema, the callback will not run. Instead, each invalid field's `issues()` method will return an array of `{ message: string }` objects, and the `aria-invalid` attribute (returned from `as(...)`) will be set to `true`:
```svelte
<form {...createPost}>
<label>
<h2>Title</h2>
+++ {#each createPost.fields.title.issues() as issue}
<p class="issue">{issue.message}</p>
{/each}+++
<input {...createPost.fields.title.as('text')} />
</label>
<label>
<h2>Write your post</h2>
+++ {#each createPost.fields.content.issues() as issue}
<p class="issue">{issue.message}</p>
{/each}+++
<textarea {...createPost.fields.content.as('text')}></textarea>
</label>
<button>Publish!</button>
</form>
```
You don't need to wait until the form is submitted to validate the data — you can call `validate()` programmatically, for example in an `oninput` callback (which will validate the data on every keystroke) or an `onchange` callback:
```svelte
<form {...createPost} oninput={() => createPost.validate()}>
<!-- -->
</form>
```
By default, issues will be ignored if they belong to form controls that haven't yet been interacted with. To validate _all_ inputs, call `validate({ includeUntouched: true })`.
For client-side validation, you can specify a _preflight_ schema which will populate `issues()` and prevent data being sent to the server if the data doesn't validate:
```svelte
<script>
import * as v from 'valibot';
import { createPost } from '../data.remote';
const schema = v.object({
title: v.pipe(v.string(), v.nonEmpty()),
content: v.pipe(v.string(), v.nonEmpty())
});
</script>
<h1>Create a new post</h1>
<form {...+++createPost.preflight(schema)+++}>
<!-- -->
</form>
```
> [!NOTE] The preflight schema can be the same object as your server-side schema, if appropriate, though it won't be able to do server-side checks like 'this value already exists in the database'. Note that you cannot export a schema from a `.remote.ts` or `.remote.js` file, so the schema must either be exported from a shared module, or from a `<script module>` block in the component containing the `<form>`.
To get a list of _all_ issues, rather than just those belonging to a single field, you can use the `fields.allIssues()` method:
```svelte
{#each createPost.fields.allIssues() as issue}
<p>{issue.message}</p>
{/each}
```
### Getting/setting inputs
Each field has a `value()` method that reflects its current value. As the user interacts with the form, it is automatically updated:
```svelte
<form {...createPost}>
<!-- -->
</form>
<div class="preview">
<h2>{createPost.fields.title.value()}</h2>
<div>{@html render(createPost.fields.content.value())}</div>
</div>
```
Alternatively, `createPost.fields.value()` would return a `{ title, content }` object.
You can update a field (or a collection of fields) via the `set(...)` method:
```svelte
<script>
import { createPost } from '../data.remote';
// this...
createPost.fields.set({
title: 'My new blog post',
content: 'Lorem ipsum dolor sit amet...'
});
// ...is equivalent to this:
createPost.fields.title.set('My new blog post');
createPost.fields.content.set('Lorem ipsum dolor sit amet');
</script>
```
### Handling sensitive data
In the case of a non-progressively-enhanced form submission (i.e. where JavaScript is unavailable, for whatever reason) `value()` is also populated if the submitted data is invalid, so that the user does not need to fill the entire form out from scratch.
You can prevent sensitive data (such as passwords and credit card numbers) from being sent back to the user by using a name with a leading underscore:
```svelte
<form {...register}>
<label>
Username
<input {...register.fields.username.as('text')} />
</label>
<label>
Password
<input +++{...register.fields._password.as('password')}+++ />
</label>
<button>Sign up!</button>
</form>
```
In this example, if the data does not validate, only the first `<input>` will be populated when the page reloads.
### Single-flight mutations
By default, all queries used on the page (along with any `load` functions) are automatically refreshed following a successful form submission. This ensures that everything is up-to-date, but it's also inefficient: many queries will be unchanged, and it requires a second trip to the server to get the updated data.
Instead, we can specify which queries should be refreshed in response to a particular form submission. This is called a _single-flight mutation_, and there are two ways to achieve it. The first is to refresh the query on the server, inside the form handler:
```js
import * as v from 'valibot';
import { error, redirect } from '@sveltejs/kit';
import { query, form } from '$app/server';
const slug = '';
const post = { id: '' };
/** @type {any} */
const externalApi = '';
// ---cut---
export const getPosts = query(async () => { /* ... */ });
export const getPost = query(v.string(), async (slug) => { /* ... */ });
export const createPost = form(
v.object({/* ... */}),
async (data) => {
// form logic goes here...
// Refresh `getPosts()` on the server, and send
// the data back with the result of `createPost`
+++await getPosts().refresh();+++
// Redirect to the newly created page
redirect(303, `/blog/${slug}`);
}
);
export const updatePost = form(
v.object({/* ... */}),
async (data) => {
// form logic goes here...
const result = externalApi.update(post);
// The API already gives us the updated post,
// no need to refresh it, we can set it directly
+++await getPost(post.id).set(result);+++
}
);
```
The second is to drive the single-flight mutation from the client, which we'll see in the section on [`enhance`](#form-enhance).
### Returns and redirects
The example above uses [`redirect(...)`](@sveltejs-kit#redirect), which sends the user to the newly created page. Alternatively, the callback could return data, in which case it would be available as `createPost.result`:
```ts
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
declare module '$lib/server/auth' {
interface User {
name: string;
}
/**
* Gets a user's info from their cookies, using `getRequestEvent`
*/
export function getUser(): Promise<User | null>;
}
// @filename: index.js
import * as v from 'valibot';
import { error, redirect } from '@sveltejs/kit';
import { query, form } from '$app/server';
import * as db from '$lib/server/database';
import * as auth from '$lib/server/auth';
export const getPosts = query(async () => { /* ... */ });
export const getPost = query(v.string(), async (slug) => { /* ... */ });
// ---cut---
export const createPost = form(
v.object({/* ... */}),
async (data) => {
// ...
return { success: true };
}
);
```
```svelte
<!--- file: src/routes/blog/new/+page.svelte --->
<script>
import { createPost } from '../data.remote';
</script>
<h1>Create a new post</h1>
<form {...createPost}>
<!-- -->
</form>
{#if createPost.result?.success}
<p>Successfully published!</p>
{/if}
```
This value is _ephemeral_ — it will vanish if you resubmit, navigate away, or reload the page.
> [!NOTE] The `result` value need not indicate success — it can also contain validation errors, along with any data that should repopulate the form on page reload.
If an error occurs during submission, the nearest `+error.svelte` page will be rendered.
### enhance
We can customize what happens when the form is submitted with the `enhance` method:
```svelte
<!--- file: src/routes/blog/new/+page.svelte --->
<script>
import { createPost } from '../data.remote';
import { showToast } from '$lib/toast';
</script>
<h1>Create a new post</h1>
<form {...createPost.enhance(async ({ form, data, submit }) => {
try {
await submit();
form.reset();
showToast('Successfully published!');
} catch (error) {
showToast('Oh no! Something went wrong');
}
})}>
<!-- -->
</form>
```
> When using `enhance`, the `<form>` is not automatically reset — you must call `form.reset()` if you want to clear the inputs.
The callback receives the `form` element, the `data` it contains, and a `submit` function.
To enable client-driven [single-flight mutations](#form-Single-flight-mutations), use `submit().updates(...)`. For example, if the `getPosts()` query was used on this page, we could refresh it like so:
```ts
import type { RemoteQuery, RemoteQueryOverride } from '@sveltejs/kit';
interface Post {}
declare function submit(): Promise<any> & {
updates(...queries: Array<RemoteQuery<any> | RemoteQueryOverride>): Promise<any>;
}
declare function getPosts(): RemoteQuery<Post[]>;
// ---cut---
await submit().updates(getPosts());
```
We can also _override_ the current data while the submission is ongoing:
```ts
import type { RemoteQuery, RemoteQueryOverride } from '@sveltejs/kit';
interface Post {}
declare function submit(): Promise<any> & {
updates(...queries: Array<RemoteQuery<any> | RemoteQueryOverride>): Promise<any>;
}
declare function getPosts(): RemoteQuery<Post[]>;
declare const newPost: Post;
// ---cut---
await submit().updates(
getPosts().withOverride((posts) => [newPost, ...posts])
);
```
The override will be applied immediately, and released when the submission completes (or fails).
### Multiple instances of a form
Some forms may be repeated as part of a list. In this case you can create separate instances of a form function via `for(id)` to achieve isolation.
```svelte
<!--- file: src/routes/todos/+page.svelte --->
<script>
import { getTodos, modifyTodo } from '../data.remote';
</script>
<h1>Todos</h1>
{#each await getTodos() as todo}
{@const modify = modifyTodo.for(todo.id)}
<form {...modify}>
<!-- -->
<button disabled={!!modify.pending}>save changes</button>
</form>
{/each}
```
### Multiple submit buttons
It's possible for a `<form>` to have multiple submit buttons. For example, you might have a single form that allows you to log in or register depending on which button was clicked.
To accomplish this, add a field to your schema for the button value, and use `as('submit', value)` to bind it:
```svelte
<!--- file: src/routes/login/+page.svelte --->
<script>
import { loginOrRegister } from '$lib/auth';
</script>
<form {...loginOrRegister}>
<label>
Your username
<input {...loginOrRegister.fields.username.as('text')} />
</label>
<label>
Your password
<input {...loginOrRegister.fields._password.as('password')} />
</label>
<button {...loginOrRegister.fields.action.as('submit', 'login')}>login</button>
<button {...loginOrRegister.fields.action.as('submit', 'register')}>register</button>
</form>
```
In your form handler, you can check which button was clicked:
```js
/// file: $lib/auth.js
import * as v from 'valibot';
import { form } from '$app/server';
export const loginOrRegister = form(
v.object({
username: v.string(),
_password: v.string(),
action: v.picklist(['login', 'register'])
}),
async ({ username, _password, action }) => {
if (action === 'login') {
// handle login
} else {
// handle registration
}
}
);
```
## command
The `command` function, like `form`, allows you to write data to the server. Unlike `form`, it's not specific to an element and can be called from anywhere.
> [!NOTE] Prefer `form` where possible, since it gracefully degrades if JavaScript is disabled or fails to load.
As with `query` and `form`, if the function accepts an argument, it should be [validated](#query-Query-arguments) by passing a [Standard Schema](https://standardschema.dev) as the first argument to `command`.
```ts
/// file: likes.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { query, command } from '$app/server';
import * as db from '$lib/server/database';
export const getLikes = query(v.string(), async (id) => {
const [row] = await db.sql`
SELECT likes
FROM item
WHERE id = ${id}
`;
return row.likes;
});
export const addLike = command(v.string(), async (id) => {
await db.sql`
UPDATE item
SET likes = likes + 1
WHERE id = ${id}
`;
});
```
Now simply call `addLike`, from (for example) an event handler:
```svelte
<!--- file: +page.svelte --->
<script>
import { getLikes, addLike } from './likes.remote';
import { showToast } from '$lib/toast';
let { item } = $props();
</script>
<button
onclick={async () => {
try {
await addLike(item.id);
} catch (error) {
showToast('Something went wrong!');
}
}}
>
add like
</button>
<p>likes: {await getLikes(item.id)}</p>
```
> [!NOTE] Commands cannot be called during render.
### Updating queries
To update `getLikes(item.id)`, or any other query, we need to tell SvelteKit _which_ queries need to be refreshed (unlike `form`, which by default invalidates everything, to approximate the behaviour of a native form submission).
We either do that inside the command itself...
```js
/// file: likes.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { query, command } from '$app/server';
import * as db from '$lib/server/database';
// ---cut---
export const getLikes = query(v.string(), async (id) => { /* ... */ });
export const addLike = command(v.string(), async (id) => {
await db.sql`
UPDATE item
SET likes = likes + 1
WHERE id = ${id}
`;
+++getLikes(id).refresh();+++
// Just like within form functions you can also do
// getLikes(id).set(...)
// in case you have the result already
});
```
...or when we call it:
```ts
import { RemoteCommand, RemoteQueryFunction } from '@sveltejs/kit';
interface Item { id: string }
declare const addLike: RemoteCommand<string, void>;
declare const getLikes: RemoteQueryFunction<string, number>;
declare function showToast(message: string): void;
declare const item: Item;
// ---cut---
try {
await addLike(item.id).+++updates(getLikes(item.id))+++;
} catch (error) {
showToast('Something went wrong!');
}
```
As before, we can use `withOverride` for optimistic updates:
```ts
import { RemoteCommand, RemoteQueryFunction } from '@sveltejs/kit';
interface Item { id: string }
declare const addLike: RemoteCommand<string, void>;
declare const getLikes: RemoteQueryFunction<string, number>;
declare function showToast(message: string): void;
declare const item: Item;
// ---cut---
try {
await addLike(item.id).updates(
getLikes(item.id).+++withOverride((n) => n + 1)+++
);
} catch (error) {
showToast('Something went wrong!');
}
```
## prerender
The `prerender` function is similar to `query`, except that it will be invoked at build time to prerender the result. Use this for data that changes at most once per redeployment.
```js
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import { prerender } from '$app/server';
import * as db from '$lib/server/database';
export const getPosts = prerender(async () => {
const posts = await db.sql`
SELECT title, slug
FROM post
ORDER BY published_at
DESC
`;
return posts;
});
```
You can use `prerender` functions on pages that are otherwise dynamic, allowing for partial prerendering of your data. This results in very fast navigation, since prerendered data can live on a CDN along with your other static assets.
In the browser, prerendered data is saved using the [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache) API. This cache survives page reloads, and will be cleared when the user first visits a new deployment of your app.
> [!NOTE] When the entire page has `export const prerender = true`, you cannot use queries, as they are dynamic.
### Prerender arguments
As with queries, prerender functions can accept an argument, which should be [validated](#query-Query-arguments) with a [Standard Schema](https://standardschema.dev/):
```js
/// file: src/routes/blog/data.remote.js
// @filename: ambient.d.ts
declare module '$lib/server/database' {
export function sql(strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
}
// @filename: index.js
// ---cut---
import * as v from 'valibot';
import { error } from '@sveltejs/kit';
import { prerender } from '$app/server';
import * as db from '$lib/server/database';
export const getPosts = prerender(async () => { /* ... */ });
export const getPost = prerender(v.string(), async (slug) => {
const [post] = await db.sql`
SELECT * FROM post
WHERE slug = ${slug}
`;
if (!post) error(404, 'Not found');
return post;
});
```
Any calls to `getPost(...)` found by SvelteKit's crawler while [prerendering pages](page-options#prerender) will be saved automatically, but you can also specify which values it should be called with using the `inputs` option:
```js
/// file: src/routes/blog/data.remote.js
import * as v from 'valibot';
import { prerender } from '$app/server';
// ---cut---
export const getPost = prerender(
v.string(),
async (slug) => { /* ... */ },
{
inputs: () => [
'first-post',
'second-post',
'third-post'
]
}
);
```
By default, prerender functions are excluded from your server bundle, which means that you cannot call them with any arguments that were _not_ prerendered. You can set `dynamic: true` to change this behaviour:
```js
/// file: src/routes/blog/data.remote.js
import * as v from 'valibot';
import { prerender } from '$app/server';
// ---cut---
export const getPost = prerender(
v.string(),
async (slug) => { /* ... */ },
{
+++dynamic: true+++,
inputs: () => [
'first-post',
'second-post',
'third-post'
]
}
);
```
## Handling validation errors
As long as _you're_ not passing invalid data to your remote functions, there are only two reasons why the argument passed to a `command`, `query` or `prerender` function would fail validation:
- the function signature changed between deployments, and some users are currently on an older version of your app
- someone is trying to attack your site by poking your exposed endpoints with bad data
In the second case, we don't want to give the attacker any help, so SvelteKit will generate a generic [400 Bad Request](https://http.dog/400) response. You can control the message by implementing the [`handleValidationError`](hooks#Server-hooks-handleValidationError) server hook, which, like [`handleError`](hooks#Shared-hooks-handleError), must return an [`App.Error`](errors#Type-safety) (which defaults to `{ message: string }`):
```js
/// file: src/hooks.server.ts
/** @type {import('@sveltejs/kit').HandleValidationError} */
export function handleValidationError({ event, issues }) {
return {
message: 'Nice try, hacker!'
};
}
```
If you know what you're doing and want to opt out of validation, you can pass the string `'unchecked'` in place of a schema:
```ts
/// file: data.remote.ts
import { query } from '$app/server';
export const getStuff = query('unchecked', async ({ id }: { id: string }) => {
// the shape might not actually be what TypeScript thinks
// since bad actors might call this function with other arguments
});
```
## Using `getRequestEvent`
Inside `query`, `form` and `command` you can use [`getRequestEvent`]($app-server#getRequestEvent) to get the current [`RequestEvent`](@sveltejs-kit#RequestEvent) object. This makes it easy to build abstractions for interacting with cookies, for example:
```ts
/// file: user.remote.ts
import { getRequestEvent, query } from '$app/server';
import { findUser } from '$lib/server/database';
export const getProfile = query(async () => {
const user = await getUser();
return {
name: user.name,
avatar: user.avatar
};
});
// this query could be called from multiple places, but
// the function will only run once per request
const getUser = query(async () => {
const { cookies } = getRequestEvent();
return await findUser(cookies.get('session_id'));
});
```
Note that some properties of `RequestEvent` are different inside remote functions:
- you cannot set headers (other than writing cookies, and then only inside `form` and `command` functions)
- `route`, `params` and `url` relate to the page the remote function was called from, _not_ the URL of the endpoint SvelteKit creates for the remote function. Queries are not re-run when the user navigates (unless the argument to the query changes as a result of navigation), and so you should be mindful of how you use these values. In particular, never use them to determine whether or not a user is authorized to access certain data.
## Redirects
Inside `query`, `form` and `prerender` functions it is possible to use the [`redirect(...)`](@sveltejs-kit#redirect) function. It is *not* possible inside `command` functions, as you should avoid redirecting here. (If you absolutely have to, yo
gitextract_6rnhbcf0/ ├── .changeset/ │ ├── busy-goats-brush.md │ ├── config.json │ ├── eight-sheep-unite.md │ ├── great-actors-stop.md │ ├── many-flowers-press.md │ ├── orange-queens-rush.md │ └── silver-baths-camp.md ├── .editorconfig ├── .eslint/ │ └── no-runtime-to-exports-imports.js ├── .gitattributes ├── .githooks/ │ └── pre-push ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── platform-test/ │ │ │ └── action.yml │ │ └── vercel-deploy/ │ │ └── action.yml │ └── workflows/ │ ├── audit.yml │ ├── autofix-lint.yml │ ├── ci.yml │ ├── platform-tests-all.yml │ ├── platform-tests-vercel.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── .prettierrc ├── .well-known/ │ └── funding-manifest-urls ├── AGENTS.md ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE ├── README.md ├── documentation/ │ └── docs/ │ ├── 10-getting-started/ │ │ ├── 10-introduction.md │ │ ├── 20-creating-a-project.md │ │ ├── 25-project-types.md │ │ ├── 30-project-structure.md │ │ ├── 40-web-standards.md │ │ └── index.md │ ├── 20-core-concepts/ │ │ ├── 10-routing.md │ │ ├── 20-load.md │ │ ├── 30-form-actions.md │ │ ├── 40-page-options.md │ │ ├── 50-state-management.md │ │ ├── 60-remote-functions.md │ │ └── index.md │ ├── 25-build-and-deploy/ │ │ ├── 10-building-your-app.md │ │ ├── 20-adapters.md │ │ ├── 30-adapter-auto.md │ │ ├── 40-adapter-node.md │ │ ├── 50-adapter-static.md │ │ ├── 55-single-page-apps.md │ │ ├── 60-adapter-cloudflare.md │ │ ├── 70-adapter-cloudflare-workers.md │ │ ├── 80-adapter-netlify.md │ │ ├── 90-adapter-vercel.md │ │ ├── 99-writing-adapters.md │ │ └── index.md │ ├── 30-advanced/ │ │ ├── 10-advanced-routing.md │ │ ├── 20-hooks.md │ │ ├── 25-errors.md │ │ ├── 30-link-options.md │ │ ├── 40-service-workers.md │ │ ├── 50-server-only-modules.md │ │ ├── 65-snapshots.md │ │ ├── 67-shallow-routing.md │ │ ├── 68-observability.md │ │ ├── 70-packaging.md │ │ └── index.md │ ├── 40-best-practices/ │ │ ├── 03-auth.md │ │ ├── 05-performance.md │ │ ├── 06-icons.md │ │ ├── 07-images.md │ │ ├── 10-accessibility.md │ │ ├── 20-seo.md │ │ └── index.md │ ├── 60-appendix/ │ │ ├── 10-faq.md │ │ ├── 20-integrations.md │ │ ├── 25-debugging.md │ │ ├── 30-migrating-to-sveltekit-2.md │ │ ├── 40-migrating.md │ │ ├── 50-additional-resources.md │ │ ├── 60-glossary.md │ │ └── index.md │ ├── 98-reference/ │ │ ├── 10-@sveltejs-kit.md │ │ ├── 15-@sveltejs-kit-hooks.md │ │ ├── 15-@sveltejs-kit-node-polyfills.md │ │ ├── 15-@sveltejs-kit-node.md │ │ ├── 15-@sveltejs-kit-vite.md │ │ ├── 20-$app-environment.md │ │ ├── 20-$app-forms.md │ │ ├── 20-$app-navigation.md │ │ ├── 20-$app-paths.md │ │ ├── 20-$app-server.md │ │ ├── 20-$app-state.md │ │ ├── 20-$app-stores.md │ │ ├── 20-$app-types.md │ │ ├── 25-$env-dynamic-private.md │ │ ├── 25-$env-dynamic-public.md │ │ ├── 25-$env-static-private.md │ │ ├── 25-$env-static-public.md │ │ ├── 26-$lib.md │ │ ├── 27-$service-worker.md │ │ ├── 50-configuration.md │ │ ├── 52-cli.md │ │ ├── 54-types.md │ │ └── index.md │ └── index.md ├── eslint.config.js ├── package.json ├── packages/ │ ├── adapter-auto/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── adapters.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── test/ │ │ │ └── adapters.spec.js │ │ └── tsconfig.json │ ├── adapter-cloudflare/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── ambient.d.ts │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── internal.d.ts │ │ ├── package.json │ │ ├── src/ │ │ │ └── worker.js │ │ ├── test/ │ │ │ ├── apps/ │ │ │ │ ├── pages/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── server-side-dep/ │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ └── workers/ │ │ │ │ ├── .gitignore │ │ │ │ ├── config/ │ │ │ │ │ └── wrangler.jsonc │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── server-side-dep/ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ ├── app.html │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ ├── +page.svelte │ │ │ │ │ ├── ctx/ │ │ │ │ │ │ └── +server.js │ │ │ │ │ └── read/ │ │ │ │ │ ├── +server.js │ │ │ │ │ └── file.txt │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.js │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.js │ │ │ └── utils.js │ │ ├── tsconfig.json │ │ ├── utils.js │ │ └── utils.spec.js │ ├── adapter-netlify/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── ambient.d.ts │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── internal.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── edge.js │ │ │ ├── serverless.js │ │ │ └── shims.js │ │ ├── test/ │ │ │ ├── apps/ │ │ │ │ ├── basic/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── netlify.toml │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── instrumentation.server.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ └── read/ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ └── file.txt │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ │ ├── edge/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── netlify.toml │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ └── read/ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ └── file.txt │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ │ └── split/ │ │ │ │ ├── .gitignore │ │ │ │ ├── netlify.toml │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── app.html │ │ │ │ │ ├── instrumentation.server.js │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ └── [id]/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ └── remote/ │ │ │ │ │ └── query/ │ │ │ │ │ ├── +page.js │ │ │ │ │ ├── +page.svelte │ │ │ │ │ └── example.remote.js │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.js │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── preview.js │ │ │ └── utils.js │ │ └── tsconfig.json │ ├── adapter-node/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── ambient.d.ts │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── internal.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── env.js │ │ │ ├── handler.js │ │ │ ├── index.js │ │ │ └── shims.js │ │ ├── tests/ │ │ │ ├── env.spec.ts │ │ │ ├── smoke.spec_disabled.js │ │ │ └── utils.spec.ts │ │ ├── tsconfig.json │ │ └── utils.js │ ├── adapter-static/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── internal.d.ts │ │ ├── package.json │ │ ├── platforms.js │ │ ├── test/ │ │ │ ├── apps/ │ │ │ │ ├── prerendered/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── global.d.ts │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ ├── explicit.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ └── implicit.json/ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ ├── public-env/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── server-emitted-asset/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ └── vite.config.js │ │ │ │ └── spa/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .npmrc │ │ │ │ ├── jsconfig.json │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── app.html │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ ├── +page.svelte │ │ │ │ │ ├── about/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ └── fallback/ │ │ │ │ │ └── [...rest]/ │ │ │ │ │ └── +page.svelte │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.js │ │ │ │ └── vite.config.js │ │ │ └── utils.js │ │ └── tsconfig.json │ ├── adapter-vercel/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── ambient.d.ts │ │ ├── files/ │ │ │ ├── edge.js │ │ │ └── serverless.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── internal.d.ts │ │ ├── package.json │ │ ├── test/ │ │ │ ├── apps/ │ │ │ │ └── basic/ │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ ├── app.html │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ ├── +page.svelte │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── json/ │ │ │ │ │ │ └── +server.ts │ │ │ │ │ ├── deep/ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ └── route/ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── isr/ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── prerendered/ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── read/ │ │ │ │ │ │ ├── +server.ts │ │ │ │ │ │ └── file.txt │ │ │ │ │ └── server-data/ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ └── +page.svelte │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── utils.js │ │ │ └── utils.spec.js │ │ ├── tsconfig.json │ │ └── utils.js │ ├── amp/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ └── tsconfig.json │ ├── enhanced-img/ │ │ ├── .prettierignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.js │ │ │ └── vite-plugin.js │ │ ├── test/ │ │ │ ├── Input.svelte │ │ │ ├── Output.svelte │ │ │ ├── apps/ │ │ │ │ └── basics/ │ │ │ │ ├── .npmrc │ │ │ │ ├── jsconfig.json │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── app.html │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ └── +page.svelte │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.js │ │ │ │ └── vite.config.js │ │ │ ├── markup-plugin.spec.js │ │ │ └── utils.js │ │ ├── tsconfig.json │ │ └── types/ │ │ ├── ambient.d.ts │ │ ├── index.d.ts │ │ └── internal.d.ts │ ├── kit/ │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── CHANGELOG-pre-1.md │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── kit.vitest.config.js │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── cp.js │ │ │ ├── generate-dts.js │ │ │ └── generate-version.js │ │ ├── src/ │ │ │ ├── cli.js │ │ │ ├── constants.js │ │ │ ├── core/ │ │ │ │ ├── adapt/ │ │ │ │ │ ├── builder.js │ │ │ │ │ ├── builder.spec.js │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ │ └── static/ │ │ │ │ │ │ │ └── answer.md │ │ │ │ │ │ ├── compress/ │ │ │ │ │ │ │ └── foo.css │ │ │ │ │ │ └── instrument/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── server/ │ │ │ │ │ │ └── instrumentation.server.js │ │ │ │ │ └── index.js │ │ │ │ ├── config/ │ │ │ │ │ ├── default-error.html │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── custom-src/ │ │ │ │ │ │ │ └── svelte.config.js │ │ │ │ │ │ ├── default/ │ │ │ │ │ │ │ └── svelte.config.js │ │ │ │ │ │ ├── export-string/ │ │ │ │ │ │ │ └── svelte.config.js │ │ │ │ │ │ ├── multiple/ │ │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ │ └── svelte.config.ts │ │ │ │ │ │ └── typescript/ │ │ │ │ │ │ └── svelte.config.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.spec.js │ │ │ │ │ ├── options.js │ │ │ │ │ └── types.d.ts │ │ │ │ ├── env.js │ │ │ │ ├── generate_manifest/ │ │ │ │ │ ├── find_server_assets.js │ │ │ │ │ └── index.js │ │ │ │ ├── postbuild/ │ │ │ │ │ ├── analyse.js │ │ │ │ │ ├── crawl.js │ │ │ │ │ ├── crawl.spec.js │ │ │ │ │ ├── entities.js │ │ │ │ │ ├── entities.spec.js │ │ │ │ │ ├── fallback.js │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── basic-href/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── basic-src/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── basic-srcset/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── encoded-ids/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── href-with-character-reference/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── ids/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── include-rel-external/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ ├── meta/ │ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ │ └── output.json │ │ │ │ │ │ └── unquoted-attributes/ │ │ │ │ │ │ ├── input.html │ │ │ │ │ │ └── output.json │ │ │ │ │ ├── prerender.js │ │ │ │ │ ├── queue.js │ │ │ │ │ └── queue.spec.js │ │ │ │ ├── sync/ │ │ │ │ │ ├── create_manifest_data/ │ │ │ │ │ │ ├── conflict.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── index.spec.js │ │ │ │ │ │ ├── sort.js │ │ │ │ │ │ ├── test/ │ │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ │ ├── samples/ │ │ │ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ │ │ │ ├── +page.d.ts │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── blog/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── [slug].json/ │ │ │ │ │ │ │ │ │ │ │ └── +server.ts │ │ │ │ │ │ │ │ │ │ └── default.svelte │ │ │ │ │ │ │ │ │ └── blog.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── basic-layout/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── conflicting-groups/ │ │ │ │ │ │ │ │ │ ├── (x)/ │ │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── (y)/ │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── conflicting-params/ │ │ │ │ │ │ │ │ │ ├── [slug1]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── [slug2]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-layout/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ └── +layout.server.ts │ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-page/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ │ ├── conflicting-ts-js-handlers-server/ │ │ │ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ │ │ │ └── +server.ts │ │ │ │ │ │ │ │ ├── custom-extension/ │ │ │ │ │ │ │ │ │ ├── +page.funk │ │ │ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ │ │ │ └── +page.jazz │ │ │ │ │ │ │ │ │ ├── blog/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ │ │ └── +page.beebop │ │ │ │ │ │ │ │ │ │ ├── [slug].json/ │ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ │ └── _default.svelte │ │ │ │ │ │ │ │ │ └── blog.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── declared-layout/ │ │ │ │ │ │ │ │ │ └── +layout-foo.svelte │ │ │ │ │ │ │ │ ├── encoding/ │ │ │ │ │ │ │ │ │ ├── [x+22]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+23]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── [x+3f]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── hidden-dot/ │ │ │ │ │ │ │ │ │ ├── .unknown/ │ │ │ │ │ │ │ │ │ │ └── foo.txt.js │ │ │ │ │ │ │ │ │ └── .well-known/ │ │ │ │ │ │ │ │ │ └── dnt-policy.txt/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── hidden-underscore/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── _foo.js │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── _b/ │ │ │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ │ │ └── d.js │ │ │ │ │ │ │ │ │ ├── e/ │ │ │ │ │ │ │ │ │ │ └── f/ │ │ │ │ │ │ │ │ │ │ └── g/ │ │ │ │ │ │ │ │ │ │ └── h/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── i/ │ │ │ │ │ │ │ │ │ └── _j.js │ │ │ │ │ │ │ │ ├── invalid-named-layout-reference/ │ │ │ │ │ │ │ │ │ └── x/ │ │ │ │ │ │ │ │ │ ├── +page@.js │ │ │ │ │ │ │ │ │ └── +page@.svelte │ │ │ │ │ │ │ │ ├── invalid-params/ │ │ │ │ │ │ │ │ │ └── [foo][bar]/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── lockfiles/ │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ │ │ │ └── +server.js_tmp │ │ │ │ │ │ │ │ ├── multiple-layouts/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── +layout@.svelte │ │ │ │ │ │ │ │ ├── multiple-pages/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── +page@.svelte │ │ │ │ │ │ │ │ ├── multiple-slugs/ │ │ │ │ │ │ │ │ │ └── [file].[ext]/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── named-layout-missing/ │ │ │ │ │ │ │ │ │ └── +page@missing.svelte │ │ │ │ │ │ │ │ ├── named-layouts/ │ │ │ │ │ │ │ │ │ ├── (special)/ │ │ │ │ │ │ │ │ │ │ ├── (alsospecial)/ │ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ │ │ │ └── c1/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ │ └── a2/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── a1/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── c2/ │ │ │ │ │ │ │ │ │ │ └── +page@.svelte │ │ │ │ │ │ │ │ │ └── d/ │ │ │ │ │ │ │ │ │ ├── (special)/ │ │ │ │ │ │ │ │ │ │ ├── (extraspecial)/ │ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ │ ├── d2/ │ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ │ └── d3/ │ │ │ │ │ │ │ │ │ │ │ └── +page@(special).svelte │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── d1/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── nested-errors/ │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ └── baz/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── nested-optionals/ │ │ │ │ │ │ │ │ │ └── [[a]]/ │ │ │ │ │ │ │ │ │ └── [[b]]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── optional/ │ │ │ │ │ │ │ │ │ ├── [[foo]]bar/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── [[optional]]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ │ │ │ └── [[optional]]/ │ │ │ │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── prefix[[suffix]]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── optional-group/ │ │ │ │ │ │ │ │ │ └── [[optional]]/ │ │ │ │ │ │ │ │ │ └── (group)/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── page-without-svelte-file/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ │ └── [...path]/ │ │ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── exists/ │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── redirect/ │ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ │ ├── rest/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── [...rest]/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── [...rest]/ │ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── rest-prefix-suffix/ │ │ │ │ │ │ │ │ │ ├── [...rest].json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── prefix-[...rest]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── symlinks/ │ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── static/ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ └── baz.txt │ │ │ │ │ │ │ └── foo.txt │ │ │ │ │ │ └── types.d.ts │ │ │ │ │ ├── sync.js │ │ │ │ │ ├── ts.js │ │ │ │ │ ├── utils.js │ │ │ │ │ ├── write_ambient.js │ │ │ │ │ ├── write_client_manifest.js │ │ │ │ │ ├── write_non_ambient.js │ │ │ │ │ ├── write_root.js │ │ │ │ │ ├── write_server.js │ │ │ │ │ ├── write_tsconfig.js │ │ │ │ │ ├── write_tsconfig.spec.js │ │ │ │ │ └── write_types/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.spec.js │ │ │ │ │ └── test/ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── app-types/ │ │ │ │ │ │ ├── (group)/ │ │ │ │ │ │ │ └── path-a/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── trailing-slash/ │ │ │ │ │ │ │ ├── always/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ └── inside/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ └── inside/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── mixed/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ └── never/ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ └── inside/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ └── [bar]/ │ │ │ │ │ │ │ └── [baz]/ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ ├── matcher-test/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ ├── no-matcher/ │ │ │ │ │ │ │ │ └── [locale]/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ └── with-matcher/ │ │ │ │ │ │ │ └── [[locale=locale]]/ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ └── locale.js │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── layout-advanced/ │ │ │ │ │ │ ├── (main)/ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ ├── +page@.svelte │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── param-type-inference/ │ │ │ │ │ │ ├── optional/ │ │ │ │ │ │ │ └── [[optionalNarrowedParam=narrowed]]/ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ ├── narrowed.js │ │ │ │ │ │ │ └── not_narrowed.js │ │ │ │ │ │ ├── required/ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── [narrowedParam=narrowed]/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ └── [regularParam=not_narrowed]/ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ ├── spread/ │ │ │ │ │ │ │ └── [...spread=narrowed]/ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── simple-page-server-and-shared/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── simple-page-server-only/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── simple-page-shared-only/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── slugs/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── [...rest]/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── x/ │ │ │ │ │ │ └── [[optional]]/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ └── slugs-layout-not-all-pages-have-load/ │ │ │ │ │ ├── +layout.js │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ ├── nested/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── [...rest]/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ └── +page@.svelte │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ └── utils.js │ │ │ ├── exports/ │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── sequence.js │ │ │ │ │ └── sequence.spec.js │ │ │ │ ├── index.js │ │ │ │ ├── index.spec.js │ │ │ │ ├── internal/ │ │ │ │ │ ├── event.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── remote-functions.js │ │ │ │ │ └── server.js │ │ │ │ ├── node/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── polyfills.js │ │ │ │ ├── public.d.ts │ │ │ │ └── vite/ │ │ │ │ ├── build/ │ │ │ │ │ ├── build_server.js │ │ │ │ │ ├── build_service_worker.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── utils.spec.js │ │ │ │ ├── dev/ │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── module_ids.js │ │ │ │ ├── preview/ │ │ │ │ │ └── index.js │ │ │ │ ├── static_analysis/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.spec.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── utils.spec.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── utils.js │ │ │ │ └── utils.spec.js │ │ │ ├── runtime/ │ │ │ │ ├── app/ │ │ │ │ │ ├── environment/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── types.d.ts │ │ │ │ │ ├── forms.js │ │ │ │ │ ├── navigation.js │ │ │ │ │ ├── paths/ │ │ │ │ │ │ ├── client.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ ├── client.js │ │ │ │ │ │ │ └── server.js │ │ │ │ │ │ ├── public.d.ts │ │ │ │ │ │ ├── server.js │ │ │ │ │ │ └── types.d.ts │ │ │ │ │ ├── server/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── remote/ │ │ │ │ │ │ ├── command.js │ │ │ │ │ │ ├── form.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── prerender.js │ │ │ │ │ │ ├── query.js │ │ │ │ │ │ └── shared.js │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── client.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── server.js │ │ │ │ │ └── stores.js │ │ │ │ ├── client/ │ │ │ │ │ ├── bundle.js │ │ │ │ │ ├── client.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── entry.js │ │ │ │ │ ├── fetcher.js │ │ │ │ │ ├── parse.js │ │ │ │ │ ├── remote-functions/ │ │ │ │ │ │ ├── command.svelte.js │ │ │ │ │ │ ├── form.svelte.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── prerender.svelte.js │ │ │ │ │ │ ├── query.svelte.js │ │ │ │ │ │ └── shared.svelte.js │ │ │ │ │ ├── session-storage.js │ │ │ │ │ ├── state.svelte.js │ │ │ │ │ ├── types.d.ts │ │ │ │ │ └── utils.js │ │ │ │ ├── components/ │ │ │ │ │ ├── svelte-4/ │ │ │ │ │ │ ├── error.svelte │ │ │ │ │ │ └── layout.svelte │ │ │ │ │ └── svelte-5/ │ │ │ │ │ ├── error.svelte │ │ │ │ │ └── layout.svelte │ │ │ │ ├── env/ │ │ │ │ │ └── dynamic/ │ │ │ │ │ ├── private.js │ │ │ │ │ └── public.js │ │ │ │ ├── form-utils.js │ │ │ │ ├── form-utils.spec.js │ │ │ │ ├── pathname.js │ │ │ │ ├── server/ │ │ │ │ │ ├── ambient.d.ts │ │ │ │ │ ├── app.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── cookie.js │ │ │ │ │ ├── cookie.spec.js │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── endpoint.js │ │ │ │ │ ├── env_module.js │ │ │ │ │ ├── fetch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── page/ │ │ │ │ │ │ ├── actions.js │ │ │ │ │ │ ├── crypto.js │ │ │ │ │ │ ├── crypto.spec.js │ │ │ │ │ │ ├── csp.js │ │ │ │ │ │ ├── csp.spec.js │ │ │ │ │ │ ├── data_serializer.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── load_data.js │ │ │ │ │ │ ├── load_data.spec.js │ │ │ │ │ │ ├── render.js │ │ │ │ │ │ ├── respond_with_error.js │ │ │ │ │ │ ├── serialize_data.js │ │ │ │ │ │ ├── serialize_data.spec.js │ │ │ │ │ │ ├── server_routing.js │ │ │ │ │ │ └── types.d.ts │ │ │ │ │ ├── remote.js │ │ │ │ │ ├── respond.js │ │ │ │ │ ├── utils.js │ │ │ │ │ ├── validate-headers.js │ │ │ │ │ └── validate-headers.spec.js │ │ │ │ ├── shared-server.js │ │ │ │ ├── shared.js │ │ │ │ ├── telemetry/ │ │ │ │ │ ├── noop.js │ │ │ │ │ ├── otel.disabled.spec.js │ │ │ │ │ ├── otel.enabled.spec.js │ │ │ │ │ ├── otel.js │ │ │ │ │ ├── otel.missing.spec.js │ │ │ │ │ ├── record_span.disabled.spec.js │ │ │ │ │ ├── record_span.enabled.spec.js │ │ │ │ │ └── record_span.js │ │ │ │ ├── utils.js │ │ │ │ └── utils.spec.js │ │ │ ├── types/ │ │ │ │ ├── ambient-private.d.ts │ │ │ │ ├── ambient.d.ts │ │ │ │ ├── global-private.d.ts │ │ │ │ ├── internal.d.ts │ │ │ │ ├── private.d.ts │ │ │ │ └── synthetic/ │ │ │ │ ├── $env+dynamic+private.md │ │ │ │ ├── $env+dynamic+public.md │ │ │ │ ├── $env+static+private.md │ │ │ │ ├── $env+static+public.md │ │ │ │ └── $lib.md │ │ │ ├── utils/ │ │ │ │ ├── array.js │ │ │ │ ├── css.js │ │ │ │ ├── css.spec.js │ │ │ │ ├── env.js │ │ │ │ ├── error.js │ │ │ │ ├── escape.js │ │ │ │ ├── escape.spec.js │ │ │ │ ├── exports.js │ │ │ │ ├── exports.spec.js │ │ │ │ ├── features.js │ │ │ │ ├── filesystem.js │ │ │ │ ├── filesystem.spec.js │ │ │ │ ├── fork.js │ │ │ │ ├── functions.js │ │ │ │ ├── hash.js │ │ │ │ ├── http.js │ │ │ │ ├── http.spec.js │ │ │ │ ├── import.js │ │ │ │ ├── misc.js │ │ │ │ ├── page_nodes.js │ │ │ │ ├── promise.js │ │ │ │ ├── routing.js │ │ │ │ ├── routing.spec.js │ │ │ │ ├── streaming.js │ │ │ │ ├── streaming.spec.js │ │ │ │ ├── url.js │ │ │ │ └── url.spec.js │ │ │ ├── version.js │ │ │ └── version.spec.js │ │ ├── svelte-kit.js │ │ ├── test/ │ │ │ ├── .gitignore │ │ │ ├── ambient.d.ts │ │ │ ├── apps/ │ │ │ │ ├── amp/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── http-equiv/ │ │ │ │ │ │ │ └── cache-control/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── invalid/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── has-stylesheet/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── origin/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── origin.json/ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ ├── styles/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── Unused.svelte │ │ │ │ │ │ │ └── imported.css │ │ │ │ │ │ ├── valid/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── valid.json/ │ │ │ │ │ │ └── +server.js │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── async/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.client.js │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── remote/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── accessing-env.remote.js │ │ │ │ │ │ │ ├── batch/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── batch.remote.js │ │ │ │ │ │ │ ├── batch-ssr/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── batch.remote.js │ │ │ │ │ │ │ ├── batch-validation/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── batch.remote.js │ │ │ │ │ │ │ ├── dev/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── preload/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── example.remote.js │ │ │ │ │ │ │ │ └── schema.js │ │ │ │ │ │ │ ├── event/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── data.remote.ts │ │ │ │ │ │ │ ├── form/ │ │ │ │ │ │ │ │ ├── [test_name]/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── file-upload/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── for-duplicate/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── imperative/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── preflight/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── preflight-only/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── preflight-pending/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── redirect-target/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── select-untouched/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── set-ssr/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── submitter/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── underscore/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ ├── validate/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── form.remote.ts │ │ │ │ │ │ │ │ └── value/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── value.remote.ts │ │ │ │ │ │ │ ├── prerender/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── functions-only/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── prerender.remote.js │ │ │ │ │ │ │ │ ├── test.txt │ │ │ │ │ │ │ │ └── whole-page/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── query-boundary/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── data.remote.js │ │ │ │ │ │ │ ├── query-command.remote.js │ │ │ │ │ │ │ ├── query-non-exported/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── data.remote.ts │ │ │ │ │ │ │ ├── query-redirect/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── from-common-layout/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── redirected/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── from-page/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect.remote.js │ │ │ │ │ │ │ │ └── redirected/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── query-runtime-errors/ │ │ │ │ │ │ │ │ ├── inactive/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── TrackedQuery.svelte │ │ │ │ │ │ │ │ ├── not-tracked/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── run-in-render/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── server-action/ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── action.remote.ts │ │ │ │ │ │ │ ├── server-endpoint/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ │ └── +server.ts │ │ │ │ │ │ │ │ └── internal.remote.ts │ │ │ │ │ │ │ ├── server-load-command/ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── transport/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── data.remote.ts │ │ │ │ │ │ │ └── validation/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── validation.remote.js │ │ │ │ │ │ └── server-error-boundary/ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── static/ │ │ │ │ │ │ └── robots.txt │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── client.test.js │ │ │ │ │ │ ├── server.test.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── basics/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── error.html │ │ │ │ │ │ ├── global.d.ts │ │ │ │ │ │ ├── hooks.client.js │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ ├── instrumentation.server.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ ├── lowercase.js │ │ │ │ │ │ │ ├── numeric.js │ │ │ │ │ │ │ └── uppercase.js │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── accessibility/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── autofocus/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ │ │ ├── enhance/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── file-without-enctype/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── form-errors/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── adjacent-error-boundary/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── form-errors-persist-fields/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── invalidate-all/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect-in-handle/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── success-data/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── update-form/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── prerendered/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── anchor/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── anchor/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── anchor-with-manual-scroll/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── anchor-afternavigate/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── anchor-onmount/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── answer.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── app-environment/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── asset-import/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── asset-preload/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── prerendered/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── styles.css │ │ │ │ │ │ │ ├── caching/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── server-data/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── content-length-header/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── content-type-header/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── cookies/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── collect-without-re-escaping/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── set-cookie/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── delete/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── encoding/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── not-decoded-twice/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── set/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── enhanced/ │ │ │ │ │ │ │ │ │ └── basic/ │ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── forwarded-in-etag/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serialize/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── set/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── set-in-layout/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── set-more-than-one/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── shared.js │ │ │ │ │ │ │ ├── csrf/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── _base.css │ │ │ │ │ │ │ │ ├── _manual.css │ │ │ │ │ │ │ │ ├── _styles.css │ │ │ │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── Dynamic.svelte │ │ │ │ │ │ │ │ ├── encöded/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── other/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── cyclical-dynamic-import/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── _is_even.js │ │ │ │ │ │ │ │ └── _is_odd.js │ │ │ │ │ │ │ ├── data-sveltekit/ │ │ │ │ │ │ │ │ ├── noscroll/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── preload-code/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ ├── eager/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── hover/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── tap/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── viewport/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── preload-data/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── offline/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── slow-navigation/ │ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── reload/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── hash/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── new/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── replacestate/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── delete-route/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [id].json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── encoded/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── @[username]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── escape-sequences/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── [u+82d7]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [u+d83e][u+dd2a]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+23]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+25]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+2f]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+3a]-[x+29]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+3c]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [x+3f]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── [x][x+3c][y]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirected/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── 反应/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── 苗条/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── endpoint-input/ │ │ │ │ │ │ │ │ └── sha256/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── endpoint-output/ │ │ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ │ │ ├── body/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fallback/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-asset/ │ │ │ │ │ │ │ │ │ ├── absolute/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── relative/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── test.txt │ │ │ │ │ │ │ │ ├── head-handler/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── head-write-error/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── stream/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── stream-throw-error/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ └── stream-typeerror/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── includes/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── errors/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── clientside/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint-shadow/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint-shadow-not-ok/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint-throw-error/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── endpoint-throw-redirect/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── endpoint.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── error-html/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── make-root-fail/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── error-in-handle/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── error-in-layout/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── init-error-endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── invalid-load-response/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── invalid-route-response/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── invalid-server-load-response/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-client/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-error-client/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-error-page-options/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ └── csr/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ │ ├── load-error-server/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── layout-data/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-error-string-server/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-server/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── load-status-without-error-client/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── missing-actions/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── module-scope-client/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── module-scope-server/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── nested-error-page/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── nope/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── page-endpoint/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── _shared.js │ │ │ │ │ │ │ │ │ ├── get-explicit/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── get-implicit/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── post-explicit/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── post-implicit/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serverside/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── stack-trace/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── _bad.js │ │ │ │ │ │ │ ├── get-request-event/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── with-error/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ │ └── with-message/ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── goto/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── loadreplace1/ │ │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ │ ├── loadreplace2/ │ │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ │ ├── loadreplace3/ │ │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ │ ├── testentry/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── testfinish/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── teststart/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── headers/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── class/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── echo/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ └── set-cookie/ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── iframes/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── parent/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── immutable-headers/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ │ ├── init-hooks/ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── navigate/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── interactivity/ │ │ │ │ │ │ │ │ └── toggle-element/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── keepfocus/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── load/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── [dynamic]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── [dynamic].json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── accumulated/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── with-page-data/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── without-page-data/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── cache-control/ │ │ │ │ │ │ │ │ │ ├── bust/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── count/ │ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ │ └── increment/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── default/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── count/ │ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ │ └── increment/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── force/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── count/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── increment/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── change-detection/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── data.json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── one/ │ │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── two/ │ │ │ │ │ │ │ │ │ └── [y]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── devalue/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── regex/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── dynamic-import-styles/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── _/ │ │ │ │ │ │ │ │ │ └── Thing.svelte │ │ │ │ │ │ │ │ ├── fetch-abort-signal/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── slow/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-arraybuffer-b64/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── data/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-asset/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── example.json │ │ │ │ │ │ │ │ ├── fetch-body-stream-b64/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── data/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-cache-control/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── headers-diff/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── load-data/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-credentialed/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-credentialed.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-external-no-cookies/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-no-body/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-origin-external/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-origin-internal/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── resource/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-relative/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-relative.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-request/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-request-empty-headers/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-request-headers/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── data/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-request.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-response-headers/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── fetch-response-headers.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── fetch-same-url/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── data.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── invalidation/ │ │ │ │ │ │ │ │ │ ├── depends/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── depends-goto/ │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── forced/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── reset-states/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── forced-goto/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── reset-states/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── invalidate-then-goto/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── multiple/ │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── state.js │ │ │ │ │ │ │ │ │ ├── multiple-batched/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── [a]/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── [b]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── route/ │ │ │ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── shared/ │ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── [x]/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── search-params/ │ │ │ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── universal/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── server-fetch/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── count.json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── url/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── large-response/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── text.txt/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── mutated-url/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── no-server-load/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── parent/ │ │ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── [y]/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── [z]/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── shared/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── [y]/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── [z]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── props/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── raw-body/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── dataview/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── string/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── uint8array/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── raw-body.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── relay/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── relay.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── serialization/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── fetched-from-server.json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── fetched-from-shared.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── serialization-empty-node/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serialization-post/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serialization-post-request/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serialization-post.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── server-data-nostore/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server-data-reuse/ │ │ │ │ │ │ │ │ │ ├── no-load/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── with-changing-parent/ │ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── no-load/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── with-server-load/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── with-server-load/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server-fetch-request/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server-log-search-param/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server-response-clone/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── set-cookie-fetch/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a.json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ └── b.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── state.js │ │ │ │ │ │ │ │ ├── static-file-with-hash/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── unchanged/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── isolated/ │ │ │ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── state.js │ │ │ │ │ │ │ │ ├── unchanged-parent/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── state.js │ │ │ │ │ │ │ │ │ └── uses-parent/ │ │ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── url-hash/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── url-query-param/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── url-to-string/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── window-fetch/ │ │ │ │ │ │ │ │ ├── correct/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── data.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── incorrect/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── outside-load/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── patching/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── patching-server-load/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── patching-server-load-ii/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── match/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ │ │ ├── load/ │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── slug/ │ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── navigation-lifecycle/ │ │ │ │ │ │ │ │ ├── after-navigate/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── after-navigate-properly-removed/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── before-navigate/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── complete/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── event/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── hash-links/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── prevent-navigation/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── redirect/ │ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ │ ├── on-navigate/ │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── scroll-state/ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── nested-layout/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ └── nope/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── baz/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── reset/ │ │ │ │ │ │ │ │ ├── +layout@.svelte │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── no-csr/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── data.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── no-ssr/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── after-navigate/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── browser-only-global/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── margin/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── other/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── ssr-page-config/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── inherit/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── overwrite/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── node-analysis/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── origin/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── package.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── params-prop/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── paths/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── deeply/ │ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── prerendering/ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── prerendered/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── log-url/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── mutative-endpoint/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.server.ts │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── no-ssr/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── prerendered-endpoint/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── api-with-param/ │ │ │ │ │ │ │ │ │ │ └── [option]/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── page/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── proxy/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ └── 中文/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ ├── query/ │ │ │ │ │ │ │ │ └── echo/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ │ ├── read-file/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── [auto].txt │ │ │ │ │ │ │ │ ├── [styles].css │ │ │ │ │ │ │ │ ├── [url].txt │ │ │ │ │ │ │ │ └── assets/ │ │ │ │ │ │ │ │ └── [file].txt │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── in-handle/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── loopy/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── missing-status/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── package/ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ ├── redirect-on-load/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── redirected/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── reroute/ │ │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ │ ├── +server.ts │ │ │ │ │ │ │ │ │ └── [prerendered]/ │ │ │ │ │ │ │ │ │ └── +server.ts │ │ │ │ │ │ │ │ ├── async/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── +page.ts │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── client-only-redirect/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── error-handling/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── client-error/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── client-error-rewritten/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── server-error/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── external/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── invalidate/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── preload-data/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ │ └── prerendered/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── destination/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ ├── reset-focus/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── routing/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── ambiguous/ │ │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── [slug].json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── b.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── cancellation/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── const/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── content-negotiation/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── dirs/ │ │ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── [a]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── [b]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── external-popstate/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── focus/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── form-get/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── form-target-blank/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── hashes/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── focus/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── pagestate/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── link-outside-app-target/ │ │ │ │ │ │ │ │ │ ├── source/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── state.js │ │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── long-navigation/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── matched/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── [fallback]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [letter=lowercase]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── [letter=uppercase]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── [number=numeric]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── missing-href/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── next-paint/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── params-in-handle/ │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── preloading/ │ │ │ │ │ │ │ │ │ ├── hash-route/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── preload-error/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── preloaded/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── preloaded.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── prerendered/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ └── trailing-slash/ │ │ │ │ │ │ │ │ │ ├── always/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── never/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── rest/ │ │ │ │ │ │ │ │ │ ├── [...rest]/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── deep/ │ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── deep.json/ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ ├── complex/ │ │ │ │ │ │ │ │ │ │ ├── [...parts].json/ │ │ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ │ │ └── prefix-[...parts]/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── non-greedy/ │ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ │ ├── [dynamic]-bar/ │ │ │ │ │ │ │ │ │ │ │ └── [...rest]/ │ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ │ │ │ └── [...rest]/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── path/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ └── [...ignored]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── route-id/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── shadow-dom/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── skipped/ │ │ │ │ │ │ │ │ │ └── [one]/ │ │ │ │ │ │ │ │ │ └── [two]/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── slashes/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── split-params/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── [a]-[b]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── symlink-to/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── trailing-slash/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── always/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── never/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── trailing-slash-server/ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── always/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── never/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── scroll/ │ │ │ │ │ │ │ │ ├── cross-document/ │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── push-state/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── top/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── selection/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── serialization-basic/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── child/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── serialization-form-enhanced/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── serialization-form-non-enhanced/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── server-deserialize/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── serialization-stream/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── set-cookie/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── shadowed/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── error-get/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── error-post/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── missing-get/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── no-get/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── parent/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── post-success-redirect/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── redirected/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── [a]/ │ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect-get/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect-get-with-cookie/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect-get-with-cookie-from-fetch/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── endpoint/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── redirect-post/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect-post-with-cookie/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirected/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── same-render/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── same-render-entry/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── serialization/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── simple/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── post/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── shallow-routing/ │ │ │ │ │ │ │ │ ├── push-state/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── effect/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── replace-state/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── effect/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ └── [...anything]/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── state/ │ │ │ │ │ │ │ │ ├── client-access/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── [item]/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── state-update/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── same-keys/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── same/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── same-deep/ │ │ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── navigating/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── url/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── static/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ │ ├── client-access/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── [item]/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── store-update/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── same-keys/ │ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ ├── same/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── same-deep/ │ │ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── navigating/ │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── subscribe/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── streaming/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── discarded-promise/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── fast-n-slow/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── server-error/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── universal/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── tracing/ │ │ │ │ │ │ │ │ ├── http-error/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── non-error-object/ │ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ │ ├── one/ │ │ │ │ │ │ │ │ │ └── two/ │ │ │ │ │ │ │ │ │ └── three/ │ │ │ │ │ │ │ │ │ └── [...four]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ │ └── regular-error/ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ ├── transform-page-chunk/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── treeshaking/ │ │ │ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── dev/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── unsafe-replacement/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── untrack/ │ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── universal/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── use-action/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── focus-and-scroll/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── xss/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── [path]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── query/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ │ │ ├── query-tracking/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── shadow/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── xss.json/ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ └── service-worker.js │ │ │ │ │ ├── static/ │ │ │ │ │ │ ├── empty.js │ │ │ │ │ │ ├── load/ │ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ │ └── a#b.txt │ │ │ │ │ │ │ └── foo.json │ │ │ │ │ │ ├── static.json │ │ │ │ │ │ ├── subdirectory/ │ │ │ │ │ │ │ └── static.json │ │ │ │ │ │ └── symlink-to/ │ │ │ │ │ │ └── hello.txt │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── client.test.js │ │ │ │ │ │ ├── cross-platform/ │ │ │ │ │ │ │ ├── client.test.js │ │ │ │ │ │ │ ├── server.test.js │ │ │ │ │ │ │ └── test.js │ │ │ │ │ │ ├── server.test.js │ │ │ │ │ │ ├── setup.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ ├── unit-test/ │ │ │ │ │ │ └── client.spec.js │ │ │ │ │ └── vite.config.js │ │ │ │ ├── dev-only/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── _test_dependencies/ │ │ │ │ │ │ └── cjs-only/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.client.js │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ │ └── blah/ │ │ │ │ │ │ │ │ └── private.js │ │ │ │ │ │ │ └── test.server.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── headers/ │ │ │ │ │ │ │ └── invalid/ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ ├── illegal-imports/ │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ ├── dynamic-private/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── static-private/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── server-only-folder/ │ │ │ │ │ │ │ │ └── static-import/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── server-only-modules/ │ │ │ │ │ │ │ ├── illegal.server.js │ │ │ │ │ │ │ ├── static-import/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ │ └── static-import-2/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── optimize-deps/ │ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ └── request-abort/ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ └── +server.js │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── embed/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ └── embed/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── b/ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── hash-based-routing/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── anchor/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── focus/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── rerouted/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── resolve/ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── no-ssr/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ └── browser-globals/ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── options/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── env-dir/ │ │ │ │ │ │ └── .env │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── public/ │ │ │ │ │ │ └── answer.html │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── Message.svelte │ │ │ │ │ │ │ ├── SharedCSS.svelte │ │ │ │ │ │ │ └── SvelteLogo.svelte │ │ │ │ │ │ ├── hooks.client.js │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── +server.js │ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── csp/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── csp-hydratable/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── csp-with-stream/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── custom-extensions/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.jesuslivesineveryone │ │ │ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ │ │ │ └── +page.svelte.md │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── const/ │ │ │ │ │ │ │ │ │ └── +page.whokilledthemuffinman │ │ │ │ │ │ │ │ └── unsafe-replacement/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── endpoint/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── endpoint-with-slash/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── fetch/ │ │ │ │ │ │ │ │ ├── link-outside-base/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── link-root/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── inline-style/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── conditional-rendering/ │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── Component.svelte │ │ │ │ │ │ │ │ ├── dynamic-import/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ │ └── Thing.svelte │ │ │ │ │ │ │ │ ├── import-meta/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── static-dir/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── url-encoded/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── match/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── mode/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── on-navigate/ │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── page-endpoint/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── preloading/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── code/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── preloaded/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── resolve-route/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [foo]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── routing/ │ │ │ │ │ │ │ │ └── link-outside-app-target/ │ │ │ │ │ │ │ │ ├── source/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── state.js │ │ │ │ │ │ │ │ └── target/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── slash/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── child/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── test.txt │ │ │ │ │ │ └── template.html │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── paths-assets.test.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.custom.config.js │ │ │ │ ├── options-2/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── deeply/ │ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ │ └── page/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── deserialize/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── remote/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── count.remote.js │ │ │ │ │ │ │ ├── serialization-stream/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── trailing-slash-server/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── prerender/ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── service-worker.js │ │ │ │ │ ├── static/ │ │ │ │ │ │ └── answer.txt │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── options-3/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ └── serialization-stream/ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── prerendered-app-error-pages/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── playwright.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +error.svelte │ │ │ │ │ │ ├── +layout.ts │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── test.js │ │ │ │ │ └── vite.config.js │ │ │ │ ├── read-file-test/ │ │ │ │ │ └── [file].txt │ │ │ │ ├── test.svelte │ │ │ │ └── writes/ │ │ │ │ ├── .gitignore │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── app.html │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── routes/ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ ├── double-mount/ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── new-route/ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ └── universal/ │ │ │ │ │ ├── +page.js │ │ │ │ │ ├── +page.svelte │ │ │ │ │ └── parent-changed/ │ │ │ │ │ ├── +layout.js │ │ │ │ │ ├── +page.js │ │ │ │ │ └── +page.svelte │ │ │ │ ├── svelte.config.js │ │ │ │ ├── test/ │ │ │ │ │ └── test.js │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.js │ │ │ ├── build-errors/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── prerender-entry-generator-mismatch/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ ├── [notSpecific]/ │ │ │ │ │ │ │ │ └── +page.ts │ │ │ │ │ │ │ └── specific/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── prerender-remote-function-error/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── data.remote.ts │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── prerenderable-incorrect-fragment/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── prerenderable-not-prerendered/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── [x]/ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── private-dynamic-env/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── private-dynamic-env-dynamic-import/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── private-static-env/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── private-static-env-dynamic-import/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── server-only-folder/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ │ └── server/ │ │ │ │ │ │ │ │ └── something/ │ │ │ │ │ │ │ │ └── private.js │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── server-only-folder-dynamic-import/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ │ └── server/ │ │ │ │ │ │ │ │ └── something/ │ │ │ │ │ │ │ │ └── private.js │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── server-only-module/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ │ └── test.server.js │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── server-only-module-dynamic-import/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ │ └── test.server.js │ │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── service-worker-dynamic-public-env/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── service-worker.js │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ ├── service-worker-private-env/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .npmrc │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── service-worker.js │ │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.js │ │ │ │ │ └── syntax-error/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── test.server.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── env.spec.js │ │ │ │ ├── package.json │ │ │ │ ├── prerender.spec.js │ │ │ │ ├── server-only.spec.js │ │ │ │ ├── syntax-error.spec.js │ │ │ │ └── tsconfig.json │ │ │ ├── github-flaky-warning-reporter.js │ │ │ ├── mocks/ │ │ │ │ └── path.js │ │ │ ├── prerendering/ │ │ │ │ ├── basics/ │ │ │ │ │ ├── .env │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── globalSetup.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ ├── (grouped)/ │ │ │ │ │ │ │ │ └── grouped/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ ├── encoding/ │ │ │ │ │ │ │ │ ├── [path]/ │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── [path].json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── path with spaces/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── redirect/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── encöded-hash-link/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── fetch-404/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── fetch-endpoint/ │ │ │ │ │ │ │ │ ├── also-not-buffered/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── buffered/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ ├── buffered.json/ │ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ │ ├── not-buffered/ │ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── not-buffered.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── fetch-image/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [...slug]/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── immutable-headers/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── load-file-with-spaces/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── max-age/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── missing-id/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── optional-params/ │ │ │ │ │ │ │ │ └── [[optional]]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── origin/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── message.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ ├── page.html/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── prerender-origin/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── [dynamic]/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── prerendering-true/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── redirect/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ ├── redirect-encoded/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ ├── redirect-malicious/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ ├── redirect-relative/ │ │ │ │ │ │ │ │ └── +page.js │ │ │ │ │ │ │ ├── redirect-server/ │ │ │ │ │ │ │ │ └── +page.server.js │ │ │ │ │ │ │ ├── resolve-relative/ │ │ │ │ │ │ │ │ └── lv1/ │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── lv2/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── shadowed-get/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ └── ssr-off/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── shadowed-post/ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── spa-shell/ │ │ │ │ │ │ │ │ ├── +page.js │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ ├── trailing-slash/ │ │ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ │ ├── page/ │ │ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ │ └── standalone-endpoint.json/ │ │ │ │ │ │ │ │ └── +server.js │ │ │ │ │ │ │ └── 初めまして/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── service-worker.js │ │ │ │ │ ├── static/ │ │ │ │ │ │ └── file with spaces.json │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── tests.spec.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── options/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── public/ │ │ │ │ │ │ └── robots.txt │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── (group)/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── csp-hydratable/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── rss.xml/ │ │ │ │ │ │ └── +server.js │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── tests.spec.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── paths-base/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.d.ts │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ ├── hooks.server.js │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── +layout.js │ │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ │ └── d/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── emitted/ │ │ │ │ │ │ │ ├── +page.server.js │ │ │ │ │ │ │ ├── +page.svelte │ │ │ │ │ │ │ └── message.csv │ │ │ │ │ │ ├── dynamic/ │ │ │ │ │ │ │ └── [slug]/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ └── +page.svelte │ │ │ │ │ │ └── redirect/ │ │ │ │ │ │ └── +page.js │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── tests.spec.js │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ │ └── test-utils.js │ │ │ ├── setup.js │ │ │ ├── tsconfig.json │ │ │ ├── types/ │ │ │ │ ├── actions.test.ts │ │ │ │ ├── load.test.ts │ │ │ │ ├── remote.test.ts │ │ │ │ └── tsconfig.json │ │ │ ├── types.d.ts │ │ │ └── utils.js │ │ ├── tsconfig.json │ │ └── types/ │ │ └── index.d.ts │ ├── package/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli.js │ │ │ ├── config.js │ │ │ ├── filesystem.js │ │ │ ├── index.js │ │ │ ├── types.d.ts │ │ │ ├── typescript.js │ │ │ ├── utils.js │ │ │ └── validate.js │ │ ├── svelte-package.js │ │ ├── test/ │ │ │ ├── errors/ │ │ │ │ └── no-lib-folder/ │ │ │ │ ├── package.json │ │ │ │ ├── svelte.config.js │ │ │ │ └── tsconfig.json │ │ │ ├── fixtures/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── svelte.config.js │ │ │ │ ├── emitTypes-false/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ └── svelte.config.js │ │ │ │ ├── javascript/ │ │ │ │ │ ├── ReadMe.md │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── Test2.svelte.d.ts │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── runes.svelte.d.ts │ │ │ │ │ │ │ └── runes.svelte.js │ │ │ │ │ │ ├── utils.d.ts │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── runes.svelte.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ └── svelte.config.js │ │ │ │ ├── preserve-output/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── theme.css │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── svelte-3-types/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── svelte-kit/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── kitlib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ └── svelte.config.js │ │ │ │ ├── tsconfig-specified/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── runes.svelte.d.ts │ │ │ │ │ │ └── runes.svelte.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── runes.svelte.ts │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ ├── tsconfig.build.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── typescript-declaration-map/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── typescript-esnext/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Plain.svelte │ │ │ │ │ │ ├── Plain.svelte.d.ts │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── Test2.svelte.d.ts │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── runes.svelte.d.ts │ │ │ │ │ │ ├── runes.svelte.js │ │ │ │ │ │ ├── utils.d.ts │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Plain.svelte │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test2.svelte │ │ │ │ │ │ ├── foo.d.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── runes.svelte.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── typescript-nodenext/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── runes.svelte.d.ts │ │ │ │ │ │ └── runes.svelte.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── runes.svelte.ts │ │ │ │ │ ├── svelte.config.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── typescript-svelte-config/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── runes.svelte.d.ts │ │ │ │ │ │ └── runes.svelte.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ ├── Test.svelte │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── runes.svelte.ts │ │ │ │ │ ├── svelte.config.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ └── typescript-ts-extension-rewrites/ │ │ │ │ ├── expected/ │ │ │ │ │ ├── Demo.svelte │ │ │ │ │ ├── Demo.svelte.d.ts │ │ │ │ │ ├── helper.d.ts │ │ │ │ │ ├── helper.js │ │ │ │ │ ├── helper2.d.ts │ │ │ │ │ ├── helper2.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ └── lib/ │ │ │ │ │ ├── Demo.svelte │ │ │ │ │ ├── helper.ts │ │ │ │ │ ├── helper2.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── svelte.config.js │ │ │ │ └── tsconfig.json │ │ │ ├── index.spec.js │ │ │ └── watch/ │ │ │ ├── expected/ │ │ │ │ ├── Test.svelte │ │ │ │ ├── Test.svelte.d.ts │ │ │ │ ├── a.d.ts │ │ │ │ ├── a.js │ │ │ │ ├── b.d.ts │ │ │ │ ├── b.js │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ └── post-error.svelte │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── lib/ │ │ │ │ └── index.js │ │ │ ├── svelte.config.js │ │ │ └── tsconfig.json │ │ └── tsconfig.json │ └── test-redirect-importer/ │ ├── index.js │ └── package.json ├── playgrounds/ │ ├── README.md │ └── basic/ │ ├── .gitignore │ ├── package.json │ ├── src/ │ │ ├── app.d.ts │ │ ├── app.html │ │ ├── lib/ │ │ │ └── index.js │ │ └── routes/ │ │ ├── +layout.svelte │ │ └── +page.svelte │ ├── svelte.config.js │ ├── tsconfig.json │ └── vite.config.js ├── pnpm-workspace.yaml ├── renovate.json ├── scripts/ │ ├── check-dependencies.js │ ├── print-flaky-test-report.js │ └── sync-all.js ├── test-utils/ │ └── index.js └── tsconfig.json
SYMBOL INDEX (1753 symbols across 676 files)
FILE: .eslint/no-runtime-to-exports-imports.js
method create (line 22) | create(context) {
FILE: packages/adapter-auto/index.js
function detect_lockfile (line 27) | function detect_lockfile() {
function detect_package_manager (line 44) | function detect_package_manager() {
function resolve_peer (line 59) | function resolve_peer(dependency) {
function get_adapter (line 96) | async function get_adapter() {
function supports_error (line 179) | function supports_error(message) {
FILE: packages/adapter-cloudflare/ambient.d.ts
type Platform (line 9) | interface Platform {
FILE: packages/adapter-cloudflare/index.d.ts
type AdapterOptions (line 7) | interface AdapterOptions {
type RoutesJSONSpec (line 74) | interface RoutesJSONSpec {
FILE: packages/adapter-cloudflare/index.js
method adapt (line 22) | async adapt(builder) {
method emulate (line 181) | emulate() {
function generate_headers (line 236) | function generate_headers(app_dir) {
function generate_redirects (line 253) | function generate_redirects(redirects) {
function generate_assetsignore (line 269) | function generate_assetsignore() {
function validate_wrangler_config (line 286) | function validate_wrangler_config(config_file = undefined) {
function posixify (line 304) | function posixify(str) {
FILE: packages/adapter-cloudflare/internal.d.ts
type PartialExcept (line 14) | type PartialExcept<T, K extends keyof T> = Partial<Omit<T, K>> & Require...
type Builder2_0_0 (line 19) | type Builder2_0_0 = PartialExcept<
FILE: packages/adapter-cloudflare/src/worker.js
method fetch (line 46) | async fetch(req, env, ctx) {
FILE: packages/adapter-cloudflare/test/apps/pages/server-side-dep/index.js
function sum (line 2) | function sum(a, b) {
FILE: packages/adapter-cloudflare/test/apps/pages/src/routes/+page.server.js
function load (line 4) | function load() {
FILE: packages/adapter-cloudflare/test/apps/workers/server-side-dep/index.js
function sum (line 2) | function sum(a, b) {
FILE: packages/adapter-cloudflare/test/apps/workers/src/routes/+page.server.js
function load (line 4) | function load() {
FILE: packages/adapter-cloudflare/test/apps/workers/src/routes/ctx/+server.js
function GET (line 1) | function GET({ platform }) {
FILE: packages/adapter-cloudflare/test/apps/workers/src/routes/read/+server.js
function GET (line 4) | function GET() {
FILE: packages/adapter-cloudflare/utils.js
function is_building_for_cloudflare_pages (line 7) | function is_building_for_cloudflare_pages(wrangler_config) {
function validate_worker_settings (line 22) | function validate_worker_settings(wrangler_config) {
function parse_redirects (line 62) | function parse_redirects(file_contents) {
function get_routes_json (line 90) | function get_routes_json(builder, client_assets, redirects, routes) {
FILE: packages/adapter-netlify/ambient.d.ts
type Platform (line 3) | interface Platform {
FILE: packages/adapter-netlify/index.js
constant FUNCTION_PREFIX (line 24) | const FUNCTION_PREFIX = 'sveltekit-';
method adapt (line 31) | async adapt(builder) {
function generate_edge_functions (line 107) | async function generate_edge_functions({ builder }) {
function generate_lambda_functions (line 218) | function generate_lambda_functions({ builder, publish, split }) {
function get_netlify_config (line 309) | function get_netlify_config() {
function get_publish_directory (line 324) | function get_publish_directory(netlify_config, builder) {
function matches (line 353) | function matches(a, b) {
function generate_serverless_function (line 390) | function generate_serverless_function({ builder, routes, patterns, name,...
function generate_serverless_function_module (line 418) | function generate_serverless_function_module(manifest) {
function generate_config_export (line 431) | function generate_config_export(patterns, exclude = []) {
function generate_traced_module (line 446) | function generate_traced_module(config) {
FILE: packages/adapter-netlify/rollup.config.js
function clearOutput (line 10) | function clearOutput(filepath) {
FILE: packages/adapter-netlify/src/edge.js
function handler (line 31) | async function handler(request, context) {
FILE: packages/adapter-netlify/src/serverless.js
function init (line 10) | function init(manifest) {
FILE: packages/adapter-netlify/test/apps/basic/src/routes/read/+server.js
function GET (line 4) | function GET() {
FILE: packages/adapter-netlify/test/apps/edge/src/routes/read/+server.js
function GET (line 4) | function GET() {
FILE: packages/adapter-netlify/test/apps/split/src/routes/dynamic/[id]/+page.server.js
function load (line 2) | function load({ params }) {
FILE: packages/adapter-node/ambient.d.ts
type Platform (line 5) | interface Platform {
FILE: packages/adapter-node/index.d.ts
type AdapterOptions (line 9) | interface AdapterOptions {
FILE: packages/adapter-node/index.js
method adapt (line 28) | async adapt(builder) {
FILE: packages/adapter-node/rollup.config.js
function clearOutput (line 11) | function clearOutput(filepath) {
function prefixBuiltinModules (line 27) | function prefixBuiltinModules() {
FILE: packages/adapter-node/src/env.js
function env (line 40) | function env(name, fallback) {
function parsing_error (line 55) | function parsing_error(name, value, description) {
function timeout_env (line 67) | function timeout_env(name, fallback) {
FILE: packages/adapter-node/src/handler.js
function serve (line 49) | function serve(path, client = false) {
function serve_prerendered (line 72) | function serve_prerendered() {
function sequence (line 166) | function sequence(handlers) {
function normalise_header (line 190) | function normalise_header(name, value) {
function get_origin (line 206) | function get_origin(headers) {
FILE: packages/adapter-node/src/index.js
constant SD_LISTEN_FDS_START (line 16) | const SD_LISTEN_FDS_START = 3;
function graceful_shutdown (line 65) | function graceful_shutdown(reason) {
FILE: packages/adapter-node/tests/smoke.spec_disabled.js
constant DEFAULT_SERVER_OPTS (line 8) | const DEFAULT_SERVER_OPTS = { render: () => {} };
function startServer (line 10) | async function startServer(opts = DEFAULT_SERVER_OPTS) {
FILE: packages/adapter-node/utils.js
function parse_as_bytes (line 7) | function parse_as_bytes(value) {
function parse_origin (line 24) | function parse_origin(value) {
FILE: packages/adapter-static/index.d.ts
type AdapterOptions (line 3) | interface AdapterOptions {
FILE: packages/adapter-static/index.js
method adapt (line 9) | async adapt(builder) {
FILE: packages/adapter-static/internal.d.ts
type PartialExcept (line 4) | type PartialExcept<T, K extends keyof T> = Partial<Omit<T, K>> & Require...
type Builder2_0_0 (line 9) | type Builder2_0_0 = PartialExcept<
FILE: packages/adapter-static/platforms.js
function static_vercel_config (line 15) | function static_vercel_config(builder) {
FILE: packages/adapter-static/test/apps/prerendered/src/routes/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/adapter-static/test/apps/prerendered/src/routes/endpoint/explicit.json/+server.js
function GET (line 6) | function GET() {
FILE: packages/adapter-static/test/apps/prerendered/src/routes/endpoint/implicit.json/+server.js
function GET (line 7) | function GET() {
FILE: packages/adapter-static/test/apps/prerendered/src/routes/server-emitted-asset/+page.server.js
function load (line 3) | function load() {
FILE: packages/adapter-vercel/ambient.d.ts
type Platform (line 5) | interface Platform {
FILE: packages/adapter-vercel/files/edge.js
method getClientAddress (line 61) | getClientAddress() {
FILE: packages/adapter-vercel/files/serverless.js
constant DATA_SUFFIX (line 13) | const DATA_SUFFIX = '/__data.json';
method fetch (line 20) | fetch(request) {
FILE: packages/adapter-vercel/index.d.ts
type ServerlessConfig (line 7) | interface ServerlessConfig {
type ImageFormat (line 58) | type ImageFormat = 'image/avif' | 'image/webp';
type RemotePattern (line 60) | type RemotePattern = {
type ImagesConfig (line 67) | type ImagesConfig = {
type EdgeConfig (line 79) | interface EdgeConfig {
type Config (line 100) | type Config = (EdgeConfig | ServerlessConfig) & {
type RequestContext (line 124) | interface RequestContext {
FILE: packages/adapter-vercel/index.js
constant INTERNAL (line 23) | const INTERNAL = '![-]';
method adapt (line 39) | async adapt(builder) {
function hash_config (line 537) | function hash_config(config) {
function write (line 552) | function write(file, data) {
function static_vercel_config (line 568) | function static_vercel_config(builder, config, dir) {
function create_function_bundle (line 707) | async function create_function_bundle(builder, entry, dir, config) {
function validate_vercel_json (line 827) | function validate_vercel_json(builder, vercel_config) {
function is_prerendered (line 874) | function is_prerendered(route) {
function generate_traced_edge_module (line 884) | function generate_traced_edge_module({ instrumentation, start }) {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/api/json/+server.ts
function GET (line 3) | function GET() {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/deep/nested/route/+page.server.ts
function load (line 1) | function load({ url }) {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/isr/+page.server.ts
function load (line 7) | function load() {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/isr/[slug]/+page.server.ts
function load (line 7) | function load({ params }) {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/prerendered/+page.server.ts
function load (line 3) | function load() {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/read/+server.ts
function GET (line 4) | function GET() {
FILE: packages/adapter-vercel/test/apps/basic/src/routes/server-data/+page.server.ts
function load (line 1) | function load() {
FILE: packages/adapter-vercel/test/utils.spec.js
function run_get_pathname_test (line 13) | function run_get_pathname_test(segments, expected) {
function run_pattern_to_src_test (line 107) | function run_pattern_to_src_test(route_id, expected) {
FILE: packages/adapter-vercel/utils.js
function get_pathname (line 4) | function get_pathname(route) {
function pattern_to_src (line 48) | function pattern_to_src(pattern) {
function parse_isr_expiration (line 78) | function parse_isr_expiration(value, route_id) {
function resolve_runtime (line 115) | function resolve_runtime(default_key, override_key) {
function get_default_runtime (line 125) | function get_default_runtime() {
function assert_is_valid_runtime (line 152) | function assert_is_valid_runtime(key) {
FILE: packages/amp/index.js
function transform (line 9) | function transform(html) {
FILE: packages/enhanced-img/src/index.js
function enhancedImages (line 8) | function enhancedImages() {
function fallback_format (line 19) | function fallback_format(meta) {
function imagetools_plugin (line 29) | function imagetools_plugin() {
function get_widths (line 66) | function get_widths(width, sizes) {
FILE: packages/enhanced-img/src/vite-plugin.js
constant OPTIMIZABLE (line 10) | const OPTIMIZABLE = /^[^?]+\.(avif|heif|gif|jpeg|jpg|png|tiff|webp)(\?.*...
function image_plugin (line 17) | function image_plugin(imagetools_plugin) {
function process_id (line 197) | async function process_id(resolved_id, plugin_context, imagetools_plugin) {
function parse_object (line 214) | function parse_object(str) {
function get_attr_value (line 231) | function get_attr_value(node, attr) {
function serialize_img_attributes (line 258) | function serialize_img_attributes(content, attributes, details) {
function stringToNumber (line 304) | function stringToNumber(param) {
function img_to_picture (line 313) | function img_to_picture(content, node, image) {
function to_value (line 343) | function to_value(src) {
function dynamic_img_to_picture (line 354) | function dynamic_img_to_picture(content, node, src_var_name) {
FILE: packages/enhanced-img/test/markup-plugin.spec.js
method load (line 12) | load(id) {
method resolve (line 24) | resolve(url) {
FILE: packages/enhanced-img/types/index.d.ts
type EnhancedImgAttributes (line 8) | type EnhancedImgAttributes = Omit<HTMLImgAttributes, 'src'> & { src: str...
type SvelteHTMLElements (line 12) | interface SvelteHTMLElements {
FILE: packages/enhanced-img/types/internal.d.ts
type ElementLike (line 3) | type ElementLike =
type Tag (line 18) | type Tag = AST.ExpressionTag | AST.HtmlTag | AST.ConstTag | AST.DebugTag...
type Directive (line 20) | type Directive =
type Block (line 30) | type Block = AST.EachBlock | AST.IfBlock | AST.AwaitBlock | AST.KeyBlock...
type TemplateNode (line 32) | type TemplateNode = AST.Text | Tag | ElementLike | AST.Comment | Block;
type Attribute (line 34) | type Attribute = AST.RegularElement['attributes'][number];
FILE: packages/kit/src/cli.js
function handle_error (line 9) | function handle_error(e) {
FILE: packages/kit/src/constants.js
constant SVELTE_KIT_ASSETS (line 5) | const SVELTE_KIT_ASSETS = '/_svelte_kit_assets';
constant GENERATED_COMMENT (line 7) | const GENERATED_COMMENT = '// this file is generated — do not edit it\n';
constant ENDPOINT_METHODS (line 9) | const ENDPOINT_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTI...
constant MUTATIVE_METHODS (line 11) | const MUTATIVE_METHODS = ['POST', 'PUT', 'PATCH', 'DELETE'];
constant PAGE_METHODS (line 13) | const PAGE_METHODS = ['GET', 'POST', 'HEAD'];
FILE: packages/kit/src/core/adapt/builder.js
function create_builder (line 39) | function create_builder({
function compress_file (line 296) | async function compress_file(file, format = 'gz') {
function create_instrumentation_facade (line 325) | function create_instrumentation_facade({ instrumentation, start, exports...
FILE: packages/kit/src/core/adapt/index.js
function adapt (line 14) | async function adapt(
FILE: packages/kit/src/core/config/index.js
function load_template (line 13) | function load_template(cwd, { kit }) {
function load_error_page (line 47) | function load_error_page(config) {
function load_config (line 64) | async function load_config({ cwd = process.cwd() } = {}) {
function process_config (line 98) | function process_config(config, { cwd = process.cwd() } = {}) {
function validate_config (line 121) | function validate_config(config) {
FILE: packages/kit/src/core/config/index.spec.js
function remove_keys (line 16) | function remove_keys(o, check) {
function validate_paths (line 316) | function validate_paths(name, input, output) {
FILE: packages/kit/src/core/config/options.js
function deprecate (line 326) | function deprecate(
function object (line 345) | function object(children, allow_unknown = false) {
function validate (line 385) | function validate(fallback, fn) {
function string (line 396) | function string(fallback, allow_empty = true) {
function string_array (line 412) | function string_array(fallback) {
function number (line 426) | function number(fallback) {
function boolean (line 439) | function boolean(fallback) {
function list (line 452) | function list(options, fallback = options[0]) {
function fun (line 470) | function fun(fallback) {
function assert_string (line 483) | function assert_string(input, keypath) {
FILE: packages/kit/src/core/config/types.d.ts
type Validator (line 1) | type Validator<T = any> = (input: T, keypath: string) => T;
FILE: packages/kit/src/core/env.js
function create_static_module (line 14) | function create_static_module(id, env) {
function create_dynamic_module (line 36) | function create_dynamic_module(type, dev_values) {
function create_static_types (line 51) | function create_static_types(id, env) {
function create_dynamic_types (line 72) | function create_dynamic_types(id, env, { public_prefix, private_prefix }) {
FILE: packages/kit/src/core/generate_manifest/find_server_assets.js
function find_server_assets (line 8) | function find_server_assets(build_data, routes) {
FILE: packages/kit/src/core/generate_manifest/index.js
function generate_manifest (line 25) | function generate_manifest({ build_data, prerendered, relative_path, rou...
FILE: packages/kit/src/core/postbuild/analyse.js
function analyse (line 31) | async function analyse({
function analyse_endpoint (line 185) | function analyse_endpoint(route, mod) {
function analyse_page (line 217) | function analyse_page(layouts, leaf) {
function list_features (line 239) | function list_features(route, manifest_data, server_manifest, tracked_fe...
FILE: packages/kit/src/core/postbuild/crawl.js
constant DOCTYPE (line 4) | const DOCTYPE = 'DOCTYPE';
constant CDATA_OPEN (line 5) | const CDATA_OPEN = '[CDATA[';
constant CDATA_CLOSE (line 6) | const CDATA_CLOSE = ']]>';
constant COMMENT_OPEN (line 7) | const COMMENT_OPEN = '--';
constant COMMENT_CLOSE (line 8) | const COMMENT_CLOSE = '-->';
constant TAG_OPEN (line 10) | const TAG_OPEN = /[a-zA-Z]/;
constant TAG_CHAR (line 11) | const TAG_CHAR = /[a-zA-Z0-9]/;
constant ATTRIBUTE_NAME (line 12) | const ATTRIBUTE_NAME = /[^\t\n\f />"'=]/;
constant WHITESPACE (line 14) | const WHITESPACE = /[\s\n\r]/;
constant CRAWLABLE_META_NAME_ATTRS (line 16) | const CRAWLABLE_META_NAME_ATTRS = new Set([
function crawl (line 34) | function crawl(html, base) {
FILE: packages/kit/src/core/postbuild/entities.js
function decode (line 2248) | function decode(str) {
FILE: packages/kit/src/core/postbuild/fallback.js
function generate_fallback (line 16) | async function generate_fallback({ manifest_path, env }) {
FILE: packages/kit/src/core/postbuild/prerender.js
constant SPECIAL_HASHLINKS (line 26) | const SPECIAL_HASHLINKS = new Set(['', 'top']);
function prerender (line 38) | async function prerender({ hash, out, manifest_path, metadata, verbose, ...
FILE: packages/kit/src/core/postbuild/queue.js
function queue (line 13) | function queue(concurrency) {
FILE: packages/kit/src/core/postbuild/queue.spec.js
function sleep (line 5) | function sleep(ms) {
FILE: packages/kit/src/core/sync/create_manifest_data/index.js
function create_manifest_data (line 25) | function create_manifest_data({
function create_assets (line 55) | function create_assets(config) {
function create_hooks (line 67) | function create_hooks(config, cwd) {
function create_matchers (line 83) | function create_matchers(config, cwd) {
function create_routes_and_nodes (line 122) | function create_routes_and_nodes(cwd, config, fallback) {
function analyze (line 492) | function analyze(project_relative, file, component_extensions, module_ex...
function count_occurrences (line 542) | function count_occurrences(needle, haystack) {
function prevent_conflicts (line 551) | function prevent_conflicts(routes) {
function normalize_route_id (line 597) | function normalize_route_id(id) {
FILE: packages/kit/src/core/sync/create_manifest_data/index.spec.js
function simplify_node (line 38) | function simplify_node(node) {
function simplify_route (line 51) | function simplify_route(route) {
FILE: packages/kit/src/core/sync/create_manifest_data/sort.js
constant EMPTY (line 15) | const EMPTY = { type: 'static', content: '', matched: false };
function sort_routes (line 18) | function sort_routes(routes) {
function split_route_id (line 135) | function split_route_id(id) {
function sort_static (line 149) | function sort_static(a, b) {
FILE: packages/kit/src/core/sync/create_manifest_data/types.d.ts
type Part (line 3) | interface Part {
type RouteTreeNode (line 10) | interface RouteTreeNode {
type RouteTree (line 15) | type RouteTree = Map<string, RouteTreeNode>;
type RouteComponent (line 17) | interface RouteComponent {
type RouteSharedModule (line 25) | interface RouteSharedModule {
type RouteServerModule (line 31) | interface RouteServerModule {
type RouteFile (line 37) | type RouteFile = RouteComponent | RouteSharedModule | RouteServerModule;
FILE: packages/kit/src/core/sync/sync.js
function init (line 20) | function init(config, mode) {
function create (line 29) | function create(config) {
function update (line 51) | function update(config, manifest_data, file) {
function all (line 73) | function all(config, mode) {
function all_types (line 83) | function all_types(config, mode) {
function server (line 94) | function server(config) {
FILE: packages/kit/src/core/sync/utils.js
function write_if_changed (line 16) | function write_if_changed(file, code) {
function write (line 26) | function write(file, code) {
function dedent (line 41) | function dedent(strings, ...values) {
function isSvelte5Plus (line 76) | function isSvelte5Plus() {
FILE: packages/kit/src/core/sync/write_ambient.js
function read_description (line 14) | function read_description(filename) {
function write_ambient (line 55) | function write_ambient(config, mode) {
FILE: packages/kit/src/core/sync/write_client_manifest.js
function write_client_manifest (line 15) | function write_client_manifest(kit, manifest_data, output, metadata) {
FILE: packages/kit/src/core/sync/write_non_ambient.js
function get_pathnames_for_trailing_slash (line 23) | function get_pathnames_for_trailing_slash(pathname, route) {
function generate_app_types (line 87) | function generate_app_types(manifest_data, config) {
function write_non_ambient (line 261) | function write_non_ambient(config, manifest_data) {
FILE: packages/kit/src/core/sync/write_root.js
function write_root (line 8) | function write_root(manifest_data, config, output) {
FILE: packages/kit/src/core/sync/write_server.js
function write_server (line 107) | function write_server(config, output) {
FILE: packages/kit/src/core/sync/write_tsconfig.js
function maybe_file (line 12) | function maybe_file(cwd, file) {
function project_relative (line 22) | function project_relative(file) {
function remove_trailing_slashstar (line 29) | function remove_trailing_slashstar(file) {
function write_tsconfig (line 41) | function write_tsconfig(kit, cwd = process.cwd()) {
function get_tsconfig (line 54) | function get_tsconfig(kit) {
function load_user_tsconfig (line 134) | function load_user_tsconfig(cwd) {
function validate_user_config (line 153) | function validate_user_config(cwd, out, config) {
function get_tsconfig_paths (line 202) | function get_tsconfig_paths(config) {
FILE: packages/kit/src/core/sync/write_types/index.js
function write_all_types (line 35) | function write_all_types(config, manifest_data) {
function write_types (line 142) | function write_types(config, manifest_data, file) {
function create_routes_map (line 163) | function create_routes_map(manifest_data) {
function update_types (line 181) | function update_types(config, routes, route, to_delete = new Set()) {
function process_node (line 380) | function process_node(node, outdir, is_page, proxies, all_pages_have_loa...
function ensureProxies (line 519) | function ensureProxies(node, proxies) {
function createProxy (line 534) | function createProxy(file_path, is_server) {
function get_parent_type (line 551) | function get_parent_type(node, type) {
function path_to_original (line 581) | function path_to_original(outdir, file_path) {
function replace_ext_with_js (line 588) | function replace_ext_with_js(file_path) {
function generate_params_type (line 600) | function generate_params_type(params, outdir, config) {
function tweak_types (line 622) | function tweak_types(content, is_server) {
FILE: packages/kit/src/core/sync/write_types/index.spec.js
function run_test (line 18) | function run_test(dir) {
FILE: packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/+layout.server.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/sub/+page.js
function load (line 2) | async function load({ parent }) {
FILE: packages/kit/src/core/sync/write_types/test/layout-advanced/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/layout/+layout.js
function load (line 2) | function load({ data }) {
FILE: packages/kit/src/core/sync/write_types/test/layout/+layout.server.js
function load (line 2) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/layout/+page.js
function load (line 2) | function load({ data }) {
FILE: packages/kit/src/core/sync/write_types/test/layout/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/param-type-inference/required/+layout.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.js
function load (line 2) | function load({ data }) {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-server-only/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-server-only/sub/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-shared-only/+page.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/simple-page-shared-only/sub/+page.js
function load (line 2) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/+layout.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/+layout.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/[...rest]/+page.js
function load (line 1) | function load() {
FILE: packages/kit/src/core/sync/write_types/test/slugs/+layout.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/slugs/[...rest]/+page.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/slugs/[slug]/+page.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/src/core/sync/write_types/test/slugs/x/[[optional]]/+page.js
function load (line 2) | async function load({ parent, params }) {
FILE: packages/kit/src/core/utils.js
function noop (line 27) | function noop() {}
function logger (line 30) | function logger({ verbose }) {
function get_mime_lookup (line 48) | function get_mime_lookup(manifest_data) {
function list_files (line 66) | function list_files(dir, filter) {
FILE: packages/kit/src/exports/hooks/sequence.js
function sequence (line 80) | function sequence(...handlers) {
FILE: packages/kit/src/exports/index.js
function error (line 75) | function error(status, body) {
function isHttpError (line 90) | function isHttpError(e, status) {
function redirect (line 112) | function redirect(status, location) {
function isRedirect (line 129) | function isRedirect(e) {
function json (line 138) | function json(data, init) {
function text (line 166) | function text(body, init) {
function fail (line 206) | function fail(status, data) {
function isActionFailure (line 216) | function isActionFailure(e) {
function invalid (line 247) | function invalid(...issues) {
function isValidationError (line 259) | function isValidationError(e) {
function normalizeUrl (line 278) | function normalizeUrl(url) {
FILE: packages/kit/src/exports/internal/event.js
function getRequestEvent (line 29) | function getRequestEvent() {
function get_request_store (line 47) | function get_request_store() {
function try_get_request_store (line 65) | function try_get_request_store() {
function with_request_store (line 74) | function with_request_store(store, fn) {
FILE: packages/kit/src/exports/internal/index.js
class HttpError (line 3) | class HttpError {
method constructor (line 8) | constructor(status, body) {
method toString (line 19) | toString() {
class Redirect (line 24) | class Redirect {
method constructor (line 29) | constructor(status, location) {
class SvelteKitError (line 40) | class SvelteKitError extends Error {
method constructor (line 46) | constructor(status, text, message) {
class ActionFailure (line 56) | class ActionFailure {
method constructor (line 61) | constructor(status, data) {
class ValidationError (line 70) | class ValidationError extends Error {
method constructor (line 74) | constructor(issues) {
FILE: packages/kit/src/exports/internal/remote-functions.js
function init_remote_functions (line 11) | function init_remote_functions(module, file, hash) {
FILE: packages/kit/src/exports/internal/server.js
function merge_tracing (line 7) | function merge_tracing(event_like, current) {
FILE: packages/kit/src/exports/node/index.js
function get_raw_body (line 10) | function get_raw_body(req, body_size_limit) {
function getRequest (line 108) | async function getRequest({ request, base, bodySizeLimit }) {
function setResponse (line 156) | async function setResponse(res, response) {
function createReadableStream (line 236) | function createReadableStream(file) {
FILE: packages/kit/src/exports/node/polyfills.js
function installPolyfills (line 19) | function installPolyfills() {
FILE: packages/kit/src/exports/public.d.ts
type Span (line 34) | type Span = import('@opentelemetry/api').Span;
type Adapter (line 39) | interface Adapter {
type LoadProperties (line 72) | type LoadProperties<input extends Record<string, any> | void> = input ex...
type AwaitedActions (line 78) | type AwaitedActions<T extends Record<string, (...args: any) => any>> = O...
type OptionalUnion (line 86) | type OptionalUnion<
type ActionFailure (line 93) | interface ActionFailure<T = undefined> {
type UnpackValidationError (line 99) | type UnpackValidationError<T> =
type Builder (line 110) | interface Builder {
type Config (line 252) | interface Config extends SvelteConfig {
type Cookies (line 263) | interface Cookies {
type Emulator (line 323) | interface Emulator {
type KitConfig (line 331) | interface KitConfig {
type Handle (line 925) | type Handle = (input: {
type HandleServerError (line 936) | type HandleServerError = (input: {
type HandleValidationError (line 948) | type HandleValidationError<Issue extends StandardSchemaV1.Issue = Standa...
type HandleClientError (line 957) | type HandleClientError = (input: {
type HandleFetch (line 967) | type HandleFetch = (input: {
type ServerInit (line 977) | type ServerInit = () => MaybePromise<void>;
type ClientInit (line 983) | type ClientInit = () => MaybePromise<void>;
type Reroute (line 989) | type Reroute = (event: { url: URL; fetch: typeof fetch }) => MaybePromis...
type Transport (line 1015) | type Transport = Record<string, Transporter>;
type Transporter (line 1020) | interface Transporter<
type Load (line 1032) | type Load<
type LoadEvent (line 1044) | interface LoadEvent<
type NavigationEvent (line 1165) | interface NavigationEvent<
type NavigationTarget (line 1191) | interface NavigationTarget<
type NavigationType (line 1236) | type NavigationType = 'enter' | 'form' | 'leave' | 'link' | 'goto' | 'po...
type NavigationBase (line 1238) | interface NavigationBase {
type NavigationEnter (line 1258) | interface NavigationEnter extends NavigationBase {
type NavigationExternal (line 1276) | type NavigationExternal = NavigationGoto | NavigationLeave;
type NavigationGoto (line 1278) | interface NavigationGoto extends NavigationBase {
type NavigationLeave (line 1293) | interface NavigationLeave extends NavigationBase {
type NavigationFormSubmit (line 1308) | interface NavigationFormSubmit extends NavigationBase {
type NavigationPopState (line 1328) | interface NavigationPopState extends NavigationBase {
type NavigationLink (line 1346) | interface NavigationLink extends NavigationBase {
type Navigation (line 1366) | type Navigation =
type BeforeNavigate (line 1375) | type BeforeNavigate = Navigation & {
type OnNavigate (line 1385) | type OnNavigate = Navigation & {
type AfterNavigate (line 1396) | type AfterNavigate = (Navigation | NavigationEnter) & {
type Page (line 1407) | interface Page<
type ParamMatcher (line 1453) | type ParamMatcher = (param: string) => boolean;
type RequestEvent (line 1455) | interface RequestEvent<
type RequestHandler (line 1566) | type RequestHandler<
type ResolveOptions (line 1571) | interface ResolveOptions {
type RouteDefinition (line 1594) | interface RouteDefinition<Config = any> {
class Server (line 1609) | class Server {
type ServerInitOptions (line 1615) | interface ServerInitOptions {
type SSRManifest (line 1622) | interface SSRManifest {
type ServerLoad (line 1647) | type ServerLoad<
type ServerLoadEvent (line 1654) | interface ServerLoadEvent<
type Action (line 1736) | type Action<
type Actions (line 1746) | type Actions<
type ActionResult (line 1762) | type ActionResult<
type HttpError (line 1774) | interface HttpError {
type Redirect (line 1784) | interface Redirect {
type SubmitFunction (line 1791) | type SubmitFunction<
type Snapshot (line 1820) | interface Snapshot<T = any> {
type WillRecurseIndefinitely (line 1826) | type WillRecurseIndefinitely<T> = unknown extends T ? true : string exte...
type InputTypeMap (line 1829) | type InputTypeMap = {
type RemoteFormFieldType (line 1858) | type RemoteFormFieldType<T> = {
type InputElementProps (line 1863) | type InputElementProps<T extends keyof InputTypeMap> = T extends 'checkb...
type RemoteFormFieldMethods (line 1903) | type RemoteFormFieldMethods<T> = {
type RemoteFormFieldValue (line 1912) | type RemoteFormFieldValue = string | string[] | number | boolean | File ...
type AsArgs (line 1914) | type AsArgs<Type extends keyof InputTypeMap, Value> = Type extends 'chec...
type RemoteFormField (line 1925) | type RemoteFormField<Value extends RemoteFormFieldValue> = RemoteFormFie...
type RemoteFormFieldContainer (line 1939) | type RemoteFormFieldContainer<Value> = RemoteFormFieldMethods<Value> & {
type UnknownField (line 1944) | type UnknownField<Value> = RemoteFormFieldMethods<Value> & {
type RemoteFormFieldsRoot (line 1962) | type RemoteFormFieldsRoot<Input extends RemoteFormInput | void> =
type RemoteFormFields (line 1977) | type RemoteFormFields<T> =
type RecursiveFormFields (line 1993) | type RecursiveFormFields = RemoteFormFieldContainer<any> & {
type MaybeArray (line 1997) | type MaybeArray<T> = T | T[];
type RemoteFormInput (line 1999) | interface RemoteFormInput {
type RemoteFormIssue (line 2003) | interface RemoteFormIssue {
type ExtractId (line 2010) | type ExtractId<Input> = Input extends { id: infer Id }
type InvalidField (line 2023) | type InvalidField<T> =
type ValidationError (line 2041) | interface ValidationError {
type RemoteForm (line 2049) | type RemoteForm<Input extends RemoteFormInput | void, Output> = {
type RemoteCommand (line 2104) | type RemoteCommand<Input, Output> = {
type RemoteResource (line 2112) | type RemoteResource<T> = Promise<T> & {
type RemoteQuery (line 2130) | type RemoteQuery<T> = RemoteResource<T> & {
type RemoteQueryOverride (line 2173) | interface RemoteQueryOverride {
type RemotePrerenderFunction (line 2181) | type RemotePrerenderFunction<Input, Output> = (
type RemoteQueryFunction (line 2188) | type RemoteQueryFunction<Input, Output> = (
FILE: packages/kit/src/exports/vite/build/build_server.js
function build_server_nodes (line 19) | function build_server_nodes(
FILE: packages/kit/src/exports/vite/build/build_service_worker.js
function build_service_worker (line 22) | async function build_service_worker(
FILE: packages/kit/src/exports/vite/build/utils.js
function find_deps (line 13) | function find_deps(manifest, entry, add_dynamic_css) {
function resolve_symlinks (line 106) | function resolve_symlinks(manifest, file) {
function filter_fonts (line 122) | function filter_fonts(assets) {
function assets_base (line 130) | function assets_base(config) {
function create_function_as_string (line 143) | function create_function_as_string(name, placeholder_names, str) {
FILE: packages/kit/src/exports/vite/dev/index.js
function dev (line 34) | async function dev(vite, vite_config, svelte_config, get_remotes) {
function remove_static_middlewares (line 584) | function remove_static_middlewares(server) {
function find_deps (line 599) | async function find_deps(vite, node, deps) {
function get_server_module_by_url (line 644) | function get_server_module_by_url(vite, url) {
function has_correct_case (line 659) | function has_correct_case(file, assets) {
FILE: packages/kit/src/exports/vite/index.js
function sveltekit (line 134) | async function sveltekit() {
function kit (line 189) | async function kit({ svelte_config }) {
function warn_overridden_config (line 1408) | function warn_overridden_config(config, resolved_config) {
function find_overridden_config (line 1426) | function find_overridden_config(config, resolved_config, enforced_config...
FILE: packages/kit/src/exports/vite/preview/index.js
function preview (line 21) | async function preview(vite, vite_config, svelte_config) {
function scoped (line 241) | function scoped(scope, handler) {
function is_file (line 259) | function is_file(path) {
FILE: packages/kit/src/exports/vite/static_analysis/index.js
function statically_analyse_page_options (line 35) | function statically_analyse_page_options(filename, input) {
function get_name (line 209) | function get_name(node) {
function get_page_options (line 218) | function get_page_options(filepath) {
function create_node_analyser (line 232) | function create_node_analyser() {
FILE: packages/kit/src/exports/vite/static_analysis/utils.js
function has_children (line 7) | function has_children(content, is_svelte_5_plus) {
function should_ignore (line 24) | function should_ignore(content, match_index) {
FILE: packages/kit/src/exports/vite/static_analysis/utils.spec.js
function should_warn_for_content (line 20) | function should_warn_for_content(content, filename) {
FILE: packages/kit/src/exports/vite/types.d.ts
type EnforcedConfig (line 1) | interface EnforcedConfig {
FILE: packages/kit/src/exports/vite/utils.js
function get_config_aliases (line 24) | function get_config_aliases(config) {
function escape_for_regexp (line 60) | function escape_for_regexp(str) {
function get_env (line 69) | function get_env(env_config, mode) {
function not_found (line 84) | function not_found(req, res, base) {
function normalize_id (line 125) | function normalize_id(id, lib, cwd) {
function stackless (line 169) | function stackless(message) {
function error_for_missing_config (line 199) | function error_for_missing_config(feature_name, path, value) {
FILE: packages/kit/src/runtime/app/forms.js
function deserialize (line 31) | function deserialize(result) {
function clone (line 50) | function clone(element) {
function enhance (line 79) | function enhance(form_element, submit = () => {}) {
FILE: packages/kit/src/runtime/app/paths/client.js
function asset (line 25) | function asset(file) {
function resolve (line 54) | function resolve(...args) {
function match (line 82) | async function match(url) {
FILE: packages/kit/src/runtime/app/paths/internal/server.js
function override (line 17) | function override(paths) {
function reset (line 22) | function reset() {
function set_assets (line 28) | function set_assets(path) {
FILE: packages/kit/src/runtime/app/paths/server.js
function asset (line 9) | function asset(file) {
function resolve (line 15) | function resolve(id, params) {
function match (line 34) | async function match(url) {
FILE: packages/kit/src/runtime/app/paths/types.d.ts
type StripSearchOrHash (line 8) | type StripSearchOrHash<T extends string> = T extends `${infer Pathname}?...
type ResolveArgs (line 14) | type ResolveArgs<T extends RouteIdWithSearchOrHash | PathnameWithSearchO...
FILE: packages/kit/src/runtime/app/server/index.js
function read (line 20) | function read(asset) {
FILE: packages/kit/src/runtime/app/server/remote/command.js
function command (line 54) | function command(validate_or_fn, maybe_fn) {
FILE: packages/kit/src/runtime/app/server/remote/form.js
function form (line 64) | function form(validate_or_fn, maybe_fn) {
function handle_issues (line 277) | function handle_issues(output, issues, form_data) {
function create_issues (line 307) | function create_issues() {
FILE: packages/kit/src/runtime/app/server/remote/prerender.js
function prerender (line 67) | function prerender(validate_or_fn, fn_or_options, maybe_options) {
FILE: packages/kit/src/runtime/app/server/remote/query.js
function query (line 57) | function query(validate_or_fn, maybe_fn) {
function batch (line 122) | function batch(validate_or_fn, maybe_fn) {
function create_query_resource (line 253) | function create_query_resource(__, arg, state, fn) {
function get_refresh_context (line 317) | function get_refresh_context(__, action, arg) {
function update_refresh_value (line 341) | function update_refresh_value(
FILE: packages/kit/src/runtime/app/server/remote/shared.js
function create_validator (line 18) | function create_validator(validate_or_fn, maybe_fn) {
function get_response (line 75) | async function get_response(internals, arg, state, get_result) {
function parse_remote_response (line 106) | function parse_remote_response(data, transport) {
function run_remote_function (line 125) | async function run_remote_function(event, state, allow_cookies, get_inpu...
function get_cache (line 174) | function get_cache(internals, state = get_request_store().state) {
FILE: packages/kit/src/runtime/app/state/client.js
method data (line 9) | get data() {
method error (line 12) | get error() {
method form (line 15) | get form() {
method params (line 18) | get params() {
method route (line 21) | get route() {
method state (line 24) | get state() {
method status (line 27) | get status() {
method url (line 30) | get url() {
method from (line 36) | get from() {
method to (line 39) | get to() {
method type (line 42) | get type() {
method willUnload (line 45) | get willUnload() {
method delta (line 48) | get delta() {
method complete (line 51) | get complete() {
method get (line 57) | get() {
method current (line 64) | get current() {
FILE: packages/kit/src/runtime/app/state/server.js
function context (line 4) | function context() {
function context_dev (line 9) | function context_dev(name) {
method data (line 21) | get data() {
method error (line 24) | get error() {
method form (line 27) | get form() {
method params (line 30) | get params() {
method route (line 33) | get route() {
method state (line 36) | get state() {
method status (line 39) | get status() {
method url (line 42) | get url() {
method current (line 57) | get current() {
FILE: packages/kit/src/runtime/app/stores.js
method subscribe (line 37) | subscribe(fn) {
method subscribe (line 54) | subscribe(fn) {
method subscribe (line 69) | subscribe(fn) {
function get_store (line 92) | function get_store(name) {
FILE: packages/kit/src/runtime/client/bundle.js
function start (line 13) | function start(element, options) {
FILE: packages/kit/src/runtime/client/client.js
constant ICON_REL_ATTRIBUTES (line 57) | const ICON_REL_ATTRIBUTES = new Set(['icon', 'shortcut icon', 'apple-tou...
function update_scroll_positions (line 132) | function update_scroll_positions(index) {
function clear_onward_history (line 140) | function clear_onward_history(current_history_index, current_navigation_...
function native_navigation (line 163) | function native_navigation(url, replace = false) {
function update_service_worker (line 176) | async function update_service_worker() {
function noop (line 185) | function noop() {}
function discard_load_cache (line 229) | function discard_load_cache() {
function start (line 314) | async function start(_app, _target, hydrate) {
function _invalidate (line 395) | async function _invalidate(include_load_functions = true, reset_page_sta...
function reset_invalidation (line 449) | function reset_invalidation() {
function capture_snapshot (line 455) | function capture_snapshot(index) {
function restore_snapshot (line 462) | function restore_snapshot(index) {
function persist_state (line 468) | function persist_state() {
function _goto (line 482) | async function _goto(url, options, redirect_count, nav_token) {
function _preload_data (line 531) | async function _preload_data(intent) {
function _preload_code (line 584) | async function _preload_code(url) {
function initialize (line 601) | async function initialize(result, target, hydrate) {
function get_navigation_result_from_branch (line 677) | async function get_navigation_result_from_branch({
function load_node (line 812) | async function load_node({ loader, parent, url, params, route, server_da...
function resolve_fetch_url (line 977) | function resolve_fetch_url(input, init, url) {
function has_changed (line 1004) | function has_changed(
function create_data_node (line 1040) | function create_data_node(node, previous) {
function diff_search_params (line 1050) | function diff_search_params(old_url, new_url) {
function preload_error (line 1074) | function preload_error({ error, url, route, params }) {
function load_route (line 1095) | async function load_route({ id, invalidating, url, params, route, preloa...
function load_nearest_error_page (line 1313) | async function load_nearest_error_page(i, branch, errors) {
function load_root_error_page (line 1345) | async function load_root_error_page({ status, error, url, route }) {
function get_rerouted_url (line 1423) | async function get_rerouted_url(url) {
function get_navigation_intent (line 1485) | async function get_navigation_intent(url, invalidating) {
function get_url_path (line 1528) | function get_url_path(url) {
function get_page_key (line 1537) | function get_page_key(url) {
function _before_navigate (line 1551) | function _before_navigate({ url, type, intent, delta, event, scroll }) {
function navigate (line 1601) | async function navigate({
function server_fallback (line 1930) | async function server_fallback(url, route, error, status, replace_state) {
function setup_preload (line 1961) | function setup_preload() {
function handle_error (line 2078) | function handle_error(error, event) {
function add_navigation_callback (line 2101) | function add_navigation_callback(callbacks, callback) {
function afterNavigate (line 2118) | function afterNavigate(callback) {
function beforeNavigate (line 2135) | function beforeNavigate(callback) {
function onNavigate (line 2150) | function onNavigate(callback) {
function disableScrollHandling (line 2159) | function disableScrollHandling() {
function goto (line 2189) | function goto(url, opts = {}) {
function invalidate (line 2227) | function invalidate(resource) {
function push_invalidated (line 2240) | function push_invalidated(resource) {
function invalidateAll (line 2253) | function invalidateAll() {
function refreshAll (line 2268) | function refreshAll({ includeLoadFunctions = true } = {}) {
function preloadData (line 2289) | async function preloadData(href) {
function preloadCode (line 2325) | async function preloadCode(pathname) {
function pushState (line 2363) | function pushState(url, state) {
function replaceState (line 2410) | function replaceState(url, state) {
function applyAction (line 2452) | async function applyAction(result) {
function set_nearest_error_page (line 2487) | async function set_nearest_error_page(error, status = 500) {
function _start_router (line 2514) | function _start_router() {
function _hydrate (line 2853) | async function _hydrate(
function load_data (line 2967) | async function load_data(url, invalid) {
function deserialize_uses (line 3078) | function deserialize_uses(uses) {
function reset_focus (line 3099) | function reset_focus(url, scroll = true) {
function create_navigation (line 3202) | function create_navigation(current, intent, url, type, target_scroll = n...
function clone_page (line 3254) | function clone_page(page) {
function decode_hash (line 3271) | function decode_hash(url) {
function get_id (line 3282) | function get_id(url) {
FILE: packages/kit/src/runtime/client/constants.js
constant SNAPSHOT_KEY (line 1) | const SNAPSHOT_KEY = 'sveltekit:snapshot';
constant SCROLL_KEY (line 2) | const SCROLL_KEY = 'sveltekit:scroll';
constant STATES_KEY (line 3) | const STATES_KEY = 'sveltekit:states';
constant PAGE_URL_KEY (line 4) | const PAGE_URL_KEY = 'sveltekit:pageurl';
constant HISTORY_INDEX (line 6) | const HISTORY_INDEX = 'sveltekit:history';
constant NAVIGATION_INDEX (line 7) | const NAVIGATION_INDEX = 'sveltekit:navigation';
constant PRELOAD_PRIORITIES (line 9) | const PRELOAD_PRIORITIES = /** @type {const} */ ({
FILE: packages/kit/src/runtime/client/fetcher.js
function lock_fetch (line 10) | function lock_fetch() {
function unlock_fetch (line 14) | function unlock_fetch() {
function initial_fetch (line 88) | function initial_fetch(resource, opts) {
function subsequent_fetch (line 117) | function subsequent_fetch(resource, resolved, opts) {
function dev_fetch (line 141) | function dev_fetch(resource, opts) {
function build_selector (line 157) | function build_selector(resource, opts) {
FILE: packages/kit/src/runtime/client/parse.js
function parse (line 7) | function parse({ nodes, server_loads, dictionary, matchers }) {
function parse_server_route (line 65) | function parse_server_route({ nodes, id, leaf, layouts, errors }, app_no...
FILE: packages/kit/src/runtime/client/remote-functions/command.svelte.js
function command (line 16) | function command(id) {
FILE: packages/kit/src/runtime/client/remote-functions/form.svelte.js
function merge_with_server_issues (line 34) | function merge_with_server_issues(form_data, current_issues, client_issu...
function form (line 54) | function form(id) {
function clone (line 624) | function clone(element) {
function validate_form_data (line 632) | function validate_form_data(form_data, enctype) {
FILE: packages/kit/src/runtime/client/remote-functions/prerender.svelte.js
constant CACHE_NAME (line 11) | const CACHE_NAME = DEV ? `sveltekit:${Date.now()}` : `sveltekit:${versio...
function put (line 37) | function put(url, encoded) {
function prerender (line 57) | function prerender(id) {
class Prerender (line 134) | class Prerender {
method constructor (line 148) | constructor(fn) {
method then (line 171) | then(onfulfilled, onrejected) {
method catch (line 178) | catch(onrejected) {
method finally (line 185) | finally(onfinally) {
method current (line 189) | get current() {
method error (line 193) | get error() {
method loading (line 200) | get loading() {
method ready (line 207) | get ready() {
method [Symbol.toStringTag] (line 211) | get [Symbol.toStringTag]() {
FILE: packages/kit/src/runtime/client/remote-functions/query.svelte.js
function is_in_effect (line 25) | function is_in_effect() {
function query (line 38) | function query(id) {
function query_batch (line 66) | function query_batch(id) {
class Query (line 159) | class Query {
method constructor (line 212) | constructor(key, fn) {
method #get_promise (line 217) | #get_promise() {
method #start (line 222) | #start() {
method #run (line 230) | #run() {
method then (line 264) | get then() {
method catch (line 268) | get catch() {
method finally (line 275) | get finally() {
method current (line 291) | get current() {
method error (line 296) | get error() {
method loading (line 304) | get loading() {
method ready (line 312) | get ready() {
method refresh (line 320) | refresh() {
method set (line 328) | set(value) {
method withOverride (line 340) | withOverride(fn) {
method [Symbol.toStringTag] (line 355) | get [Symbol.toStringTag]() {
class QueryProxy (line 366) | class QueryProxy {
method constructor (line 382) | constructor(id, arg, fn) {
method #get_or_create_cache_entry (line 401) | #get_or_create_cache_entry() {
method #release (line 428) | #release(entry, deactivate = true) {
method #get_cached_query (line 443) | #get_cached_query() {
method #safe_get_cached_query (line 472) | #safe_get_cached_query() {
method current (line 476) | get current() {
method error (line 480) | get error() {
method loading (line 484) | get loading() {
method ready (line 488) | get ready() {
method run (line 492) | run() {
method refresh (line 505) | refresh() {
method set (line 510) | set(value) {
method withOverride (line 515) | withOverride(fn) {
method then (line 529) | get then() {
method catch (line 535) | get catch() {
method finally (line 541) | get finally() {
method [Symbol.toStringTag] (line 546) | get [Symbol.toStringTag]() {
FILE: packages/kit/src/runtime/client/remote-functions/shared.svelte.js
function get_remote_request_headers (line 13) | function get_remote_request_headers() {
function remote_request (line 31) | async function remote_request(url, headers) {
function release_overrides (line 60) | function release_overrides(updates) {
function refresh_queries (line 72) | function refresh_queries(stringified_refreshes, updates = []) {
FILE: packages/kit/src/runtime/client/session-storage.js
function get (line 7) | function get(key, parse = JSON.parse) {
function set (line 21) | function set(key, value, stringify = JSON.stringify) {
FILE: packages/kit/src/runtime/client/state.svelte.js
function update (line 57) | function update(new_page) {
FILE: packages/kit/src/runtime/client/types.d.ts
type SvelteKitApp (line 14) | interface SvelteKitApp {
type NavigationIntent (line 63) | type NavigationIntent = {
type NavigationResult (line 76) | type NavigationResult = NavigationRedirect | NavigationFinished;
type NavigationRedirect (line 78) | type NavigationRedirect = {
type NavigationFinished (line 83) | type NavigationFinished = {
type BranchNode (line 97) | type BranchNode = {
type DataNode (line 106) | interface DataNode {
type NavigationState (line 113) | interface NavigationState {
type HydrateOptions (line 121) | interface HydrateOptions {
FILE: packages/kit/src/runtime/client/utils.js
function resolve_url (line 12) | function resolve_url(url) {
function scroll_state (line 25) | function scroll_state() {
function link_option (line 55) | function link_option(element, name) {
function validate_link_option (line 74) | function validate_link_option(element, name, value) {
function parent_element (line 99) | function parent_element(element) {
function find_anchor (line 112) | function find_anchor(element, target) {
function get_link_info (line 127) | function get_link_info(a, base, uses_hash_router) {
function get_router_options (line 157) | function get_router_options(element) {
function notifiable_store (line 215) | function notifiable_store(value) {
function create_updated_store (line 248) | function create_updated_store() {
function is_external_url (line 314) | function is_external_url(url, base, hash_routing) {
function load_css (line 336) | function load_css(deps) {
FILE: packages/kit/src/runtime/form-utils.js
function set_nested_value (line 16) | function set_nested_value(object, path_string, value) {
function convert_formdata (line 32) | function convert_formdata(data) {
constant BINARY_FORM_CONTENT_TYPE (line 66) | const BINARY_FORM_CONTENT_TYPE = 'application/x-sveltekit-formdata';
constant BINARY_FORM_VERSION (line 67) | const BINARY_FORM_VERSION = 0;
constant HEADER_BYTES (line 68) | const HEADER_BYTES = 1 + 4 + 2;
function serialize_binary_form (line 80) | function serialize_binary_form(data, meta) {
function deserialize_binary_form (line 142) | async function deserialize_binary_form(request) {
function deserialize_error (line 341) | function deserialize_error(message) {
class LazyFile (line 346) | class LazyFile {
method constructor (line 359) | constructor(name, type, size, last_modified, get_chunk, offset) {
method arrayBuffer (line 377) | async arrayBuffer() {
method bytes (line 381) | async bytes() {
method slice (line 389) | slice(start = 0, end = this.size, contentType = this.type) {
method stream (line 414) | stream() {
method text (line 464) | async text() {
function split_path (line 474) | function split_path(path) {
function check_prototype_pollution (line 486) | function check_prototype_pollution(key) {
function deep_set (line 501) | function deep_set(object, keys, value) {
function normalize_issue (line 533) | function normalize_issue(issue, server = false) {
function flatten_issues (line 563) | function flatten_issues(issues) {
function deep_get (line 595) | function deep_get(object, path) {
function create_field_proxy (line 615) | function create_field_proxy(target, get_input, set_input, get_issues, pa...
function build_path_string (line 828) | function build_path_string(path) {
function throw_on_old_property_access (line 846) | function throw_on_old_property_access(instance) {
FILE: packages/kit/src/runtime/form-utils.spec.js
method transform (line 151) | transform(chunk, controller) {
class GuardedUint8Array (line 323) | class GuardedUint8Array extends OriginalUint8Array {
method constructor (line 325) | constructor(...args) {
method start (line 361) | start(controller) {
method start (line 541) | start(controller) {
function build_raw_request (line 570) | function build_raw_request(devalue_data, file_offsets_json = '[0]') {
function build_raw_request_with_files (line 597) | function build_raw_request_with_files(devalue_data, file_offsets_json, f...
FILE: packages/kit/src/runtime/pathname.js
constant DATA_SUFFIX (line 1) | const DATA_SUFFIX = '/__data.json';
constant HTML_DATA_SUFFIX (line 2) | const HTML_DATA_SUFFIX = '.html__data.json';
function has_data_suffix (line 5) | function has_data_suffix(pathname) {
function add_data_suffix (line 10) | function add_data_suffix(pathname) {
function strip_data_suffix (line 16) | function strip_data_suffix(pathname) {
constant ROUTE_SUFFIX (line 24) | const ROUTE_SUFFIX = '/__route.js';
function has_resolution_suffix (line 30) | function has_resolution_suffix(pathname) {
function add_resolution_suffix (line 39) | function add_resolution_suffix(pathname) {
function strip_resolution_suffix (line 47) | function strip_resolution_suffix(pathname) {
FILE: packages/kit/src/runtime/server/app.js
function set_app (line 7) | function set_app(value) {
FILE: packages/kit/src/runtime/server/constants.js
constant NULL_BODY_STATUS (line 1) | const NULL_BODY_STATUS = [101, 103, 204, 205, 304];
constant IN_WEBCONTAINER (line 4) | const IN_WEBCONTAINER = !!globalThis.process?.versions?.webcontainer;
FILE: packages/kit/src/runtime/server/cookie.js
constant INVALID_COOKIE_CHARACTER_REGEX (line 8) | const INVALID_COOKIE_CHARACTER_REGEX = /[\x00-\x1F\x7F()<>@,;:"/[\]?={} ...
constant MAX_COOKIE_SIZE (line 21) | const MAX_COOKIE_SIZE = 4129;
function validate_options (line 25) | function validate_options(options) {
function generate_cookie_key (line 42) | function generate_cookie_key(domain, path, name) {
function get_cookies (line 50) | function get_cookies(request, url) {
function domain_matches (line 287) | function domain_matches(hostname, constraint) {
function path_matches (line 300) | function path_matches(path, constraint) {
function add_cookies_to_headers (line 313) | function add_cookies_to_headers(headers, cookies) {
function conjoin (line 331) | function conjoin(array) {
FILE: packages/kit/src/runtime/server/data/index.js
function render_data (line 22) | async function render_data(
function json_response (line 168) | function json_response(json, status = 200) {
function redirect_json_response (line 181) | function redirect_json_response(redirect) {
FILE: packages/kit/src/runtime/server/endpoint.js
function render_endpoint (line 14) | async function render_endpoint(event, event_state, mod, state) {
function is_endpoint_request (line 95) | function is_endpoint_request(event) {
FILE: packages/kit/src/runtime/server/env_module.js
function get_public_env (line 16) | function get_public_env(request) {
FILE: packages/kit/src/runtime/server/fetch.js
function create_fetch (line 18) | function create_fetch({ event, options, manifest, state, get_cookie_head...
function normalize_fetch_input (line 192) | function normalize_fetch_input(info, init, url) {
function internal_fetch (line 207) | async function internal_fetch(request, options, manifest, state) {
FILE: packages/kit/src/runtime/server/index.js
class Server (line 19) | class Server {
method constructor (line 27) | constructor(manifest) {
method init (line 55) | async init({ env, read }) {
method respond (line 171) | async respond(request, options) {
FILE: packages/kit/src/runtime/server/page/actions.js
function is_action_json_request (line 14) | function is_action_json_request(event) {
function handle_action_json_request (line 29) | async function handle_action_json_request(event, event_state, options, s...
function check_incorrect_fail_use (line 116) | function check_incorrect_fail_use(error) {
function action_json_redirect (line 125) | function action_json_redirect(redirect) {
function action_json (line 137) | function action_json(data, init) {
function is_action_request (line 144) | function is_action_request(event) {
function handle_action_request (line 154) | async function handle_action_request(event, event_state, server) {
function check_named_default_separate (line 218) | function check_named_default_separate(actions) {
function call_action (line 232) | async function call_action(event, event_state, actions) {
function validate_action_return (line 287) | function validate_action_return(data) {
function uneval_action_response (line 303) | function uneval_action_response(data, route_id, transport) {
function stringify_action_response (line 322) | function stringify_action_response(data, route_id, transport) {
function try_serialize (line 335) | function try_serialize(data, fn, route_id) {
FILE: packages/kit/src/runtime/server/page/crypto.js
function sha256 (line 8) | function sha256(data) {
function precompute (line 115) | function precompute() {
function reverse_endianness (line 147) | function reverse_endianness(bytes) {
function encode (line 162) | function encode(str) {
FILE: packages/kit/src/runtime/server/page/csp.js
function generate_nonce (line 7) | function generate_nonce() {
class BaseProvider (line 28) | class BaseProvider {
method constructor (line 88) | constructor(use_hashes, directives, nonce) {
method add_script (line 180) | add_script(content) {
method add_script_hashes (line 196) | add_script_hashes(hashes) {
method add_style (line 208) | add_style(content) {
method get_header (line 246) | get_header(is_meta = false) {
class CspProvider (line 320) | class CspProvider extends BaseProvider {
method get_meta (line 321) | get_meta() {
class CspReportOnlyProvider (line 332) | class CspReportOnlyProvider extends BaseProvider {
method constructor (line 338) | constructor(use_hashes, directives, nonce) {
class Csp (line 356) | class Csp {
method constructor (line 370) | constructor({ mode, directives, reportOnly }, { prerender }) {
method script_needs_hash (line 376) | get script_needs_hash() {
method script_needs_nonce (line 380) | get script_needs_nonce() {
method style_needs_nonce (line 384) | get style_needs_nonce() {
method add_script (line 389) | add_script(content) {
method add_script_hashes (line 395) | add_script_hashes(hashes) {
method add_style (line 401) | add_style(content) {
FILE: packages/kit/src/runtime/server/page/data_serializer.js
function server_data_serializer (line 19) | function server_data_serializer(event, event_state, options) {
function server_data_serializer_json (line 134) | function server_data_serializer_json(event, event_state, options) {
FILE: packages/kit/src/runtime/server/page/index.js
constant MAX_DEPTH (line 24) | const MAX_DEPTH = 10;
function render_page (line 37) | async function render_page(
function load_error_components (line 396) | async function load_error_components(options, ssr, branch, page, manifes...
FILE: packages/kit/src/runtime/server/page/load_data.js
function load_server_data (line 21) | async function load_server_data({ event, event_state, state, node, paren...
function load_data (line 207) | async function load_data({
function create_universal_fetch (line 270) | function create_universal_fetch(event, state, fetched, csr, resolve_opts) {
function stream_to_string (line 492) | async function stream_to_string(stream) {
FILE: packages/kit/src/runtime/server/page/load_data.spec.js
function create_fetch (line 7) | function create_fetch(event) {
FILE: packages/kit/src/runtime/server/page/render.js
function render_response (line 48) | async function render_response({
class Head (line 727) | class Head {
method constructor (line 745) | constructor(rendered, prerendering) {
method build (line 750) | build() {
method add_style (line 765) | add_style(style, attributes) {
method add_stylesheet (line 775) | add_stylesheet(href, attributes) {
method add_script_preload (line 780) | add_script_preload(href) {
method add_link_tag (line 790) | add_link_tag(href, attributes) {
method add_http_equiv (line 796) | add_http_equiv(tag) {
FILE: packages/kit/src/runtime/server/page/respond_with_error.js
function respond_with_error (line 25) | async function respond_with_error({
FILE: packages/kit/src/runtime/server/page/serialize_data.js
function serialize_data (line 43) | function serialize_data(fetched, filter, prerendering = false) {
FILE: packages/kit/src/runtime/server/page/server_routing.js
function generate_route_object (line 13) | function generate_route_object(route, url, manifest) {
function create_client_import (line 36) | function create_client_import(import_path, url) {
function resolve_route (line 66) | async function resolve_route(resolved_path, url, manifest) {
function create_server_routing_response (line 85) | function create_server_routing_response(route, params, url, manifest) {
function create_css_import (line 111) | function create_css_import(route, url, manifest) {
FILE: packages/kit/src/runtime/server/page/types.d.ts
type Fetched (line 11) | interface Fetched {
type Loaded (line 21) | type Loaded = {
type CspMode (line 27) | type CspMode = 'hash' | 'nonce' | 'auto';
type CspConfig (line 29) | interface CspConfig {
type CspOpts (line 35) | interface CspOpts {
type Cookie (line 39) | interface Cookie {
type ServerDataSerializer (line 45) | type ServerDataSerializer = {
type ServerDataSerializerJson (line 51) | type ServerDataSerializerJson = {
FILE: packages/kit/src/runtime/server/remote.js
function handle_remote_call (line 18) | async function handle_remote_call(event, state, options, manifest, id) {
function handle_remote_call_internal (line 40) | async function handle_remote_call_internal(event, state, options, manife...
function handle_remote_form_post (line 236) | async function handle_remote_form_post(event, state, manifest, id) {
function handle_remote_form_post_internal (line 258) | async function handle_remote_form_post_internal(event, state, manifest, ...
function get_remote_id (line 324) | function get_remote_id(url) {
function get_remote_action (line 334) | function get_remote_action(url) {
FILE: packages/kit/src/runtime/server/respond.js
function internal_respond (line 69) | async function internal_respond(request, options, manifest, state) {
function load_page_nodes (line 730) | function load_page_nodes(page, manifest) {
function propagate_context (line 746) | function propagate_context(fn) {
FILE: packages/kit/src/runtime/server/utils.js
function is_pojo (line 12) | function is_pojo(body) {
function method_not_allowed (line 27) | function method_not_allowed(mod, method) {
function allowed_methods (line 39) | function allowed_methods(mod) {
function get_global_name (line 54) | function get_global_name(options) {
function static_error_page (line 65) | function static_error_page(options, status, message) {
function handle_fatal_error (line 85) | async function handle_fatal_error(event, state, options, error) {
function handle_error_and_jsonify (line 112) | async function handle_error_and_jsonify(event, state, options, error) {
function redirect_response (line 136) | function redirect_response(status, location) {
function clarify_devalue_error (line 148) | function clarify_devalue_error(event, error) {
function serialize_uses (line 167) | function serialize_uses(node) {
function has_prerendered_path (line 194) | function has_prerendered_path(manifest, pathname) {
function format_server_error (line 207) | function format_server_error(status, error, event) {
function clean_up_stack_trace (line 238) | function clean_up_stack_trace(error) {
function get_node_type (line 259) | function get_node_type(node_id) {
FILE: packages/kit/src/runtime/server/validate-headers.js
constant VALID_CACHE_CONTROL_DIRECTIVES (line 2) | const VALID_CACHE_CONTROL_DIRECTIVES = new Set([
constant CONTENT_TYPE_PATTERN (line 20) | const CONTENT_TYPE_PATTERN =
constant HEADER_VALIDATORS (line 24) | const HEADER_VALIDATORS = {
function validateHeaders (line 53) | function validateHeaders(headers) {
FILE: packages/kit/src/runtime/shared-server.js
function set_private_env (line 17) | function set_private_env(environment) {
function set_public_env (line 22) | function set_public_env(environment) {
function set_fix_stack_trace (line 27) | function set_fix_stack_trace(value) {
FILE: packages/kit/src/runtime/shared.js
function validate_depends (line 10) | function validate_depends(route_id, dep) {
constant INVALIDATED_PARAM (line 19) | const INVALIDATED_PARAM = 'x-sveltekit-invalidated';
constant TRAILING_SLASH_PARAM (line 21) | const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash';
function validate_load_response (line 27) | function validate_load_response(data, location_description) {
function stringify (line 48) | function stringify(data, transport) {
function stringify_remote_arg (line 60) | function stringify_remote_arg(value, transport) {
function parse_remote_arg (line 75) | function parse_remote_arg(string, transport) {
function create_remote_key (line 92) | function create_remote_key(id, payload) {
function unfriendly_hydratable (line 103) | function unfriendly_hydratable(key, fn) {
FILE: packages/kit/src/runtime/telemetry/noop.js
method startSpan (line 11) | startSpan() {
method startActiveSpan (line 22) | startActiveSpan(_name, arg_1, arg_2, arg_3) {
method spanContext (line 39) | spanContext() {
method setAttribute (line 42) | setAttribute() {
method setAttributes (line 45) | setAttributes() {
method addEvent (line 48) | addEvent() {
method setStatus (line 51) | setStatus() {
method updateName (line 54) | updateName() {
method end (line 57) | end() {
method isRecording (line 60) | isRecording() {
method recordException (line 63) | recordException() {
method addLink (line 66) | addLink() {
method addLinks (line 69) | addLinks() {
FILE: packages/kit/src/runtime/telemetry/record_span.js
function record_span (line 7) | async function record_span({ name, attributes, fn }) {
FILE: packages/kit/src/runtime/utils.js
function get_relative_path (line 11) | function get_relative_path(from, to) {
function base64_encode (line 31) | function base64_encode(bytes) {
function base64_decode (line 50) | function base64_decode(encoded) {
FILE: packages/kit/src/types/ambient.d.ts
type Error (line 27) | interface Error {
type Locals (line 34) | interface Locals {}
type PageData (line 41) | interface PageData {}
type PageState (line 46) | interface PageState {}
type Platform (line 51) | interface Platform {}
type AppTypes (line 90) | interface AppTypes {
type RouteId (line 105) | type RouteId = ReturnType<AppTypes['RouteId']>;
type RouteIdWithSearchOrHash (line 110) | type RouteIdWithSearchOrHash = RouteId | `${RouteId}?${string}` | `${Rou...
type RouteParams (line 115) | type RouteParams<T extends RouteId> = T extends keyof ReturnType<AppType...
type LayoutParams (line 122) | type LayoutParams<T extends RouteId> = T extends keyof ReturnType<AppTyp...
type Pathname (line 129) | type Pathname = ReturnType<AppTypes['Pathname']>;
type PathnameWithSearchOrHash (line 134) | type PathnameWithSearchOrHash =
type ResolvedPathname (line 142) | type ResolvedPathname = ReturnType<AppTypes['ResolvedPathname']>;
type Asset (line 147) | type Asset = ReturnType<AppTypes['Asset']>;
FILE: packages/kit/src/types/internal.d.ts
type ServerModule (line 37) | interface ServerModule {
type ServerInternalModule (line 41) | interface ServerInternalModule {
type Asset (line 54) | interface Asset {
type AssetDependencies (line 60) | interface AssetDependencies {
type BuildData (line 69) | interface BuildData {
type CSRPageNode (line 112) | interface CSRPageNode {
type CSRPageNodeLoader (line 120) | type CSRPageNodeLoader = () => Promise<CSRPageNode>;
type CSRRoute (line 126) | type CSRRoute = {
type CSRRouteServer (line 137) | type CSRRouteServer = {
type Deferred (line 145) | interface Deferred {
type GetParams (line 150) | type GetParams = (match: RegExpExecArray) => Record<string, string>;
type ServerHooks (line 152) | interface ServerHooks {
type ClientHooks (line 162) | interface ClientHooks {
type Env (line 169) | interface Env {
class InternalServer (line 174) | class InternalServer extends Server {
type ManifestData (line 188) | interface ManifestData {
type RemoteChunk (line 201) | interface RemoteChunk {
type PageNode (line 206) | interface PageNode {
type PrerenderDependency (line 222) | interface PrerenderDependency {
type PrerenderOptions (line 227) | interface PrerenderOptions {
type RecursiveRequired (line 240) | type RecursiveRequired<T> = {
type RequiredResolveOptions (line 249) | type RequiredResolveOptions = Required<ResolveOptions>;
type RouteParam (line 251) | interface RouteParam {
type RouteData (line 264) | interface RouteData {
type ServerRedirectNode (line 289) | type ServerRedirectNode = {
type ServerNodesResponse (line 294) | type ServerNodesResponse = {
type RemoteFunctionResponse (line 302) | type RemoteFunctionResponse =
type ServerDataNode (line 320) | interface ServerDataNode {
type ServerDataChunkNode (line 334) | interface ServerDataChunkNode {
type ServerDataSkippedNode (line 345) | interface ServerDataSkippedNode {
type ServerErrorNode (line 352) | interface ServerErrorNode {
type ServerMetadataRoute (line 361) | interface ServerMetadataRoute {
type ServerMetadata (line 374) | interface ServerMetadata {
type SSRComponent (line 385) | interface SSRComponent {
type SSRComponentLoader (line 405) | type SSRComponentLoader = () => Promise<SSRComponent>;
type UniversalNode (line 407) | interface UniversalNode {
type ServerNode (line 418) | interface ServerNode {
type SSRNode (line 429) | interface SSRNode {
type SSRNodeLoader (line 454) | type SSRNodeLoader = () => Promise<SSRNode>;
type SSROptions (line 456) | interface SSROptions {
type PageNodeIndexes (line 485) | interface PageNodeIndexes {
type PrerenderEntryGenerator (line 491) | type PrerenderEntryGenerator = () => MaybePromise<Array<Record<string, s...
type RemotePrerenderInputsGenerator (line 492) | type RemotePrerenderInputsGenerator<Input = any> = () => MaybePromise<In...
type SSREndpoint (line 494) | type SSREndpoint = Partial<Record<HttpMethod, RequestHandler>> & {
type SSRRoute (line 502) | interface SSRRoute {
type SSRClientRoute (line 511) | interface SSRClientRoute {
type SSRState (line 520) | interface SSRState {
type StrictBody (line 547) | type StrictBody = string | ArrayBufferView;
type Uses (line 549) | interface Uses {
type ValidatedConfig (line 558) | type ValidatedConfig = Config & {
type ValidatedKitConfig (line 563) | type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'> & {
type BinaryFormMeta (line 567) | type BinaryFormMeta = {
type BaseRemoteInternals (line 572) | interface BaseRemoteInternals {
type RemoteQueryInternals (line 578) | interface RemoteQueryInternals extends BaseRemoteInternals {
type RemoteQueryLiveInternals (line 581) | interface RemoteQueryLiveInternals extends BaseRemoteInternals {
type RemoteQueryBatchInternals (line 590) | interface RemoteQueryBatchInternals extends BaseRemoteInternals {
type RemoteCommandInternals (line 595) | interface RemoteCommandInternals extends BaseRemoteInternals {
type RemoteFormInternals (line 599) | interface RemoteFormInternals extends BaseRemoteInternals {
type RemotePrerenderInternals (line 604) | interface RemotePrerenderInternals extends BaseRemoteInternals {
type RemoteInternals (line 611) | type RemoteInternals =
type InternalRemoteFormIssue (line 619) | interface InternalRemoteFormIssue extends RemoteFormIssue {
type RecordSpan (line 625) | type RecordSpan = <T>(options: {
type RequestState (line 635) | interface RequestState {
type RequestStore (line 655) | interface RequestStore {
FILE: packages/kit/src/types/private.d.ts
type AdapterEntry (line 7) | interface AdapterEntry {
type ActionSource (line 58) | type ActionSource = 'strict-dynamic' | 'report-sample';
type BaseSource (line 59) | type BaseSource =
type CryptoSource (line 66) | type CryptoSource = `${'nonce' | 'sha256' | 'sha384' | 'sha512'}-${strin...
type FrameSource (line 67) | type FrameSource = HostSource | SchemeSource | 'self' | 'none';
type HostNameScheme (line 68) | type HostNameScheme = `${string}.${string}` | 'localhost';
type HostSource (line 69) | type HostSource = `${HostProtocolSchemes}${HostNameScheme}${PortScheme}`;
type HostProtocolSchemes (line 70) | type HostProtocolSchemes = `${string}://` | '';
type HttpDelineator (line 71) | type HttpDelineator = '/' | '?' | '#' | '\\';
type PortScheme (line 72) | type PortScheme = `:${number}` | '' | ':*';
type SchemeSource (line 73) | type SchemeSource = 'http:' | 'https:' | 'data:' | 'mediastream:' | 'blo...
type Source (line 74) | type Source = HostSource | SchemeSource | CryptoSource | BaseSource;
type Sources (line 75) | type Sources = Source[];
type CspDirectives (line 78) | interface CspDirectives {
type HttpMethod (line 145) | type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' |...
type Logger (line 147) | interface Logger {
type MaybePromise (line 156) | type MaybePromise<T> = T | Promise<T>;
type Prerendered (line 158) | interface Prerendered {
type PrerenderHttpErrorHandler (line 193) | interface PrerenderHttpErrorHandler {
type PrerenderMissingIdHandler (line 203) | interface PrerenderMissingIdHandler {
type PrerenderEntryGeneratorMismatchHandler (line 207) | interface PrerenderEntryGeneratorMismatchHandler {
type PrerenderUnseenRoutesHandler (line 211) | interface PrerenderUnseenRoutesHandler {
type PrerenderHttpErrorHandlerValue (line 215) | type PrerenderHttpErrorHandlerValue = 'fail' | 'warn' | 'ignore' | Prere...
type PrerenderMissingIdHandlerValue (line 216) | type PrerenderMissingIdHandlerValue = 'fail' | 'warn' | 'ignore' | Prere...
type PrerenderUnseenRoutesHandlerValue (line 217) | type PrerenderUnseenRoutesHandlerValue =
type PrerenderEntryGeneratorMismatchHandlerValue (line 222) | type PrerenderEntryGeneratorMismatchHandlerValue =
type PrerenderOption (line 228) | type PrerenderOption = boolean | 'auto';
type PrerenderMap (line 230) | type PrerenderMap = Map<string, PrerenderOption>;
type RequestOptions (line 232) | interface RequestOptions {
type RouteSegment (line 237) | interface RouteSegment {
type TrailingSlash (line 244) | type TrailingSlash = 'never' | 'always' | 'ignore';
type DeepPartial (line 246) | type DeepPartial<T> = T extends Record<PropertyKey, unknown> | unknown[]
type IsAny (line 254) | type IsAny<T> = 0 extends 1 & T ? true : false;
FILE: packages/kit/src/utils/array.js
function compact (line 7) | function compact(arr) {
FILE: packages/kit/src/utils/css.js
constant SKIP_PARSING_REGEX (line 18) | const SKIP_PARSING_REGEX = /url\(/i;
constant URL_FUNCTION_REGEX (line 21) | const URL_FUNCTION_REGEX = /url\(\s*.*?\)/gi;
constant URL_PARAMETER_REGEX (line 24) | const URL_PARAMETER_REGEX = /url\(\s*(['"]?)(.*?)\1\s*\)/i;
constant HASH_OR_QUERY_REGEX (line 27) | const HASH_OR_QUERY_REGEX = /[#?]/;
constant VITE_ASSET_PREFIX (line 33) | const VITE_ASSET_PREFIX = './';
constant AST_OFFSET (line 35) | const AST_OFFSET = '<style>'.length;
function fix_css_urls (line 50) | function fix_css_urls({
function find_declarations (line 150) | function find_declarations(rule, callback) {
function tippex_comments_and_strings (line 168) | function tippex_comments_and_strings(value) {
FILE: packages/kit/src/utils/env.js
function filter_env (line 7) | function filter_env(env, allowed, disallowed) {
FILE: packages/kit/src/utils/error.js
function coalesce_to_error (line 7) | function coalesce_to_error(err) {
function normalize_error (line 20) | function normalize_error(error) {
function get_status (line 29) | function get_status(error) {
function get_message (line 36) | function get_message(error) {
FILE: packages/kit/src/utils/escape.js
function escape_html (line 50) | function escape_html(str, is_attr) {
function escape_for_interpolation (line 69) | function escape_for_interpolation(str) {
FILE: packages/kit/src/utils/exports.js
function validator (line 4) | function validator(expected) {
function hint_for_supported_files (line 33) | function hint_for_supported_files(key, ext = '.js') {
FILE: packages/kit/src/utils/exports.spec.js
function check_error (line 14) | function check_error(fn, message) {
FILE: packages/kit/src/utils/features.js
function check_feature (line 7) | function check_feature(route_id, config, feature, adapter) {
FILE: packages/kit/src/utils/filesystem.js
function mkdirp (line 5) | function mkdirp(dir) {
function rimraf (line 22) | function rimraf(path) {
function copy (line 34) | function copy(source, target, opts = {}) {
function walk (line 90) | function walk(cwd, dirs = false) {
function posixify (line 114) | function posixify(str) {
function join_relative (line 122) | function join_relative(...str) {
function relative_path (line 137) | function relative_path(from, to) {
function to_fs (line 145) | function to_fs(str) {
function from_fs (line 157) | function from_fs(str) {
function resolve_entry (line 171) | function resolve_entry(entry) {
function read (line 200) | function read(file) {
FILE: packages/kit/src/utils/fork.js
function forked (line 14) | function forked(module, callback) {
FILE: packages/kit/src/utils/functions.js
function once (line 5) | function once(fn) {
FILE: packages/kit/src/utils/hash.js
function hash (line 5) | function hash(...values) {
FILE: packages/kit/src/utils/http.js
function negotiate (line 9) | function negotiate(accept, types) {
function is_content_type (line 64) | function is_content_type(request, ...types) {
function is_form_content_type (line 72) | function is_form_content_type(request) {
FILE: packages/kit/src/utils/import.js
function resolve_peer (line 9) | function resolve_peer(dependency) {
function import_peer (line 46) | async function import_peer(dependency) {
FILE: packages/kit/src/utils/page_nodes.js
class PageNodes (line 8) | class PageNodes {
method constructor (line 14) | constructor(nodes) {
method layouts (line 18) | layouts() {
method page (line 22) | page() {
method validate (line 26) | validate() {
method #get_option (line 46) | #get_option(option) {
method csr (line 54) | csr() {
method ssr (line 58) | ssr() {
method prerender (line 62) | prerender() {
method trailing_slash (line 66) | trailing_slash() {
method get_config (line 70) | get_config() {
method should_prerender_data (line 89) | should_prerender_data() {
FILE: packages/kit/src/utils/promise.js
function with_resolvers (line 18) | function with_resolvers() {
FILE: packages/kit/src/utils/routing.js
function parse_route_id (line 10) | function parse_route_id(id) {
function remove_optional_params (line 112) | function remove_optional_params(id) {
function affects_path (line 120) | function affects_path(segment) {
function get_route_segments (line 131) | function get_route_segments(route) {
function exec (line 140) | function exec(match, params, matchers) {
function escape (line 212) | function escape(str) {
function resolve_route (line 246) | function resolve_route(id, params) {
function has_server_load (line 281) | function has_server_load(node) {
function find_route (line 293) | function find_route(path, routes, matchers) {
FILE: packages/kit/src/utils/routing.spec.js
function create_route (line 385) | function create_route(id) {
FILE: packages/kit/src/utils/streaming.js
function create_async_iterator (line 11) | function create_async_iterator() {
FILE: packages/kit/src/utils/url.js
constant SCHEME (line 7) | const SCHEME = /^[a-z][a-z\d+\-.]+:/i;
function resolve (line 15) | function resolve(base, path) {
function is_root_relative (line 26) | function is_root_relative(path) {
function normalize_path (line 34) | function normalize_path(path, trailing_slash) {
function decode_pathname (line 50) | function decode_pathname(pathname) {
function decode_params (line 55) | function decode_params(params) {
function decode_uri (line 69) | function decode_uri(uri) {
function strip_hash (line 84) | function strip_hash({ href }) {
function make_trackable (line 94) | function make_trackable(url, callback, search_params_callback, allow_has...
function disable_hash (line 162) | function disable_hash(url) {
function disable_search (line 178) | function disable_search(url) {
function allow_nodejs_console_log (line 194) | function allow_nodejs_console_log(url) {
FILE: packages/kit/src/version.js
constant VERSION (line 4) | const VERSION = '2.55.0';
FILE: packages/kit/test/ambient.d.ts
type Window (line 4) | interface Window {
FILE: packages/kit/test/apps/amp/src/app.d.ts
type Options (line 4) | interface Options {
FILE: packages/kit/test/apps/amp/src/hooks.server.js
function handle (line 5) | async function handle({ event, resolve }) {
FILE: packages/kit/test/apps/amp/src/routes/http-equiv/cache-control/+page.js
function load (line 4) | function load({ setHeaders }) {
FILE: packages/kit/test/apps/amp/src/routes/origin.json/+server.js
function GET (line 4) | function GET({ url }) {
FILE: packages/kit/test/apps/amp/src/routes/origin/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/amp/src/routes/valid.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/amp/src/routes/valid/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/async/src/hooks.server.js
function handle (line 5) | async function handle({ event, resolve }) {
FILE: packages/kit/test/apps/async/src/lib/index.js
class Foo (line 1) | class Foo {
method constructor (line 2) | constructor(message) {
method bar (line 6) | bar() {
FILE: packages/kit/test/apps/async/src/routes/remote/+page.js
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/async/src/routes/remote/batch-ssr/batch.remote.js
constant TODOS (line 5) | const TODOS = new Map([
FILE: packages/kit/test/apps/async/src/routes/remote/batch/batch.remote.js
constant INITIAL_TODOS (line 5) | const INITIAL_TODOS = [
FILE: packages/kit/test/apps/async/src/routes/remote/prerender/functions-only/+page.js
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/async/src/routes/remote/prerender/whole-page/+page.js
function load (line 5) | async function load() {
FILE: packages/kit/test/apps/async/src/routes/remote/server-endpoint/api/+server.ts
function GET (line 4) | async function GET() {
function POST (line 9) | async function POST() {
FILE: packages/kit/test/apps/async/src/routes/remote/server-load-command/+page.server.ts
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/basics/src/app.d.ts
type Locals (line 3) | interface Locals {
type PageState (line 12) | interface PageState {
FILE: packages/kit/test/apps/basics/src/global.d.ts
type Window (line 2) | interface Window {
FILE: packages/kit/test/apps/basics/src/hooks.client.js
function handleError (line 6) | function handleError({ error, event, status, message }) {
function init (line 12) | function init() {
FILE: packages/kit/test/apps/basics/src/hooks.server.js
function error_to_pojo (line 30) | function error_to_pojo(error) {
function handleFetch (line 202) | async function handleFetch({ request, fetch }) {
function init (line 213) | function init() {
FILE: packages/kit/test/apps/basics/src/instrumentation.server.js
class FilesystemSpanExporter (line 8) | class FilesystemSpanExporter {
method constructor (line 11) | constructor(path) {
method export (line 17) | export(spans) {
method shutdown (line 38) | shutdown() {
FILE: packages/kit/test/apps/basics/src/lib/index.js
class Foo (line 1) | class Foo {
method constructor (line 2) | constructor(message) {
method bar (line 6) | bar() {
FILE: packages/kit/test/apps/basics/src/params/lowercase.js
function match (line 1) | function match(param) {
FILE: packages/kit/test/apps/basics/src/params/numeric.js
function match (line 1) | function match(param) {
FILE: packages/kit/test/apps/basics/src/params/uppercase.js
function match (line 1) | function match(param) {
FILE: packages/kit/test/apps/basics/src/routes/+layout.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/+layout.server.js
function load (line 10) | async function load({ cookies, locals, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/accessibility/autofocus/b/+page.server.js
method default (line 2) | default() {}
FILE: packages/kit/test/apps/basics/src/routes/accessibility/c/+page.server.js
method default (line 2) | default() {}
FILE: packages/kit/test/apps/basics/src/routes/actions/enhance/+page.server.js
function load (line 4) | function load({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/actions/invalidate-all/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/actions/invalidate-all/+page.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/actions/redirect/+page.server.js
function load (line 4) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/actions/success-data/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.server.js
function load (line 7) | function load({ platform }) {
FILE: packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.server.js
function load (line 7) | function load({ platform }) {
FILE: packages/kit/test/apps/basics/src/routes/answer.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/caching/+page.js
function load (line 2) | async function load({ setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/caching/server-data/+page.server.js
function load (line 2) | async function load({ setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/+page.server.js
function load (line 4) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.js
function load (line 4) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/set-cookie/+server.js
function GET (line 2) | async function GET() {
FILE: packages/kit/test/apps/basics/src/routes/cookies/encoding/+page.server.js
function load (line 2) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/forwarded-in-etag/+page.server.js
function load (line 2) | function load({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/nested/a/+page.server.js
function load (line 4) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/nested/b/+page.server.js
function load (line 4) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/set-in-layout/+layout.server.js
function load (line 2) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/set-in-layout/+page.server.js
function load (line 2) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/set-more-than-one/+page.server.js
function load (line 2) | function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/cookies/shared.js
constant COOKIE_NAME (line 1) | const COOKIE_NAME = 'cookiesAPITest';
FILE: packages/kit/test/apps/basics/src/routes/csrf/+server.js
function GET (line 2) | function GET() {
function POST (line 7) | function POST() {
function PUT (line 12) | function PUT() {
function PATCH (line 17) | function PATCH() {
function DELETE (line 22) | function DELETE() {
FILE: packages/kit/test/apps/basics/src/routes/cyclical-dynamic-import/_is_even.js
function is_even (line 1) | async function is_even(num) {
FILE: packages/kit/test/apps/basics/src/routes/cyclical-dynamic-import/_is_odd.js
function is_odd (line 1) | async function is_odd(num) {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-code/target/eager/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-code/target/hover/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-code/target/tap/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-code/target/viewport/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+layout.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/target/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/delete-route/[id].json/+server.js
function DELETE (line 4) | function DELETE(event) {
FILE: packages/kit/test/apps/basics/src/routes/encoded/[slug]/+page.js
function load (line 2) | function load({ url, params }) {
FILE: packages/kit/test/apps/basics/src/routes/encoded/endpoint/+server.js
function GET (line 3) | async function GET() {
FILE: packages/kit/test/apps/basics/src/routes/encoded/redirect/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/encoded/redirected/+page.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/encoded/反应/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/encoded/苗条/+page.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-input/sha256/+server.js
function PUT (line 4) | async function PUT({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/+server.js
function OPTIONS (line 2) | function OPTIONS() {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/body/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/fallback/+server.js
function GET (line 1) | function GET() {
function fallback (line 5) | function fallback() {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/fetch-asset/absolute/+server.js
function GET (line 4) | async function GET({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/fetch-asset/relative/+server.js
function GET (line 4) | async function GET({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/head-handler/+server.js
function GET (line 4) | function GET() {
function HEAD (line 9) | function HEAD() {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/head-write-error/+server.js
function GET (line 4) | function GET({ setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/stream-throw-error/+server.js
function GET (line 2) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/stream-typeerror/+server.js
function GET (line 4) | function GET({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/endpoint-output/stream/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/env/includes/+page.server.js
function load (line 4) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/+layout.js
function load (line 4) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint-shadow-not-ok/+page.server.js
function load (line 4) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint-shadow/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint-throw-error/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint-throw-redirect/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint.json/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/errors/endpoint/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/errors/error-html/make-root-fail/+server.js
function GET (line 4) | function GET({ cookies, url }) {
FILE: packages/kit/test/apps/basics/src/routes/errors/init-error-endpoint/+server.js
function GET (line 10) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/errors/invalid-load-response/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/invalid-route-response/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/errors/invalid-server-load-response/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-client/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-client/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-page-options/csr/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-server/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-server/layout-data/+layout.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-server/layout-data/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-error-string-server/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-server/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/load-status-without-error-client/+page.js
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/nested-error-page/nope/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/errors/page-endpoint/_shared.js
class FancyError (line 1) | class FancyError extends Error {
method constructor (line 5) | constructor(message, options) {
FILE: packages/kit/test/apps/basics/src/routes/errors/stack-trace/_bad.js
function foo (line 6) | function foo() {}
FILE: packages/kit/test/apps/basics/src/routes/get-request-event/endpoint/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/get-request-event/with-message/+page.server.ts
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/headers/class/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/headers/echo/+server.js
function GET (line 4) | function GET({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/headers/set-cookie/+layout.server.js
function load (line 2) | function load({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/headers/set-cookie/sub/+page.server.js
function load (line 2) | function load({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/immutable-headers/+page.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/init-hooks/+page.server.ts
function _set_from_init (line 3) | function _set_from_init() {
function load (line 7) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/+page.js
function load (line 4) | function load(pageContext) {
FILE: packages/kit/test/apps/basics/src/routes/load/[dynamic].json/+server.js
function GET (line 4) | function GET({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/load/[dynamic]/+page.js
function load (line 2) | async function load({ params, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/accumulated/with-page-data/+page.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/bust/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/bust/count/+server.js
function GET (line 3) | function GET({ setHeaders, cookies }) {
function POST (line 11) | function POST() {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/bust/increment/+server.js
function GET (line 3) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/default/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/default/count/+server.js
function GET (line 3) | function GET({ setHeaders, cookies }) {
function POST (line 11) | function POST() {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/default/increment/+server.js
function GET (line 3) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/force/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/force/count/+server.js
function GET (line 3) | function GET({ setHeaders, cookies }) {
function POST (line 11) | function POST() {
FILE: packages/kit/test/apps/basics/src/routes/load/cache-control/force/increment/+server.js
function GET (line 3) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/load/change-detection/+layout.js
function load (line 4) | async function load({ fetch, depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/change-detection/data.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/change-detection/one/[x]/+page.js
function load (line 6) | async function load({ params, setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/load/change-detection/two/[y]/+page.js
function load (line 4) | async function load({ params, setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/load/devalue/regex/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/dynamic-import-styles/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-abort-signal/+page.server.js
function load (line 1) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-abort-signal/data/+server.js
function GET (line 3) | async function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-abort-signal/slow/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-arraybuffer-b64/+page.js
function load (line 1) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-asset/+page.js
function load (line 5) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-body-stream-b64/+page.js
function load (line 17) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-cache-control/headers-diff/+page.js
function load (line 1) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-cache-control/headers-diff/+server.js
function GET (line 4) | async function GET({ request, setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-cache-control/load-data/+page.js
function load (line 1) | async function load(event) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-cache-control/load-data/+server.js
function POST (line 4) | async function POST({ request, setHeaders }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-credentialed.json/+server.js
function GET (line 4) | function GET(event) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-credentialed/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-external-no-cookies/+page.js
function load (line 2) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-no-body/+page.js
function load (line 1) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-no-body/endpoint/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-origin-external/+page.js
function load (line 2) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-origin-internal/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-origin-internal/resource/+server.js
function POST (line 4) | function POST({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-relative.json/+server.js
function GET (line 4) | function GET() {
function POST (line 11) | async function POST({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-relative/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-request-headers/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-request-headers/data/+server.js
function GET (line 4) | function GET({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-request.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-request/+page.js
function load (line 4) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-response-headers.json/+server.js
function GET (line 2) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-response-headers/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-same-url/+page.js
function load (line 2) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/fetch-same-url/data.json/+server.js
function GET (line 6) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/depends-goto/+layout.js
function load (line 2) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/depends-goto/+page.js
function load (line 2) | function load({ data, depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/depends-goto/+page.server.js
function load (line 2) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/depends/+page.js
function load (line 2) | function load({ data, depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/depends/+page.server.js
function load (line 2) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+layout.server.js
function load (line 2) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.server.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/multiple-batched/+page.js
function load (line 5) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/multiple/+layout.js
function load (line 6) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/multiple/+page.js
function load (line 4) | function load({ depends }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/multiple/redirect/+page.js
function load (line 5) | async function load({ parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/multiple/state.js
function increment_layout (line 8) | function increment_layout() {
function increment_page (line 12) | function increment_page() {
function get_layout (line 16) | function get_layout() {
function get_page (line 20) | function get_page() {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/params/+layout.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/route/server/+layout.server.js
function load (line 2) | function load({ route }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/route/shared/+layout.js
function load (line 2) | function load({ route }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/search-params/server/+page.server.js
function load (line 3) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/search-params/universal/+page.js
function load (line 3) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/server-fetch/+page.server.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/server-fetch/count.json/+server.js
function GET (line 6) | function GET({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/invalidation/url/+page.server.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/large-response/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/large-response/text.txt/+server.js
function GET (line 11) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/mutated-url/+page.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/server/+layout.server.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/server/[x]/+layout.server.js
function load (line 2) | async function load({ params, parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/server/[x]/[y]/[z]/+page.server.js
function load (line 2) | async function load({ params, parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/shared/+layout.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/shared/[x]/+layout.js
function load (line 2) | async function load({ params, parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/parent/shared/[x]/[y]/[z]/+page.js
function load (line 2) | async function load({ params, parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/props/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/raw-body.json/+server.js
function POST (line 4) | async function POST({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/load/raw-body/dataview/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/raw-body/string/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/raw-body/uint8array/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/relay.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/relay/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization-post-request/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization-post.json/+server.js
function POST (line 2) | async function POST({ request }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization-post/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization/+page.js
function load (line 2) | async function load({ fetch, data, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization/+page.server.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization/fetched-from-server.json/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/serialization/fetched-from-shared.json/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/server-data-nostore/+page.server.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/server-data-reuse/with-changing-parent/+layout.server.js
function load (line 2) | function load(input) {
FILE: packages/kit/test/apps/basics/src/routes/load/server-data-reuse/with-changing-parent/with-server-load/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/server-data-reuse/with-server-load/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/server-fetch-request/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/server-log-search-param/+page.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/server-response-clone/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/set-cookie-fetch/+page.js
function load (line 1) | async function load({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/set-cookie-fetch/a.json/+server.js
function GET (line 4) | function GET({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/set-cookie-fetch/b.json/+server.js
function GET (line 4) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/load/state.js
function increment (line 7) | function increment(import_meta_url) {
function reset_states (line 18) | function reset_states(import_meta_url) {
FILE: packages/kit/test/apps/basics/src/routes/load/static-file-with-hash/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged-parent/+layout.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged-parent/state.js
function increment (line 3) | function increment() {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged-parent/uses-parent/[slug]/+page.server.js
function load (line 2) | async function load({ params, parent }) {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged/+layout.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged/isolated/[slug]/+page.server.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/load/unchanged/state.js
function increment (line 3) | function increment() {
FILE: packages/kit/test/apps/basics/src/routes/load/url-query-param/+page.js
function load (line 1) | function load({ data, url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/url-query-param/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/correct/+page.js
function load (line 2) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/data.json/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/incorrect/+page.js
function load (line 2) | async function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/patching-server-load-ii/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/patching-server-load/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/load/window-fetch/patching/+page.js
function load (line 4) | async function load({ url, fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/match/+page.server.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/navigation-lifecycle/before-navigate/redirect/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/nested-layout/error/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/nested-layout/foo/bar/nope/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/no-csr/+page.js
function load (line 4) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/no-csr/data.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/package.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/prerendering/prerendered-endpoint/api-with-param/[option]/+server.js
function entries (line 6) | function entries() {
function GET (line 14) | async function GET({ params: { option } }) {
FILE: packages/kit/test/apps/basics/src/routes/prerendering/prerendered-endpoint/api/+server.js
function GET (line 5) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/prerendering/prerendered-endpoint/page/+page.server.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/prerendering/prerendered-endpoint/proxy/+server.js
function GET (line 1) | async function GET({ fetch, url }) {
FILE: packages/kit/test/apps/basics/src/routes/query/echo/+page.js
function load (line 4) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/query/echo/utils.js
function to_pojo (line 4) | function to_pojo(query) {
FILE: packages/kit/test/apps/basics/src/routes/read-file/+page.server.js
function load (line 19) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect-on-load/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/a/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/b/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/in-handle/+page.server.js
function load (line 1) | function load() {}
FILE: packages/kit/test/apps/basics/src/routes/redirect/loopy/a/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/loopy/b/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/missing-status/a/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/missing-status/b/+page.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/redirect/package/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/reroute/api/+server.ts
function GET (line 3) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/reroute/api/[prerendered]/+server.ts
function GET (line 7) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/reroute/client-only-redirect/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/reroute/invalidate/+page.server.js
function load (line 1) | function load({ isDataRequest }) {
FILE: packages/kit/test/apps/basics/src/routes/reroute/preload-data/a/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/reroute/preload-data/b/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/routing/ambiguous/[slug].json/+server.js
function GET (line 2) | function GET(req) {
FILE: packages/kit/test/apps/basics/src/routes/routing/b.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/routing/b/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/cancellation/a/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/routing/content-negotiation/+server.js
function GET (line 2) | function GET() {
function PUT (line 7) | function PUT() {
function PATCH (line 12) | function PATCH() {
function POST (line 17) | function POST() {
function DELETE (line 22) | function DELETE() {
FILE: packages/kit/test/apps/basics/src/routes/routing/link-outside-app-target/state.js
function increment (line 3) | function increment() {
FILE: packages/kit/test/apps/basics/src/routes/routing/params-in-handle/[x]/+server.js
function GET (line 4) | function GET({ locals }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/preloading/preload-error/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/routing/preloading/preloaded.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/routing/preloading/preloaded/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/[...rest]/+page.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/[...rest]/deep.json/+server.js
function GET (line 2) | function GET({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/[...rest]/deep/+page.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/complex/[...parts].json/+server.js
function GET (line 4) | function GET({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/complex/prefix-[...parts]/+page.js
function load (line 2) | async function load({ fetch, params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/rest/path/[...ignored]/+page.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/route-id/[x]/+page.js
function load (line 2) | function load({ route }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/skipped/[one]/[two]/+page.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/routing/trailing-slash-server/+layout.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/serialization-basic/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/serialization-basic/child/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/serialization-form-non-enhanced/server-deserialize/+server.js
function GET (line 3) | async function GET({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/set-cookie/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/dynamic/[slug]/+page.server.js
function load (line 2) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/error-get/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/error-post/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/parent/+layout.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/parent/+page.server.js
function load (line 1) | async function load({ parent }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/parent/sub/+page.server.js
function load (line 1) | async function load({ parent }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirect-get-with-cookie-from-fetch/+page.js
function load (line 4) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirect-get-with-cookie-from-fetch/endpoint/+server.js
function GET (line 2) | function GET({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirect-get-with-cookie/+page.server.js
function load (line 4) | function load({ cookies }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirect-get/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirect/[a]/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/redirected/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/same-render/+page.server.js
function load (line 2) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/serialization/+page.server.js
class Nope (line 1) | class Nope {
method toString (line 2) | toString() {
function load (line 7) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/shadowed/simple/+page.server.js
function load (line 2) | function load({ locals }) {
FILE: packages/kit/test/apps/basics/src/routes/shallow-routing/push-state/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/src/[...anything]/+server.js
function GET (line 2) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/state/data/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/data/[item]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/state/data/foo/+page.js
function load (line 3) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/state/data/state-update/same-keys/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/data/state-update/same-keys/same-deep/nested/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/data/state-update/same-keys/same/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/navigating/a/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/navigating/b/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/state/navigating/c/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/data/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/data/[item]/+page.js
function load (line 4) | function load({ params }) {
FILE: packages/kit/test/apps/basics/src/routes/store/data/foo/+page.js
function load (line 3) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/store/data/store-update/same-keys/+layout.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/data/store-update/same-keys/same-deep/nested/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/data/store-update/same-keys/same/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/navigating/a/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/navigating/b/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/store/navigating/c/+page.js
function load (line 2) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/discarded-promise/+layout.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/discarded-promise/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/server-error/+page.server.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/streaming/server/+page.js
function load (line 1) | function load({ data }) {
FILE: packages/kit/test/apps/basics/src/routes/streaming/server/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/server/fast-n-slow/+layout.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/server/fast-n-slow/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/streaming/universal/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.server.js
function load (line 3) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/tracing/non-error-object/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/tracing/redirect/+page.server.js
function load (line 3) | async function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/tracing/regular-error/+page.server.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/basics/src/routes/unsafe-replacement/+page.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/basics/src/routes/untrack/server/+layout.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/untrack/server/[x]/+page.server.js
function load (line 1) | function load({ params, parent, url, untrack }) {
FILE: packages/kit/test/apps/basics/src/routes/untrack/universal/+layout.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/untrack/universal/[x]/+page.js
function load (line 1) | function load({ params, parent, url, untrack }) {
FILE: packages/kit/test/apps/basics/src/routes/xss.json/+server.js
function GET (line 3) | function GET() {
FILE: packages/kit/test/apps/basics/src/routes/xss/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/basics/src/routes/xss/query-tracking/+page.server.js
function load (line 1) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/xss/query/+page.js
function load (line 4) | function load({ url }) {
FILE: packages/kit/test/apps/basics/src/routes/xss/query/utils.js
function to_pojo (line 4) | function to_pojo(query) {
FILE: packages/kit/test/apps/basics/src/routes/xss/shadow/+page.server.js
function load (line 2) | function load() {
FILE: packages/kit/test/apps/basics/svelte.config.js
method adapt (line 8) | adapt(builder) {
method emulate (line 17) | emulate() {
FILE: packages/kit/test/apps/basics/test/client.test.js
function makeExpectGoback (line 1455) | function makeExpectGoback(from, to) {
function measureInteractionToPaint (line 1795) | async function measureInteractionToPaint(selector) {
FILE: packages/kit/test/apps/basics/test/cross-platform/test.js
function check_styles (line 13) | function check_styles(get_computed_style) {
FILE: packages/kit/test/apps/basics/test/server.test.js
function find_resolve_root_span (line 914) | function find_resolve_root_span(span) {
function rand (line 925) | function rand() {
FILE: packages/kit/test/apps/dev-only/src/hooks.client.js
function handleError (line 5) | function handleError({ message }) {
FILE: packages/kit/test/apps/dev-only/src/hooks.js
function reroute (line 5) | function reroute({ url }) {
FILE: packages/kit/test/apps/dev-only/src/hooks.server.js
function handleError (line 2) | function handleError({ error }) {
FILE: packages/kit/test/apps/dev-only/src/routes/headers/invalid/+server.js
function GET (line 2) | function GET({ setHeaders }) {
FILE: packages/kit/test/apps/dev-only/src/routes/optimize-deps/+layout.js
function load (line 4) | function load() {}
FILE: packages/kit/test/apps/dev-only/src/routes/optimize-deps/+layout.server.js
function load (line 4) | function load() {}
FILE: packages/kit/test/apps/dev-only/src/routes/optimize-deps/+page.js
function load (line 4) | function load() {}
FILE: packages/kit/test/apps/dev-only/src/routes/optimize-deps/+page.server.js
function load (line 4) | function load() {}
FILE: packages/kit/test/apps/dev-only/src/routes/optimize-deps/+server.js
function GET (line 4) | function GET() {
FILE: packages/kit/test/apps/dev-only/src/routes/request-abort/+server.js
function GET (line 6) | function GET() {
function POST (line 11) | async function POST({ request }) {
FILE: packages/kit/test/apps/embed/src/routes/embed/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/apps/hash-based-routing/src/hooks.js
function reroute (line 1) | function reroute({ url }) {
FILE: packages/kit/test/apps/hash-based-routing/src/routes/+layout.js
function load (line 1) | function load({ params, route, url }) {
FILE: packages/kit/test/apps/no-ssr/src/routes/browser-globals/+page.js
function load (line 5) | function load() {
FILE: packages/kit/test/apps/options-2/src/lib/index.js
class Foo (line 1) | class Foo {
method constructor (line 2) | constructor(message) {
method bar (line 6) | bar() {
FILE: packages/kit/test/apps/options-2/src/routes/deserialize/+page.ts
function load (line 5) | function load() {
FILE: packages/kit/test/apps/options-3/src/lib/index.js
class Foo (line 1) | class Foo {
method constructor (line 2) | constructor(message) {
method bar (line 6) | bar() {
FILE: packages/kit/test/apps/options/source/hooks.server.js
constant FOO (line 7) | const FOO = env.FOO;
function handle (line 10) | function handle({ event, resolve }) {
function init (line 18) | function init() {
FILE: packages/kit/test/apps/options/source/pages/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/options/source/pages/base/+page.js
function load (line 4) | async function load() {
FILE: packages/kit/test/apps/options/source/pages/csp-with-stream/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/options/source/pages/endpoint-with-slash/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/options/source/pages/endpoint/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/options/source/pages/env/+page.server.js
function load (line 4) | function load() {
FILE: packages/kit/test/apps/options/source/pages/fetch/link-outside-base/+page.server.js
function load (line 1) | async function load({ fetch }) {
FILE: packages/kit/test/apps/options/source/pages/fetch/link-root/+page.server.js
function load (line 1) | async function load({ fetch }) {
FILE: packages/kit/test/apps/options/source/pages/fetch/link-root/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/apps/options/source/pages/inline-style/dynamic-import/+page.js
function load (line 1) | async function load() {
FILE: packages/kit/test/apps/options/source/pages/match/+server.js
function GET (line 10) | async function GET() {
FILE: packages/kit/test/apps/options/source/pages/mode/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/options/source/pages/page-endpoint/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/options/source/pages/preloading/preloaded/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/apps/options/source/pages/routing/link-outside-app-target/state.js
function increment (line 3) | function increment() {
FILE: packages/kit/test/apps/writes/src/global.d.ts
type Window (line 2) | interface Window {
FILE: packages/kit/test/github-flaky-warning-reporter.js
class GithubFlakyWarningReporter (line 7) | class GithubFlakyWarningReporter {
method onBegin (line 13) | onBegin() {
method onTestEnd (line 19) | onTestEnd(test) {
method onEnd (line 28) | onEnd() {
method printsToStdio (line 39) | printsToStdio() {
FILE: packages/kit/test/prerendering/basics/globalSetup.js
function setup (line 3) | function setup() {
FILE: packages/kit/test/prerendering/basics/src/routes/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/encoding/[path].json/+server.js
function GET (line 4) | function GET({ params }) {
FILE: packages/kit/test/prerendering/basics/src/routes/encoding/path with spaces/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/encoding/redirect/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/env/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-404/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-endpoint/also-not-buffered/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-endpoint/buffered.json/+server.js
function GET (line 3) | async function GET() {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-endpoint/buffered/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-endpoint/not-buffered.json/+server.js
function GET (line 5) | async function GET() {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-endpoint/not-buffered/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/fetch-image/[...slug]/+server.js
function GET (line 5) | async function GET({ params }) {
FILE: packages/kit/test/prerendering/basics/src/routes/load-file-with-spaces/+page.js
function load (line 2) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/max-age/+page.js
function load (line 2) | function load({ setHeaders }) {
FILE: packages/kit/test/prerendering/basics/src/routes/origin/+page.server.js
function load (line 3) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/basics/src/routes/origin/message.json/+server.js
function GET (line 7) | function GET() {
FILE: packages/kit/test/prerendering/basics/src/routes/page.html/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/redirect-encoded/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/redirect-malicious/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/redirect-relative/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/redirect-server/+page.server.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/redirect/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/shadowed-get/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/shadowed-get/ssr-off/+page.server.js
function load (line 3) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/shadowed-post/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.js
function load (line 8) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/trailing-slash/page/+page.server.js
function load (line 1) | function load() {
FILE: packages/kit/test/prerendering/basics/src/routes/trailing-slash/standalone-endpoint.json/+server.js
function GET (line 5) | async function GET() {
FILE: packages/kit/test/prerendering/options/src/routes/rss.xml/+server.js
function GET (line 1) | function GET() {
FILE: packages/kit/test/prerendering/paths-base/src/routes/assets/emitted/+page.server.js
function load (line 4) | async function load({ fetch }) {
FILE: packages/kit/test/prerendering/paths-base/src/routes/redirect/+page.js
function load (line 4) | function load() {
FILE: packages/kit/test/prerendering/test-utils.js
function replace_hydration_attrs (line 7) | function replace_hydration_attrs(html) {
FILE: packages/kit/test/setup.js
function setup (line 11) | function setup() {
FILE: packages/kit/test/types.d.ts
type SpanData (line 50) | interface SpanData {
type SpanTree (line 68) | type SpanTree = Omit<SpanData, 'parent_span_id'> & {
FILE: packages/kit/test/types/actions.test.ts
type Actions (line 4) | type Actions = {
type Actions2 (line 17) | type Actions2 = {
type Actions3 (line 29) | type Actions3 = {
FILE: packages/kit/test/types/load.test.ts
type LoadReturn1 (line 4) | type LoadReturn1 =
FILE: packages/kit/test/types/remote.test.ts
function query_tests (line 15) | function query_tests() {
function prerender_tests (line 86) | function prerender_tests() {
function command_tests (line 158) | function command_tests() {
function form_tests (line 212) | function form_tests() {
function boolean_tests (line 427) | function boolean_tests() {
FILE: packages/kit/test/utils.js
function clicknav (line 38) | async function clicknav(selector, { timeout, waitForURL } = {}) {
function scroll_to (line 59) | async function scroll_to(x, y) {
function in_view (line 86) | async function in_view(selector) {
function get_computed_style (line 100) | function get_computed_style(selector, prop) {
function modified_fn (line 121) | async function modified_fn(...args) {
function read_errors (line 146) | function read_errors(path) {
function read_traces (line 159) | function read_traces(test_id) {
function start_server (line 189) | async function start_server(handler) {
method context (line 244) | async context({ context, start_server }, use) {
function build_span_tree (line 326) | function build_span_tree(current_span, child_spans) {
FILE: packages/kit/types/index.d.ts
type Span (line 9) | type Span = import('@opentelemetry/api').Span;
type Adapter (line 14) | interface Adapter {
type LoadProperties (line 47) | type LoadProperties<input extends Record<string, any> | void> = input ex...
type AwaitedActions (line 53) | type AwaitedActions<T extends Record<string, (...args: any) => any>> = O...
type OptionalUnion (line 61) | type OptionalUnion<
type ActionFailure (line 68) | interface ActionFailure<T = undefined> {
type UnpackValidationError (line 74) | type UnpackValidationError<T> =
type Builder (line 85) | interface Builder {
type Config (line 226) | interface Config extends SvelteConfig {
type Cookies (line 237) | interface Cookies {
type Emulator (line 297) | interface Emulator {
type KitConfig (line 305) | interface KitConfig {
type Handle (line 899) | type Handle = (input: {
type HandleServerError (line 910) | type HandleServerError = (input: {
type HandleValidationError (line 922) | type HandleValidationError<Issue extends StandardSchemaV1.Issue = Standa...
type HandleClientError (line 931) | type HandleClientError = (input: {
type HandleFetch (line 941) | type HandleFetch = (input: {
type ServerInit (line 951) | type ServerInit = () => MaybePromise<void>;
type ClientInit (line 957) | type ClientInit = () => MaybePromise<void>;
type Reroute (line 963) | type Reroute = (event: { url: URL; fetch: typeof fetch }) => MaybePromis...
type Transport (line 989) | type Transport = Record<string, Transporter>;
type Transporter (line 994) | interface Transporter<
type Load (line 1006) | type Load<
type LoadEvent (line 1018) | interface LoadEvent<
type NavigationEvent (line 1139) | interface NavigationEvent<
type NavigationTarget (line 1165) | interface NavigationTarget<
type NavigationType (line 1210) | type NavigationType = 'enter' | 'form' | 'leave' | 'link' | 'goto' | 'po...
type NavigationBase (line 1212) | interface NavigationBase {
type NavigationEnter (line 1232) | interface NavigationEnter extends NavigationBase {
type NavigationExternal (line 1250) | type NavigationExternal = NavigationGoto | NavigationLeave;
type NavigationGoto (line 1252) | interface NavigationGoto extends NavigationBase {
type NavigationLeave (line 1267) | interface NavigationLeave extends NavigationBase {
type NavigationFormSubmit (line 1282) | interface NavigationFormSubmit extends NavigationBase {
type NavigationPopState (line 1302) | interface NavigationPopState extends NavigationBase {
type NavigationLink (line 1320) | interface NavigationLink extends NavigationBase {
type Navigation (line 1340) | type Navigation =
type BeforeNavigate (line 1349) | type BeforeNavigate = Navigation & {
type OnNavigate (line 1359) | type OnNavigate = Navigation & {
type AfterNavigate (line 1370) | type AfterNavigate = (Navigation | NavigationEnter) & {
type Page (line 1381) | interface Page<
type ParamMatcher (line 1427) | type ParamMatcher = (param: string) => boolean;
type RequestEvent (line 1429) | interface RequestEvent<
type RequestHandler (line 1540) | type RequestHandler<
type ResolveOptions (line 1545) | interface ResolveOptions {
type RouteDefinition (line 1568) | interface RouteDefinition<Config = any> {
class Server (line 1583) | class Server {
type ServerInitOptions (line 1589) | interface ServerInitOptions {
type SSRManifest (line 1596) | interface SSRManifest {
type ServerLoad (line 1621) | type ServerLoad<
type ServerLoadEvent (line 1628) | interface ServerLoadEvent<
type Action (line 1710) | type Action<
type Actions (line 1720) | type Actions<
type ActionResult (line 1736) | type ActionResult<
type HttpError (line 1748) | interface HttpError {
type Redirect (line 1758) | interface Redirect {
type SubmitFunction (line 1765) | type SubmitFunction<
type Snapshot (line 1794) | interface Snapshot<T = any> {
type WillRecurseIndefinitely (line 1800) | type WillRecurseIndefinitely<T> = unknown extends T ? true : string exte...
type InputTypeMap (line 1803) | type InputTypeMap = {
type RemoteFormFieldType (line 1832) | type RemoteFormFieldType<T> = {
type InputElementProps (line 1837) | type InputElementProps<T extends keyof InputTypeMap> = T extends 'checkb...
type RemoteFormFieldMethods (line 1877) | type RemoteFormFieldMethods<T> = {
type RemoteFormFieldValue (line 1886) | type RemoteFormFieldValue = string | string[] | number | boolean | File ...
type AsArgs (line 1888) | type AsArgs<Type extends keyof InputTypeMap, Value> = Type extends 'chec...
type RemoteFormField (line 1899) | type RemoteFormField<Value extends RemoteFormFieldValue> = RemoteFormFie...
type RemoteFormFieldContainer (line 1913) | type RemoteFormFieldContainer<Value> = RemoteFormFieldMethods<Value> & {
type UnknownField (line 1918) | type UnknownField<Value> = RemoteFormFieldMethods<Value> & {
type RemoteFormFieldsRoot (line 1936) | type RemoteFormFieldsRoot<Input extends RemoteFormInput | void> =
type RemoteFormFields (line 1951) | type RemoteFormFields<T> =
type RecursiveFormFields (line 1967) | type RecursiveFormFields = RemoteFormFieldContainer<any> & {
type MaybeArray (line 1971) | type MaybeArray<T> = T | T[];
type RemoteFormInput (line 1973) | interface RemoteFormInput {
type RemoteFormIssue (line 1977) | interface RemoteFormIssue {
type ExtractId (line 1984) | type ExtractId<Input> = Input extends { id: infer Id }
type InvalidField (line 1997) | type InvalidField<T> =
type ValidationError (line 2015) | interface ValidationError {
type RemoteForm (line 2023) | type RemoteForm<Input extends RemoteFormInput | void, Output> = {
type RemoteCommand (line 2078) | type RemoteCommand<Input, Output> = {
type RemoteResource (line 2086) | type RemoteResource<T> = Promise<T> & {
type RemoteQuery (line 2104) | type RemoteQuery<T> = RemoteResource<T> & {
type RemoteQueryOverride (line 2147) | interface RemoteQueryOverride {
type RemotePrerenderFunction (line 2155) | type RemotePrerenderFunction<Input, Output> = (
type RemoteQueryFunction (line 2162) | type RemoteQueryFunction<Input, Output> = (
type AdapterEntry (line 2165) | interface AdapterEntry {
type ActionSource (line 2216) | type ActionSource = 'strict-dynamic' | 'report-sample';
type BaseSource (line 2217) | type BaseSource =
type CryptoSource (line 2224) | type CryptoSource = `${'nonce' | 'sha256' | 'sha384' | 'sha512'}-${strin...
type FrameSource (line 2225) | type FrameSource = HostSource | SchemeSource | 'self' | 'none';
type HostNameScheme (line 2226) | type HostNameScheme = `${string}.${string}` | 'localhost';
type HostSource (line 2227) | type HostSource = `${HostProtocolSchemes}${HostNameScheme}${PortScheme}`;
type HostProtocolSchemes (line 2228) | type HostProtocolSchemes = `${string}://` | '';
type HttpDelineator (line 2229) | type HttpDelineator = '/' | '?' | '#' | '\\';
type PortScheme (line 2230) | type PortScheme = `:${number}` | '' | ':*';
type SchemeSource (line 2231) | type SchemeSource = 'http:' | 'https:' | 'data:' | 'mediastream:' | 'blo...
type Source (line 2232) | type Source = HostSource | SchemeSource | CryptoSource | BaseSource;
type Sources (line 2233) | type Sources = Source[];
type CspDirectives (line 2236) | interface CspDirectives {
type HttpMethod (line 2303) | type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' |...
type Logger (line 2305) | interface Logger {
type MaybePromise (line 2314) | type MaybePromise<T> = T | Promise<T>;
type Prerendered (line 2316) | interface Prerendered {
type PrerenderHttpErrorHandler (line 2351) | interface PrerenderHttpErrorHandler {
type PrerenderMissingIdHandler (line 2361) | interface PrerenderMissingIdHandler {
type PrerenderEntryGeneratorMismatchHandler (line 2365) | interface PrerenderEntryGeneratorMismatchHandler {
type PrerenderUnseenRoutesHandler (line 2369) | interface PrerenderUnseenRoutesHandler {
type PrerenderHttpErrorHandlerValue (line 2373) | type PrerenderHttpErrorHandlerValue = 'fail' | 'warn' | 'ignore' | Prere...
type PrerenderMissingIdHandlerValue (line 2374) | type PrerenderMissingIdHandlerValue = 'fail' | 'warn' | 'ignore' | Prere...
type PrerenderUnseenRoutesHandlerValue (line 2375) | type PrerenderUnseenRoutesHandlerValue =
type PrerenderEntryGeneratorMismatchHandlerValue (line 2380) | type PrerenderEntryGeneratorMismatchHandlerValue =
type PrerenderOption (line 2386) | type PrerenderOption = boolean | 'auto';
type RequestOptions (line 2388) | interface RequestOptions {
type RouteSegment (line 2393) | interface RouteSegment {
type TrailingSlash (line 2400) | type TrailingSlash = 'never' | 'always' | 'ignore';
type DeepPartial (line 2402) | type DeepPartial<T> = T extends Record<PropertyKey, unknown> | unknown[]
type IsAny (line 2410) | type IsAny<T> = 0 extends 1 & T ? true : false;
type Asset (line 2411) | interface Asset {
type BuildData (line 2417) | interface BuildData {
type ManifestData (line 2460) | interface ManifestData {
type PageNode (line 2473) | interface PageNode {
type RecursiveRequired (line 2489) | type RecursiveRequired<T> = {
type RouteParam (line 2498) | interface RouteParam {
type RouteData (line 2511) | interface RouteData {
type SSRComponent (line 2536) | interface SSRComponent {
type SSRComponentLoader (line 2556) | type SSRComponentLoader = () => Promise<SSRComponent>;
type UniversalNode (line 2558) | interface UniversalNode {
type ServerNode (line 2569) | interface ServerNode {
type SSRNode (line 2580) | interface SSRNode {
type SSRNodeLoader (line 2605) | type SSRNodeLoader = () => Promise<SSRNode>;
type PageNodeIndexes (line 2607) | interface PageNodeIndexes {
type PrerenderEntryGenerator (line 2613) | type PrerenderEntryGenerator = () => MaybePromise<Array<Record<string, s...
type SSREndpoint (line 2615) | type SSREndpoint = Partial<Record<HttpMethod, RequestHandler>> & {
type SSRRoute (line 2623) | interface SSRRoute {
type SSRClientRoute (line 2632) | interface SSRClientRoute {
type ValidatedConfig (line 2641) | type ValidatedConfig = Config & {
type ValidatedKitConfig (line 2646) | type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'> & {
type LessThan (line 2780) | type LessThan<TNumber extends number, TArray extends any[] = []> = TNumb...
type NumericRange (line 2781) | type NumericRange<TStart extends number, TEnd extends number> = Exclude<...
type ValidPageOption (line 2782) | type ValidPageOption = (typeof valid_page_options_array)[number];
type PageOptions (line 2783) | type PageOptions = Partial<Record<ValidPageOption, any>>;
class HttpError_1 (line 2786) | class HttpError_1 {
class Redirect_1 (line 2795) | class Redirect_1 {
type MaybePromise (line 3118) | type MaybePromise<T> = T | Promise<T>;
type StripSearchOrHash (line 3149) | type StripSearchOrHash<T extends string> = T extends `${infer Pathname}?...
type ResolveArgs (line 3155) | type ResolveArgs<T extends RouteIdWithSearchOrHash | PathnameWithSearchO...
type RemotePrerenderInputsGenerator (line 3376) | type RemotePrerenderInputsGenerator<Input = any> = () => MaybePromise<In...
type MaybePromise (line 3377) | type MaybePromise<T> = T | Promise<T>;
type Error (line 3508) | interface Error {
type Locals (line 3515) | interface Locals {}
type PageData (line 3522) | interface PageData {}
type PageState (line 3527) | interface PageState {}
type Platform (line 3532) | interface Platform {}
type AppTypes (line 3571) | interface AppTypes {
type RouteId (line 3586) | type RouteId = ReturnType<AppTypes['RouteId']>;
type RouteIdWithSearchOrHash (line 3591) | type RouteIdWithSearchOrHash = RouteId | `${RouteId}?${string}` | `${Rou...
type RouteParams (line 3596) | type RouteParams<T extends RouteId> = T extends keyof ReturnType<AppType...
type LayoutParams (line 3603) | type LayoutParams<T extends RouteId> = T extends keyof ReturnType<AppTyp...
type Pathname (line 3610) | type Pathname = ReturnType<AppTypes['Pathname']>;
type PathnameWithSearchOrHash (line 3615) | type PathnameWithSearchOrHash =
type ResolvedPathname (line 3623) | type ResolvedPathname = ReturnType<AppTypes['ResolvedPathname']>;
type Asset (line 3628) | type Asset = ReturnType<AppTypes['Asset']>;
FILE: packages/package/src/cli.js
function handle_error (line 8) | function handle_error(error) {
FILE: packages/package/src/config.js
function load_config (line 11) | async function load_config({ cwd = process.cwd() } = {}) {
function load_pkg_json (line 40) | function load_pkg_json(cwd = process.cwd()) {
FILE: packages/package/src/filesystem.js
function mkdirp (line 5) | function mkdirp(dir) {
function rimraf (line 15) | function rimraf(path) {
function posixify (line 20) | function posixify(str) {
function walk (line 29) | function walk(cwd, dirs = false) {
function copy (line 60) | function copy(source, target, opts = {}) {
FILE: packages/package/src/index.js
function build (line 21) | async function build(options) {
function do_build (line 31) | async function do_build(options, analyse_code) {
function watch (line 80) | async function watch(options) {
function normalize_options (line 207) | function normalize_options(options) {
function process_file (line 245) | async function process_file(
FILE: packages/package/src/types.d.ts
type Options (line 3) | interface Options {
type File (line 23) | interface File {
type RecursiveRequired (line 30) | type RecursiveRequired<T> = {
type ValidatedConfig (line 38) | interface ValidatedConfig {
type Validator (line 44) | type Validator<T = any> = (input: T, keypath: string) => T;
FILE: packages/package/src/typescript.js
function emit_dts (line 23) | async function emit_dts(input, output, final_output, cwd, alias, files, ...
function transpile_ts (line 99) | async function transpile_ts(tsconfig, filename, source, cache) {
function try_load_ts (line 114) | async function try_load_ts() {
function load_tsconfig (line 130) | async function load_tsconfig(tsconfig, filename, cache, ts) {
FILE: packages/package/src/utils.js
function resolve_aliases (line 17) | function resolve_aliases(input, file, content, aliases) {
function resolve_ts_endings (line 43) | function resolve_ts_endings(content) {
function adjust_imports (line 63) | function adjust_imports(content, adjust) {
function strip_lang_tags (line 115) | function strip_lang_tags(content) {
function write (line 134) | function write(file, contents) {
function scan (line 144) | function scan(input, extensions) {
function analyze (line 153) | function analyze(file, extensions) {
FILE: packages/package/src/validate.js
function create_validator (line 7) | function create_validator(options) {
function _create_validator (line 48) | function _create_validator(options) {
function traverse_exports (line 167) | function traverse_exports(exports_map) {
function export_to_regex (line 199) | function export_to_regex(_export) {
FILE: packages/package/test/fixtures/emitTypes-false/expected/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/emitTypes-false/src/lib/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/javascript/expected/Test.svelte.d.ts
type Test (line 2) | type Test = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
type $$__sveltets_2_PropsWithChildren (line 38) | type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots ext...
type $$__sveltets_2_IsomorphicComponent (line 43) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/javascript/expected/Test2.svelte.d.ts
type Test2 (line 2) | type Test2 = SvelteComponent<{
type $$__sveltets_2_IsomorphicComponent (line 14) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/javascript/expected/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/javascript/expected/internal/Test.svelte.d.ts
type Test (line 2) | type Test = SvelteComponent<{
type $$__sveltets_2_IsomorphicComponent (line 14) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/javascript/expected/internal/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/javascript/src/lib/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/javascript/src/lib/internal/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/svelte-3-types/expected/Test.svelte.d.ts
type TestProps (line 17) | type TestProps = typeof __propDef.props;
type TestEvents (line 18) | type TestEvents = typeof __propDef.events;
type TestSlots (line 19) | type TestSlots = typeof __propDef.slots;
class Test (line 20) | class Test extends SvelteComponentTyped<TestProps, TestEvents, TestSlots> {
FILE: packages/package/test/fixtures/svelte-kit/expected/Test.svelte.d.ts
type Test (line 2) | type Test = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
type $$__sveltets_2_PropsWithChildren (line 38) | type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots ext...
type $$__sveltets_2_IsomorphicComponent (line 43) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/svelte-kit/expected/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/svelte-kit/src/kitlib/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/typescript-declaration-map/expected/Test.svelte.d.ts
type $$ComponentProps (line 1) | type $$ComponentProps = {
type Test (line 5) | type Test = ReturnType<typeof Test>;
FILE: packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte.d.ts
type Plain (line 2) | type Plain = SvelteComponent<{
type $$__sveltets_2_IsomorphicComponent (line 14) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/typescript-esnext/expected/Test.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 1) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 2) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/typescript-esnext/expected/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/typescript-esnext/src/lib/foo.d.ts
type Foo (line 1) | type Foo = boolean;
FILE: packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 1) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/typescript-svelte-config/expected/Test.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 1) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/fixtures/typescript-ts-extension-rewrites/expected/Demo.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 1) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/package/test/index.spec.js
function test_make_package (line 22) | async function test_make_package(path, options) {
function format (line 71) | async function format(file, content) {
function compare (line 194) | function compare(file) {
function read (line 199) | function read(file) {
function write (line 207) | function write(file, data) {
function remove (line 212) | function remove(file) {
function has_warnings (line 264) | function has_warnings(actual, expected) {
FILE: packages/package/test/watch/expected/Test.svelte.d.ts
type $$__sveltets_2_IsomorphicComponent (line 1) | interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string...
FILE: packages/test-redirect-importer/index.js
function authenticate (line 10) | function authenticate(redirectUrl) {
FILE: scripts/check-dependencies.js
function get_or_default (line 12) | function get_or_default(map, key, constructor) {
function add_deps (line 20) | function add_deps(parent, dependencies, is_dev) {
FILE: test-utils/index.js
function number_from_env (line 9) | function number_from_env(name, default_value) {
Condensed preview — 2540 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,734K chars).
[
{
"path": ".changeset/busy-goats-brush.md",
"chars": 117,
"preview": "---\n'@sveltejs/kit': patch\n---\n\nfix: don't request new data when `.refresh` is called on a query with no cache entry\n"
},
{
"path": ".changeset/config.json",
"chars": 321,
"preview": "{\n\t\"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n\t\"changelog\": [\"@svitejs/changesets-changelog-gi"
},
{
"path": ".changeset/eight-sheep-unite.md",
"chars": 114,
"preview": "---\n'@sveltejs/kit': minor\n---\n\nbreaking: add `run()` method to queries, disallow awaiting queries outside render\n"
},
{
"path": ".changeset/great-actors-stop.md",
"chars": 80,
"preview": "---\n'@sveltejs/kit': patch\n---\n\nfix: manage queries in their own `$effect.root`\n"
},
{
"path": ".changeset/many-flowers-press.md",
"chars": 131,
"preview": "---\n'@sveltejs/kit': patch\n---\n\nfix: avoid `inlineDynamicImports` deprecation warning when building the service worker w"
},
{
"path": ".changeset/orange-queens-rush.md",
"chars": 85,
"preview": "---\n'@sveltejs/kit': minor\n---\n\nfeat: use `hydratable` for remote function transport\n"
},
{
"path": ".changeset/silver-baths-camp.md",
"chars": 89,
"preview": "---\n'@sveltejs/kit': patch\n---\n\nfix: deduplicate same-cache-key `batch` calls during SSR\n"
},
{
"path": ".editorconfig",
"chars": 144,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = tab\nindent_size = 2\ncharset = utf-8\ntrim_tr"
},
{
"path": ".eslint/no-runtime-to-exports-imports.js",
"chars": 1543,
"preview": "// @ts-expect-error no types here\nimport path from 'node:path';\n\n/**\n * @type {import('eslint').Rule.RuleModule}\n */\nexp"
},
{
"path": ".gitattributes",
"chars": 107,
"preview": "* text=auto eol=lf\n/packages/**/test/** -linguist-detectable\n/packages/**/fixtures/** -linguist-detectable\n"
},
{
"path": ".githooks/pre-push",
"chars": 71,
"preview": "#!/bin/sh\n\nset -e\n\npnpm install --frozen-lockfile\npnpm lint\npnpm check\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 24,
"preview": "open_collective: svelte\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 2350,
"preview": "name: \"\\U0001F41E Bug report\"\ndescription: Report an issue with SvelteKit\nbody:\n - type: markdown\n attributes:\n "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 177,
"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": 1676,
"preview": "name: \"Feature Request\"\ndescription: Suggest an idea for this project\nbody:\n - type: markdown\n attributes:\n val"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1249,
"preview": "closes #<!-- Add the related issue number here. Repeat this line for each additional issue it closes -->\n\n<!-- Explain t"
},
{
"path": ".github/actions/platform-test/action.yml",
"chars": 867,
"preview": "name: 'Platform Test'\ndescription: 'Run Playwright tests against a deployed platform preview'\n\ninputs:\n test-app-dir:\n "
},
{
"path": ".github/actions/vercel-deploy/action.yml",
"chars": 1420,
"preview": "name: 'Vercel Deploy'\ndescription: 'Set up the repo and deploy a test app to Vercel'\n\ninputs:\n # Important: When settin"
},
{
"path": ".github/workflows/audit.yml",
"chars": 660,
"preview": "name: audit\n\non:\n schedule:\n - cron: \"0 5 * * *\" # daily 5AM\n\nenv:\n # not needed for audit\n PLAYWRIGHT_SKIP_BROWSE"
},
{
"path": ".github/workflows/autofix-lint.yml",
"chars": 2490,
"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": 10203,
"preview": "name: CI\n\non:\n push:\n branches:\n - main\n paths-ignore: &paths_ignore\n - '.changeset/**'\n - '.githo"
},
{
"path": ".github/workflows/platform-tests-all.yml",
"chars": 2112,
"preview": "name: Platform Tests (All)\n\non:\n workflow_dispatch:\n inputs:\n sha:\n description: 'Commit SHA to test and"
},
{
"path": ".github/workflows/platform-tests-vercel.yml",
"chars": 1182,
"preview": "name: Platform Tests (Vercel)\n\non:\n workflow_dispatch:\n inputs:\n sha:\n description: 'Commit SHA to test'"
},
{
"path": ".github/workflows/release.yml",
"chars": 1811,
"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": 302,
"preview": ".DS_Store\nnode_modules\ndist\ntest-results/\npackage-lock.json\nyarn.lock\nvite.config.js.timestamp-*\n/packages/package/test/"
},
{
"path": ".npmrc",
"chars": 53,
"preview": "link-workspace-packages = true\nshell-emulator = true\n"
},
{
"path": ".prettierrc",
"chars": 946,
"preview": "{\n\t\"useTabs\": true,\n\t\"singleQuote\": true,\n\t\"trailingComma\": \"none\",\n\t\"printWidth\": 100,\n\t\"plugins\": [\"prettier-plugin-sv"
},
{
"path": ".well-known/funding-manifest-urls",
"chars": 33,
"preview": "https://svelte.dev/funding.json\n\n"
},
{
"path": "AGENTS.md",
"chars": 4292,
"preview": "# SvelteKit Coding Agent Guide\n\nThis guide is for AI coding agents working in the SvelteKit monorepo.\n\n**Important:** Re"
},
{
"path": "CONTRIBUTING.md",
"chars": 7664,
"preview": "# SvelteKit Contributing Guide\n\n## Preparing\n\nThis is a monorepo, meaning the repo holds multiple packages. It requires "
},
{
"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",
"chars": 1110,
"preview": "Copyright (c) 2020 [these people](https://github.com/sveltejs/kit/graphs/contributors)\n\nPermission is hereby granted, fr"
},
{
"path": "README.md",
"chars": 3276,
"preview": "[](https://svelte.dev/chat)\n\n# SvelteK"
},
{
"path": "documentation/docs/10-getting-started/10-introduction.md",
"chars": 2706,
"preview": "---\ntitle: Introduction\n---\n\n## Before we begin\n\n> [!NOTE] If you're new to Svelte or SvelteKit we recommend checking ou"
},
{
"path": "documentation/docs/10-getting-started/20-creating-a-project.md",
"chars": 1377,
"preview": "---\ntitle: Creating a project\n---\n\nThe easiest way to start building a SvelteKit app is to run `npx sv create`:\n\n```sh\nn"
},
{
"path": "documentation/docs/10-getting-started/25-project-types.md",
"chars": 6901,
"preview": "---\ntitle: Project types\n---\n\nSvelteKit offers configurable rendering, which allows you to build and deploy your project"
},
{
"path": "documentation/docs/10-getting-started/30-project-structure.md",
"chars": 5607,
"preview": "---\ntitle: Project structure\n---\n\nA typical SvelteKit project looks like this:\n\n```tree\nmy-project/\n├ src/\n│ ├ lib/\n│ │ "
},
{
"path": "documentation/docs/10-getting-started/40-web-standards.md",
"chars": 5444,
"preview": "---\ntitle: Web standards\n---\n\nThroughout this documentation, you'll see references to the standard [Web APIs](https://de"
},
{
"path": "documentation/docs/10-getting-started/index.md",
"chars": 31,
"preview": "---\ntitle: Getting started\n---\n"
},
{
"path": "documentation/docs/20-core-concepts/10-routing.md",
"chars": 17698,
"preview": "---\ntitle: Routing\n---\n\nAt the heart of SvelteKit is a _filesystem-based router_. The routes of your app — i.e. the URL "
},
{
"path": "documentation/docs/20-core-concepts/20-load.md",
"chars": 31374,
"preview": "---\ntitle: Loading data\n---\n\nBefore a [`+page.svelte`](routing#page-page.svelte) component (and its containing [`+layout"
},
{
"path": "documentation/docs/20-core-concepts/30-form-actions.md",
"chars": 17219,
"preview": "---\ntitle: Form actions\n---\n\nA `+page.server.js` file can export _actions_, which allow you to `POST` data to the server"
},
{
"path": "documentation/docs/20-core-concepts/40-page-options.md",
"chars": 13181,
"preview": "---\ntitle: Page options\n---\n\nBy default, SvelteKit will render (or [prerender](glossary#Prerendering)) any component fir"
},
{
"path": "documentation/docs/20-core-concepts/50-state-management.md",
"chars": 7976,
"preview": "---\ntitle: State management\n---\n\nIf you're used to building client-only apps, state management in an app that spans serv"
},
{
"path": "documentation/docs/20-core-concepts/60-remote-functions.md",
"chars": 37452,
"preview": "---\ntitle: Remote functions\n---\n\n<blockquote class=\"since note\">\n\t<p>Available since 2.27</p>\n</blockquote>\n\nRemote func"
},
{
"path": "documentation/docs/20-core-concepts/index.md",
"chars": 29,
"preview": "---\ntitle: Core concepts\n---\n"
},
{
"path": "documentation/docs/25-build-and-deploy/10-building-your-app.md",
"chars": 1341,
"preview": "---\ntitle: Building your app\n---\n\nBuilding a SvelteKit app happens in two stages, which both happen when you run `vite b"
},
{
"path": "documentation/docs/25-build-and-deploy/20-adapters.md",
"chars": 1648,
"preview": "---\ntitle: Adapters\n---\n\nBefore you can deploy your SvelteKit app, you need to _adapt_ it for your deployment target. Ad"
},
{
"path": "documentation/docs/25-build-and-deploy/30-adapter-auto.md",
"chars": 1703,
"preview": "---\ntitle: Zero-config deployments\n---\n\nWhen you create a new SvelteKit project with `npx sv create`, it installs [`adap"
},
{
"path": "documentation/docs/25-build-and-deploy/40-adapter-node.md",
"chars": 13531,
"preview": "---\ntitle: Node servers\n---\n\nTo generate a standalone Node server, use [`adapter-node`](https://github.com/sveltejs/kit/"
},
{
"path": "documentation/docs/25-build-and-deploy/50-adapter-static.md",
"chars": 6465,
"preview": "---\ntitle: Static site generation\n---\n\nTo use SvelteKit as a static site generator (SSG), use [`adapter-static`](https:/"
},
{
"path": "documentation/docs/25-build-and-deploy/55-single-page-apps.md",
"chars": 4316,
"preview": "---\ntitle: Single-page apps\n---\n\nYou can turn a SvelteKit app into a fully client-rendered single-page app (SPA) by spec"
},
{
"path": "documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md",
"chars": 12562,
"preview": "---\ntitle: Cloudflare\n---\n\nTo deploy to [Cloudflare Workers](https://workers.cloudflare.com/) or [Cloudflare Pages](http"
},
{
"path": "documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md",
"chars": 6265,
"preview": "---\ntitle: Cloudflare Workers\n---\n\n> [!NOTE] `adapter-cloudflare-workers` has been deprecated in favour of [`adapter-clo"
},
{
"path": "documentation/docs/25-build-and-deploy/80-adapter-netlify.md",
"chars": 6304,
"preview": "---\ntitle: Netlify\n---\n\nTo deploy to Netlify, use [`adapter-netlify`](https://github.com/sveltejs/kit/tree/main/packages"
},
{
"path": "documentation/docs/25-build-and-deploy/90-adapter-vercel.md",
"chars": 11154,
"preview": "---\ntitle: Vercel\n---\n\nTo deploy to Vercel, use [`adapter-vercel`](https://github.com/sveltejs/kit/tree/main/packages/ad"
},
{
"path": "documentation/docs/25-build-and-deploy/99-writing-adapters.md",
"chars": 2898,
"preview": "---\ntitle: Writing adapters\n---\n\nIf an adapter for your preferred environment doesn't yet exist, you can build your own."
},
{
"path": "documentation/docs/25-build-and-deploy/index.md",
"chars": 32,
"preview": "---\ntitle: Build and deploy\n---\n"
},
{
"path": "documentation/docs/30-advanced/10-advanced-routing.md",
"chars": 11033,
"preview": "---\ntitle: Advanced routing\n---\n\n## Rest parameters\n\nIf the number of route segments is unknown, you can use rest syntax"
},
{
"path": "documentation/docs/30-advanced/20-hooks.md",
"chars": 16258,
"preview": "---\ntitle: Hooks\n---\n\n'Hooks' are app-wide functions you declare that SvelteKit will call in response to specific events"
},
{
"path": "documentation/docs/30-advanced/25-errors.md",
"chars": 6747,
"preview": "---\ntitle: Errors\n---\n\nErrors are an inevitable fact of software development. SvelteKit handles errors differently depen"
},
{
"path": "documentation/docs/30-advanced/30-link-options.md",
"chars": 6762,
"preview": "---\ntitle: Link options\n---\n\nIn SvelteKit, `<a>` elements (rather than framework-specific `<Link>` components) are used "
},
{
"path": "documentation/docs/30-advanced/40-service-workers.md",
"chars": 5646,
"preview": "---\ntitle: Service workers\n---\n\nService workers act as proxy servers that handle network requests inside your app. This "
},
{
"path": "documentation/docs/30-advanced/50-server-only-modules.md",
"chars": 2591,
"preview": "---\ntitle: Server-only modules\n---\n\nLike a good friend, SvelteKit keeps your secrets. When writing your backend and fron"
},
{
"path": "documentation/docs/30-advanced/65-snapshots.md",
"chars": 1744,
"preview": "---\ntitle: Snapshots\n---\n\nEphemeral DOM state — like scroll positions on sidebars, the content of `<input>` elements and"
},
{
"path": "documentation/docs/30-advanced/67-shallow-routing.md",
"chars": 4722,
"preview": "---\ntitle: Shallow routing\n---\n\nAs you navigate around a SvelteKit app, you create _history entries_. Clicking the back "
},
{
"path": "documentation/docs/30-advanced/68-observability.md",
"chars": 5028,
"preview": "---\ntitle: Observability\n---\n\n<blockquote class=\"since note\">\n\t<p>Available since 2.31</p>\n</blockquote>\n\nSometimes, you"
},
{
"path": "documentation/docs/30-advanced/70-packaging.md",
"chars": 15160,
"preview": "---\ntitle: Packaging\n---\n\nYou can use SvelteKit to build apps as well as component libraries, using the `@sveltejs/packa"
},
{
"path": "documentation/docs/30-advanced/index.md",
"chars": 24,
"preview": "---\ntitle: Advanced\n---\n"
},
{
"path": "documentation/docs/40-best-practices/03-auth.md",
"chars": 1618,
"preview": "---\ntitle: Auth\n---\n\nAuth refers to authentication and authorization, which are common needs when building a web applica"
},
{
"path": "documentation/docs/40-best-practices/05-performance.md",
"chars": 10278,
"preview": "---\ntitle: Performance\n---\n\nOut of the box, SvelteKit does a lot of work to make your applications as performant as poss"
},
{
"path": "documentation/docs/40-best-practices/06-icons.md",
"chars": 1216,
"preview": "---\ntitle: Icons\n---\n\n## CSS\n\nA great way to use icons is to define them purely via CSS. Iconify offers support for [man"
},
{
"path": "documentation/docs/40-best-practices/07-images.md",
"chars": 11133,
"preview": "---\ntitle: Images\n---\n\nImages can have a big impact on your app's performance. For best results, you should optimize the"
},
{
"path": "documentation/docs/40-best-practices/10-accessibility.md",
"chars": 5496,
"preview": "---\ntitle: Accessibility\n---\n\nSvelteKit strives to provide an accessible platform for your app by default. Svelte's [com"
},
{
"path": "documentation/docs/40-best-practices/20-seo.md",
"chars": 5680,
"preview": "---\ntitle: SEO\n---\n\nThe most important aspect of SEO is to create high-quality content that is widely linked to from aro"
},
{
"path": "documentation/docs/40-best-practices/index.md",
"chars": 30,
"preview": "---\ntitle: Best practices\n---\n"
},
{
"path": "documentation/docs/60-appendix/10-faq.md",
"chars": 9774,
"preview": "---\ntitle: Frequently asked questions\n---\n\n## Other resources\n\nPlease see [the Svelte FAQ](../svelte/faq) and [`vite-plu"
},
{
"path": "documentation/docs/60-appendix/20-integrations.md",
"chars": 2908,
"preview": "---\ntitle: Integrations\n---\n\n## `vitePreprocess`\n\n[`vitePreprocess`](https://github.com/sveltejs/vite-plugin-svelte/blob"
},
{
"path": "documentation/docs/60-appendix/25-debugging.md",
"chars": 2572,
"preview": "---\ntitle: Breakpoint Debugging\n---\n\nIn addition to the [`@debug`](../svelte/@debug) tag, you can also debug Svelte and "
},
{
"path": "documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md",
"chars": 13130,
"preview": "---\ntitle: Migrating to SvelteKit v2\n---\n\nUpgrading from SvelteKit version 1 to version 2 should be mostly seamless. The"
},
{
"path": "documentation/docs/60-appendix/40-migrating.md",
"chars": 9148,
"preview": "---\ntitle: Migrating from Sapper\nrank: 1\n---\n\nSvelteKit is the successor to Sapper and shares many elements of its desig"
},
{
"path": "documentation/docs/60-appendix/50-additional-resources.md",
"chars": 1540,
"preview": "---\ntitle: Additional resources\n---\n\n## FAQs\n\nPlease see the [SvelteKit FAQ](faq) for solutions to common issues and hel"
},
{
"path": "documentation/docs/60-appendix/60-glossary.md",
"chars": 6994,
"preview": "---\ntitle: Glossary\n---\n\nThe core of SvelteKit provides a highly configurable rendering engine. This section describes s"
},
{
"path": "documentation/docs/60-appendix/index.md",
"chars": 24,
"preview": "---\ntitle: Appendix\n---\n"
},
{
"path": "documentation/docs/98-reference/10-@sveltejs-kit.md",
"chars": 197,
"preview": "---\ntitle: @sveltejs/kit\n---\n\n> MODULE: @sveltejs/kit\n\n## Private types\n\nThe following are referenced by the public type"
},
{
"path": "documentation/docs/98-reference/15-@sveltejs-kit-hooks.md",
"chars": 66,
"preview": "---\ntitle: @sveltejs/kit/hooks\n---\n\n> MODULE: @sveltejs/kit/hooks\n"
},
{
"path": "documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md",
"chars": 84,
"preview": "---\ntitle: @sveltejs/kit/node/polyfills\n---\n\n> MODULE: @sveltejs/kit/node/polyfills\n"
},
{
"path": "documentation/docs/98-reference/15-@sveltejs-kit-node.md",
"chars": 65,
"preview": "---\ntitle: @sveltejs/kit/node\n---\n\n> MODULE: @sveltejs/kit/node\n"
},
{
"path": "documentation/docs/98-reference/15-@sveltejs-kit-vite.md",
"chars": 65,
"preview": "---\ntitle: @sveltejs/kit/vite\n---\n\n> MODULE: @sveltejs/kit/vite\n"
},
{
"path": "documentation/docs/98-reference/20-$app-environment.md",
"chars": 60,
"preview": "---\ntitle: $app/environment\n---\n\n> MODULE: $app/environment\n"
},
{
"path": "documentation/docs/98-reference/20-$app-forms.md",
"chars": 48,
"preview": "---\ntitle: $app/forms\n---\n\n> MODULE: $app/forms\n"
},
{
"path": "documentation/docs/98-reference/20-$app-navigation.md",
"chars": 58,
"preview": "---\ntitle: $app/navigation\n---\n\n> MODULE: $app/navigation\n"
},
{
"path": "documentation/docs/98-reference/20-$app-paths.md",
"chars": 48,
"preview": "---\ntitle: $app/paths\n---\n\n> MODULE: $app/paths\n"
},
{
"path": "documentation/docs/98-reference/20-$app-server.md",
"chars": 50,
"preview": "---\ntitle: $app/server\n---\n\n> MODULE: $app/server\n"
},
{
"path": "documentation/docs/98-reference/20-$app-state.md",
"chars": 306,
"preview": "---\ntitle: $app/state\n---\n\nSvelteKit makes three read-only state objects available via the `$app/state` module — `page`,"
},
{
"path": "documentation/docs/98-reference/20-$app-stores.md",
"chars": 210,
"preview": "---\ntitle: $app/stores\n---\n\nThis module contains store-based equivalents of the exports from [`$app/state`]($app-state)."
},
{
"path": "documentation/docs/98-reference/20-$app-types.md",
"chars": 1848,
"preview": "---\ntitle: $app/types\n---\n\nThis module contains generated types for the routes in your app.\n\n<blockquote class=\"since no"
},
{
"path": "documentation/docs/98-reference/25-$env-dynamic-private.md",
"chars": 68,
"preview": "---\ntitle: $env/dynamic/private\n---\n\n> MODULE: $env/dynamic/private\n"
},
{
"path": "documentation/docs/98-reference/25-$env-dynamic-public.md",
"chars": 66,
"preview": "---\ntitle: $env/dynamic/public\n---\n\n> MODULE: $env/dynamic/public\n"
},
{
"path": "documentation/docs/98-reference/25-$env-static-private.md",
"chars": 66,
"preview": "---\ntitle: $env/static/private\n---\n\n> MODULE: $env/static/private\n"
},
{
"path": "documentation/docs/98-reference/25-$env-static-public.md",
"chars": 64,
"preview": "---\ntitle: $env/static/public\n---\n\n> MODULE: $env/static/public\n"
},
{
"path": "documentation/docs/98-reference/26-$lib.md",
"chars": 333,
"preview": "---\ntitle: $lib\n---\n\nSvelteKit automatically makes files under `src/lib` available using the `$lib` import alias.\n\n```sv"
},
{
"path": "documentation/docs/98-reference/27-$service-worker.md",
"chars": 58,
"preview": "---\ntitle: $service-worker\n---\n\n> MODULE: $service-worker\n"
},
{
"path": "documentation/docs/98-reference/50-configuration.md",
"chars": 817,
"preview": "---\ntitle: Configuration\n---\n\nYour project's configuration lives in a `svelte.config.js` file at the root of your projec"
},
{
"path": "documentation/docs/98-reference/52-cli.md",
"chars": 748,
"preview": "---\ntitle: Command Line Interface\n---\n\nSvelteKit projects use [Vite](https://vitejs.dev), meaning you'll mostly use its "
},
{
"path": "documentation/docs/98-reference/54-types.md",
"chars": 5916,
"preview": "---\ntitle: Types\n---\n\n## Generated types\n\nThe `RequestHandler` and `Load` types both accept a `Params` argument allowing"
},
{
"path": "documentation/docs/98-reference/index.md",
"chars": 25,
"preview": "---\ntitle: Reference\n---\n"
},
{
"path": "documentation/docs/index.md",
"chars": 25,
"preview": "---\ntitle: SvelteKit\n---\n"
},
{
"path": "eslint.config.js",
"chars": 1962,
"preview": "import svelte_config from '@sveltejs/eslint-config';\nimport noRuntimeToExportsImports from './.eslint/no-runtime-to-expo"
},
{
"path": "package.json",
"chars": 2079,
"preview": "{\n\t\"name\": \"kit-monorepo\",\n\t\"version\": \"0.0.1\",\n\t\"description\": \"monorepo for @sveltejs/kit and friends\",\n\t\"private\": tr"
},
{
"path": "packages/adapter-auto/.gitignore",
"chars": 23,
"preview": ".DS_Store\nnode_modules\n"
},
{
"path": "packages/adapter-auto/CHANGELOG.md",
"chars": 35061,
"preview": "# @sveltejs/adapter-auto\n\n## 7.0.1\n### Patch Changes\n\n\n- feat: update adapter-netlify to version 6 ([`77ab341`](https://"
},
{
"path": "packages/adapter-auto/README.md",
"chars": 312,
"preview": "# adapter-auto\n\nAutomatically chooses the SvelteKit adapter for your current environment, if possible.\n\n## Docs\n\n[Docs]("
},
{
"path": "packages/adapter-auto/adapters.js",
"chars": 1075,
"preview": "import process from 'node:process';\n\n// List of adapters to check for. `version` is used to pin the installed adapter ve"
},
{
"path": "packages/adapter-auto/index.d.ts",
"chars": 85,
"preview": "import { Adapter } from '@sveltejs/kit';\n\nexport default function plugin(): Adapter;\n"
},
{
"path": "packages/adapter-auto/index.js",
"chars": 5515,
"preview": "import { execSync } from 'node:child_process';\nimport { adapters } from './adapters.js';\nimport path from 'node:path';\ni"
},
{
"path": "packages/adapter-auto/package.json",
"chars": 1088,
"preview": "{\n\t\"name\": \"@sveltejs/adapter-auto\",\n\t\"version\": \"7.0.1\",\n\t\"description\": \"Automatically chooses the SvelteKit adapter f"
},
{
"path": "packages/adapter-auto/test/adapters.spec.js",
"chars": 590,
"preview": "import { assert, test } from 'vitest';\nimport { adapters } from '../adapters.js';\nimport { existsSync, readFileSync } fr"
},
{
"path": "packages/adapter-auto/tsconfig.json",
"chars": 256,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"noEmit\": true,\n\t\t\"noImplicitAny\": true,\n\t\t\"strictNullCh"
},
{
"path": "packages/adapter-cloudflare/.gitignore",
"chars": 7,
"preview": "/files\n"
},
{
"path": "packages/adapter-cloudflare/CHANGELOG.md",
"chars": 35598,
"preview": "# @sveltejs/adapter-cloudflare\n\n## 7.2.8\n### Patch Changes\n\n\n- fix: skip comment lines in `_redirects` file ([#15325](ht"
},
{
"path": "packages/adapter-cloudflare/README.md",
"chars": 627,
"preview": "# adapter-cloudflare\n\n[Adapter](https://svelte.dev/docs/kit/building-your-app) for building SvelteKit applications on [C"
},
{
"path": "packages/adapter-cloudflare/ambient.d.ts",
"chars": 357,
"preview": "import {\n\tCacheStorage,\n\tIncomingRequestCfProperties,\n\tExecutionContext\n} from '@cloudflare/workers-types';\n\ndeclare glo"
},
{
"path": "packages/adapter-cloudflare/index.d.ts",
"chars": 3079,
"preview": "import { Adapter } from '@sveltejs/kit';\nimport './ambient.js';\nimport { GetPlatformProxyOptions } from 'wrangler';\n\nexp"
},
{
"path": "packages/adapter-cloudflare/index.js",
"chars": 10030,
"preview": "import { VERSION } from '@sveltejs/kit';\nimport { copyFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs'"
},
{
"path": "packages/adapter-cloudflare/internal.d.ts",
"chars": 909,
"preview": "declare module 'SERVER' {\n\texport { Server } from '@sveltejs/kit';\n}\n\ndeclare module 'MANIFEST' {\n\timport { SSRManifest "
},
{
"path": "packages/adapter-cloudflare/package.json",
"chars": 1577,
"preview": "{\n\t\"name\": \"@sveltejs/adapter-cloudflare\",\n\t\"version\": \"7.2.8\",\n\t\"description\": \"Adapts SvelteKit applications for Cloud"
},
{
"path": "packages/adapter-cloudflare/src/worker.js",
"chars": 3445,
"preview": "import { Server } from 'SERVER';\nimport { manifest, prerendered, base_path } from 'MANIFEST';\nimport { env } from 'cloud"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/.gitignore",
"chars": 46,
"preview": ".DS_Store\nnode_modules\n/.svelte-kit\n/.wrangler"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/package.json",
"chars": 522,
"preview": "{\n\t\"name\": \"test-cloudflare-pages\",\n\t\"version\": \"0.0.1\",\n\t\"private\": true,\n\t\"scripts\": {\n\t\t\"dev\": \"vite dev\",\n\t\t\"build\":"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/playwright.config.js",
"chars": 52,
"preview": "export { config as default } from '../../utils.js';\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/server-side-dep/index.d.ts",
"chars": 51,
"preview": "export function sum(a: number, b: number): number;\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/server-side-dep/index.js",
"chars": 85,
"preview": "/** @type {import('./index.js').sum} */\nexport function sum(a, b) {\n\treturn a + b;\n}\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/server-side-dep/package.json",
"chars": 157,
"preview": "{\n\t\"name\": \"server-side-dep\",\n\t\"version\": \"0.0.1\",\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"default\": \"./index.js\","
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/src/app.html",
"chars": 224,
"preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width,"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/src/routes/+page.server.js",
"chars": 184,
"preview": "// this tests that Wrangler can correctly resolve and bundle server-side dependencies\nimport { sum } from 'server-side-d"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/src/routes/+page.svelte",
"chars": 63,
"preview": "<script>\n\texport let data;\n</script>\n\n<h1>Sum: {data.sum}</h1>\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/svelte.config.js",
"chars": 164,
"preview": "import adapter from '../../../index.js';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\tkit: {\n\t\tadapt"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/test/test.js",
"chars": 173,
"preview": "import { expect, test } from '@playwright/test';\n\ntest('worker', async ({ page }) => {\n\tawait page.goto('/');\n\tawait exp"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/tsconfig.json",
"chars": 305,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"esModuleInterop\": true,\n\t\t\"forceConsistentCasingInFileN"
},
{
"path": "packages/adapter-cloudflare/test/apps/pages/vite.config.js",
"chars": 188,
"preview": "import { sveltekit } from '@sveltejs/kit/vite';\n\n/** @type {import('vite').UserConfig} */\nconst config = {\n\tbuild: {\n\t\tm"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/.gitignore",
"chars": 52,
"preview": ".DS_Store\nnode_modules\n/.svelte-kit\n/.wrangler\n/dist"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc",
"chars": 295,
"preview": "// we've moved the wrangler config away from the root of the project\n// to test that the adapter still resolves the path"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/package.json",
"chars": 591,
"preview": "{\n\t\"name\": \"test-cloudflare-workers\",\n\t\"version\": \"0.0.1\",\n\t\"private\": true,\n\t\"scripts\": {\n\t\t\"dev\": \"vite dev\",\n\t\t\"build"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/playwright.config.js",
"chars": 52,
"preview": "export { config as default } from '../../utils.js';\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/server-side-dep/index.d.ts",
"chars": 51,
"preview": "export function sum(a: number, b: number): number;\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/server-side-dep/index.js",
"chars": 85,
"preview": "/** @type {import('./index.js').sum} */\nexport function sum(a, b) {\n\treturn a + b;\n}\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/server-side-dep/package.json",
"chars": 157,
"preview": "{\n\t\"name\": \"server-side-dep\",\n\t\"version\": \"0.0.1\",\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"default\": \"./index.js\","
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/app.d.ts",
"chars": 182,
"preview": "// TODO: remove this in 3.0 once svelte.config.js is included by the generated tsconfig.json\n// this ensures we get the "
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/app.html",
"chars": 224,
"preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width,"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/routes/+page.server.js",
"chars": 184,
"preview": "// this tests that Wrangler can correctly resolve and bundle server-side dependencies\nimport { sum } from 'server-side-d"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/routes/+page.svelte",
"chars": 63,
"preview": "<script>\n\texport let data;\n</script>\n\n<h1>Sum: {data.sum}</h1>\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/routes/ctx/+server.js",
"chars": 121,
"preview": "export function GET({ platform }) {\n\treturn new Response(platform?.ctx.waitUntil ? 'ctx works' : 'ctx does not work');\n}"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/routes/read/+server.js",
"chars": 118,
"preview": "import { read } from '$app/server';\nimport file from './file.txt?url';\n\nexport function GET() {\n\treturn read(file);\n}\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/src/routes/read/file.txt",
"chars": 55,
"preview": "Hello! This file is read by `read` from `$app/server`.\n"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/svelte.config.js",
"chars": 204,
"preview": "import adapter from '../../../index.js';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\tkit: {\n\t\tadapt"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/test/test.js",
"chars": 720,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { expect, test "
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/tsconfig.json",
"chars": 305,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"esModuleInterop\": true,\n\t\t\"forceConsistentCasingInFileN"
},
{
"path": "packages/adapter-cloudflare/test/apps/workers/vite.config.js",
"chars": 188,
"preview": "import { sveltekit } from '@sveltejs/kit/vite';\n\n/** @type {import('vite').UserConfig} */\nconst config = {\n\tbuild: {\n\t\tm"
},
{
"path": "packages/adapter-cloudflare/test/utils.js",
"chars": 863,
"preview": "import { devices } from '@playwright/test';\nimport process from 'node:process';\nimport { number_from_env } from '../../."
},
{
"path": "packages/adapter-cloudflare/tsconfig.json",
"chars": 653,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"noEmit\": true,\n\t\t\"noImplicitAny\": true,\n\t\t\"strictNullCh"
},
{
"path": "packages/adapter-cloudflare/utils.js",
"chars": 5458,
"preview": "import process from 'node:process';\n\n/**\n * @param {import('wrangler').Unstable_Config} wrangler_config\n * @returns {boo"
},
{
"path": "packages/adapter-cloudflare/utils.spec.js",
"chars": 7635,
"preview": "import { describe, test, vi, expect } from 'vitest';\nimport {\n\tis_building_for_cloudflare_pages,\n\tvalidate_worker_settin"
},
{
"path": "packages/adapter-netlify/.gitignore",
"chars": 30,
"preview": ".DS_Store\nnode_modules\n/files\n"
},
{
"path": "packages/adapter-netlify/CHANGELOG.md",
"chars": 36326,
"preview": "# @sveltejs/adapter-netlify\n\n## 6.0.4\n### Patch Changes\n\n\n- fix: generate a catch-all function that handles remote funct"
},
{
"path": "packages/adapter-netlify/README.md",
"chars": 282,
"preview": "# adapter-netlify\n\nA SvelteKit adapter that creates a Netlify app.\n\n## Docs\n\n[Docs](https://svelte.dev/docs/kit/adapter-"
},
{
"path": "packages/adapter-netlify/ambient.d.ts",
"chars": 135,
"preview": "declare global {\n\tnamespace App {\n\t\texport interface Platform {\n\t\t\tcontext: import('@netlify/functions').Context;\n\t\t}\n\t}"
},
{
"path": "packages/adapter-netlify/index.d.ts",
"chars": 152,
"preview": "import { Adapter } from '@sveltejs/kit';\nimport './ambient.d.ts';\n\nexport default function plugin(opts?: { split?: boole"
},
{
"path": "packages/adapter-netlify/index.js",
"chars": 13045,
"preview": "/** @import { BuildOptions } from 'esbuild' */\nimport { appendFileSync, existsSync, readdirSync, readFileSync, writeFile"
},
{
"path": "packages/adapter-netlify/internal.d.ts",
"chars": 185,
"preview": "declare module '0SERVER' {\n\texport { Server } from '@sveltejs/kit';\n}\n\ndeclare module 'MANIFEST' {\n\timport { SSRManifest"
},
{
"path": "packages/adapter-netlify/package.json",
"chars": 1654,
"preview": "{\n\t\"name\": \"@sveltejs/adapter-netlify\",\n\t\"version\": \"6.0.4\",\n\t\"description\": \"A SvelteKit adapter that creates a Netlify"
},
{
"path": "packages/adapter-netlify/rollup.config.js",
"chars": 976,
"preview": "import { nodeResolve } from '@rollup/plugin-node-resolve';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json f"
},
{
"path": "packages/adapter-netlify/src/edge.js",
"chars": 928,
"preview": "import { Server } from '0SERVER';\nimport { manifest } from 'MANIFEST';\n\nconst server = new Server(manifest);\n\n/**\n * We "
},
{
"path": "packages/adapter-netlify/src/serverless.js",
"chars": 835,
"preview": "import './shims';\nimport { Server } from '0SERVER';\nimport { createReadableStream } from '@sveltejs/kit/node';\nimport pr"
},
{
"path": "packages/adapter-netlify/src/shims.js",
"chars": 85,
"preview": "import { installPolyfills } from '@sveltejs/kit/node/polyfills';\ninstallPolyfills();\n"
},
{
"path": "packages/adapter-netlify/test/apps/basic/.gitignore",
"chars": 62,
"preview": ".DS_Store\nnode_modules\n/.svelte-kit\n/.netlify\n/build\ndeno.lock"
},
{
"path": "packages/adapter-netlify/test/apps/basic/netlify.toml",
"chars": 353,
"preview": "[build]\npublish = \"build\"\n\n# TODO: remove this after we refactor to the Netlify frameworks API\n# we are purposely misusi"
},
{
"path": "packages/adapter-netlify/test/apps/basic/package.json",
"chars": 416,
"preview": "{\n\t\"name\": \"test-netlify-basic\",\n\t\"version\": \"0.0.1\",\n\t\"private\": true,\n\t\"scripts\": {\n\t\t\"dev\": \"vite dev\",\n\t\t\"build\": \"v"
},
{
"path": "packages/adapter-netlify/test/apps/basic/playwright.config.js",
"chars": 52,
"preview": "export { config as default } from '../../utils.js';\n"
},
{
"path": "packages/adapter-netlify/test/apps/basic/src/app.html",
"chars": 225,
"preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width,"
},
{
"path": "packages/adapter-netlify/test/apps/basic/src/instrumentation.server.js",
"chars": 69,
"preview": "// this is just here to make sure the changes resulting from it work\n"
},
{
"path": "packages/adapter-netlify/test/apps/basic/src/routes/read/+server.js",
"chars": 118,
"preview": "import { read } from '$app/server';\nimport file from './file.txt?url';\n\nexport function GET() {\n\treturn read(file);\n}\n"
},
{
"path": "packages/adapter-netlify/test/apps/basic/src/routes/read/file.txt",
"chars": 55,
"preview": "Hello! This file is read by `read` from `$app/server`.\n"
},
{
"path": "packages/adapter-netlify/test/apps/basic/svelte.config.js",
"chars": 231,
"preview": "import adapter from '../../../index.js';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\tkit: {\n\t\tadapt"
},
{
"path": "packages/adapter-netlify/test/apps/basic/test/test.js",
"chars": 469,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { expect, test "
},
{
"path": "packages/adapter-netlify/test/apps/basic/tsconfig.json",
"chars": 305,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"esModuleInterop\": true,\n\t\t\"forceConsistentCasingInFileN"
},
{
"path": "packages/adapter-netlify/test/apps/basic/vite.config.ts",
"chars": 199,
"preview": "import { sveltekit } from '@sveltejs/kit/vite';\nimport type { UserConfig } from 'vite';\n\nconst config: UserConfig = {\n\tb"
},
{
"path": "packages/adapter-netlify/test/apps/edge/.gitignore",
"chars": 62,
"preview": ".DS_Store\nnode_modules\n/.svelte-kit\n/.netlify\n/build\ndeno.lock"
},
{
"path": "packages/adapter-netlify/test/apps/edge/netlify.toml",
"chars": 551,
"preview": "[build]\npublish = \"build\"\n\n# TODO: remove these once we overhaul the Netlify adapter to use the new edge declarations ht"
},
{
"path": "packages/adapter-netlify/test/apps/edge/package.json",
"chars": 415,
"preview": "{\n\t\"name\": \"test-netlify-edge\",\n\t\"version\": \"0.0.1\",\n\t\"private\": true,\n\t\"scripts\": {\n\t\t\"dev\": \"vite dev\",\n\t\t\"build\": \"vi"
},
{
"path": "packages/adapter-netlify/test/apps/edge/playwright.config.js",
"chars": 52,
"preview": "export { config as default } from '../../utils.js';\n"
},
{
"path": "packages/adapter-netlify/test/apps/edge/src/app.html",
"chars": 225,
"preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width,"
},
{
"path": "packages/adapter-netlify/test/apps/edge/src/routes/read/+server.js",
"chars": 118,
"preview": "import { read } from '$app/server';\nimport file from './file.txt?url';\n\nexport function GET() {\n\treturn read(file);\n}\n"
},
{
"path": "packages/adapter-netlify/test/apps/edge/src/routes/read/file.txt",
"chars": 55,
"preview": "Hello! This file is read by `read` from `$app/server`.\n"
},
{
"path": "packages/adapter-netlify/test/apps/edge/svelte.config.js",
"chars": 183,
"preview": "import adapter from '../../../index.js';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\tkit: {\n\t\tadapt"
},
{
"path": "packages/adapter-netlify/test/apps/edge/test/test.js",
"chars": 469,
"preview": "import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { expect, test "
},
{
"path": "packages/adapter-netlify/test/apps/edge/tsconfig.json",
"chars": 305,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"esModuleInterop\": true,\n\t\t\"forceConsistentCasingInFileN"
},
{
"path": "packages/adapter-netlify/test/apps/edge/vite.config.ts",
"chars": 199,
"preview": "import { sveltekit } from '@sveltejs/kit/vite';\nimport type { UserConfig } from 'vite';\n\nconst config: UserConfig = {\n\tb"
},
{
"path": "packages/adapter-netlify/test/apps/split/.gitignore",
"chars": 62,
"preview": ".DS_Store\nnode_modules\n/.svelte-kit\n/.netlify\n/build\ndeno.lock"
},
{
"path": "packages/adapter-netlify/test/apps/split/netlify.toml",
"chars": 353,
"preview": "[build]\npublish = \"build\"\n\n# TODO: remove this after we refactor to the Netlify frameworks API\n# we are purposely misusi"
}
]
// ... and 2340 more files (download for full content)
About this extraction
This page contains the full source code of the sveltejs/kit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2540 files (3.1 MB), approximately 1.0M tokens, and a symbol index with 1753 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.