From d4d4789cea3ad98c5776e47e47db7af71e20c77c Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 9 Apr 2025 16:47:45 -0400 Subject: [PATCH 1/4] make invalidation more granular --- apps/svelte.dev/src/routes/docs/[topic]/+page.server.ts | 8 ++++++++ .../routes/docs/{ => [topic]}/[...path]/+layout.server.ts | 7 +------ .../routes/docs/{ => [topic]}/[...path]/+layout.svelte | 0 .../routes/docs/{ => [topic]}/[...path]/+page.server.js | 2 +- .../src/routes/docs/{ => [topic]}/[...path]/+page.svelte | 0 .../docs/{ => [topic]}/[...path]/Breadcrumbs.svelte | 0 .../routes/docs/{ => [topic]}/[...path]/OnThisPage.svelte | 0 .../docs/{ => [topic]}/[...path]/llms.txt/+server.ts | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 apps/svelte.dev/src/routes/docs/[topic]/+page.server.ts rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/+layout.server.ts (72%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/+layout.svelte (100%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/+page.server.js (82%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/+page.svelte (100%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/Breadcrumbs.svelte (100%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/OnThisPage.svelte (100%) rename apps/svelte.dev/src/routes/docs/{ => [topic]}/[...path]/llms.txt/+server.ts (93%) diff --git a/apps/svelte.dev/src/routes/docs/[topic]/+page.server.ts b/apps/svelte.dev/src/routes/docs/[topic]/+page.server.ts new file mode 100644 index 0000000000..d1654748a6 --- /dev/null +++ b/apps/svelte.dev/src/routes/docs/[topic]/+page.server.ts @@ -0,0 +1,8 @@ +import { docs } from '$lib/server/content'; +import { redirect } from '@sveltejs/kit'; + +export async function load({ params }) { + const document = docs.topics[`docs/${params.topic}`]; + + redirect(307, `/${document.children[0].children[0].slug}`); +} diff --git a/apps/svelte.dev/src/routes/docs/[...path]/+layout.server.ts b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+layout.server.ts similarity index 72% rename from apps/svelte.dev/src/routes/docs/[...path]/+layout.server.ts rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/+layout.server.ts index 41019d898e..7c2a97e867 100644 --- a/apps/svelte.dev/src/routes/docs/[...path]/+layout.server.ts +++ b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+layout.server.ts @@ -3,8 +3,7 @@ import { redirect } from '@sveltejs/kit'; import { error } from '@sveltejs/kit'; export async function load({ params }) { - const topic = params.path.split('/')[0]; - const document = docs.topics[`docs/${topic}`]; + const document = docs.topics[`docs/${params.topic}`]; if (!document) { // in many cases, https://svelte.dev/docs/foo is now https://svelte.dev/docs/svelte/foo @@ -15,10 +14,6 @@ export async function load({ params }) { error(404, 'Not found'); } - if (params.path === topic) { - redirect(307, `/${document.children[0].children[0].slug}`); - } - return { sections: document.children.map(create_summary) }; diff --git a/apps/svelte.dev/src/routes/docs/[...path]/+layout.svelte b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+layout.svelte similarity index 100% rename from apps/svelte.dev/src/routes/docs/[...path]/+layout.svelte rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/+layout.svelte diff --git a/apps/svelte.dev/src/routes/docs/[...path]/+page.server.js b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+page.server.js similarity index 82% rename from apps/svelte.dev/src/routes/docs/[...path]/+page.server.js rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/+page.server.js index 286d0d0d8e..1461edfa2b 100644 --- a/apps/svelte.dev/src/routes/docs/[...path]/+page.server.js +++ b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+page.server.js @@ -3,7 +3,7 @@ import { render_content } from '$lib/server/renderer'; import { error } from '@sveltejs/kit'; export async function load({ params }) { - const document = docs.pages[`docs/${params.path}`]; + const document = docs.pages[`docs/${params.topic}/${params.path}`]; if (!document) { error(404); diff --git a/apps/svelte.dev/src/routes/docs/[...path]/+page.svelte b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/+page.svelte similarity index 100% rename from apps/svelte.dev/src/routes/docs/[...path]/+page.svelte rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/+page.svelte diff --git a/apps/svelte.dev/src/routes/docs/[...path]/Breadcrumbs.svelte b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/Breadcrumbs.svelte similarity index 100% rename from apps/svelte.dev/src/routes/docs/[...path]/Breadcrumbs.svelte rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/Breadcrumbs.svelte diff --git a/apps/svelte.dev/src/routes/docs/[...path]/OnThisPage.svelte b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/OnThisPage.svelte similarity index 100% rename from apps/svelte.dev/src/routes/docs/[...path]/OnThisPage.svelte rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/OnThisPage.svelte diff --git a/apps/svelte.dev/src/routes/docs/[...path]/llms.txt/+server.ts b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/llms.txt/+server.ts similarity index 93% rename from apps/svelte.dev/src/routes/docs/[...path]/llms.txt/+server.ts rename to apps/svelte.dev/src/routes/docs/[topic]/[...path]/llms.txt/+server.ts index d757e502e0..b516c7ab83 100644 --- a/apps/svelte.dev/src/routes/docs/[...path]/llms.txt/+server.ts +++ b/apps/svelte.dev/src/routes/docs/[topic]/[...path]/llms.txt/+server.ts @@ -8,7 +8,7 @@ export function entries() { } export function GET({ params }) { - const pkg = params.path; + const pkg = `${params.topic}/${params.path}`; const section = sections.find((s) => s.slug === pkg); From 664f0d50119db1f6827297eba64a0c93f827dd3d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 9 Apr 2025 16:52:21 -0400 Subject: [PATCH 2/4] avoid invalidating root layout on every navigation --- apps/svelte.dev/src/routes/+layout.server.ts | 39 +++++++------------- apps/svelte.dev/src/routes/+layout.svelte | 16 ++++++-- packages/site-kit/src/global.d.ts | 4 +- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/apps/svelte.dev/src/routes/+layout.server.ts b/apps/svelte.dev/src/routes/+layout.server.ts index 9145c88a40..ef434ca5e7 100644 --- a/apps/svelte.dev/src/routes/+layout.server.ts +++ b/apps/svelte.dev/src/routes/+layout.server.ts @@ -51,32 +51,21 @@ const nav_links: NavigationLink[] = [ } ]; -const sections: Record = { - docs: 'Docs', - playground: 'Playground', - blog: 'Blog', - tutorial: 'Tutorial', - search: 'Search' -}; - -const banner: BannerData = { - id: 'adventofsvelte2024', - start: new Date('1 December, 2024 00:00:00 UTC'), - end: new Date('25 December, 2024 23:59:59 UTC'), - arrow: true, - content: { - lg: 'Twenty-four days, twenty-four features: Advent of Svelte 2024', - sm: 'Advent of Svelte 2024' - }, - href: '/blog/advent-of-svelte' -}; - -export const load = async ({ url }) => { - const nav_title = sections[url.pathname.split('/')[1]!] ?? ''; +// const banner: BannerData = { +// id: 'adventofsvelte2024', +// start: new Date('1 December, 2024 00:00:00 UTC'), +// end: new Date('25 December, 2024 23:59:59 UTC'), +// arrow: true, +// content: { +// lg: 'Twenty-four days, twenty-four features: Advent of Svelte 2024', +// sm: 'Advent of Svelte 2024' +// }, +// href: '/blog/advent-of-svelte' +// }; +export const load = async () => { return { - nav_title, - nav_links, - banner + nav_links + // banner }; }; diff --git a/apps/svelte.dev/src/routes/+layout.svelte b/apps/svelte.dev/src/routes/+layout.svelte index 1ebf609a8e..54a2d4c8fb 100644 --- a/apps/svelte.dev/src/routes/+layout.svelte +++ b/apps/svelte.dev/src/routes/+layout.svelte @@ -1,7 +1,7 @@ - {#if !$page.route.id?.startsWith('/blog/')} + {#if !page.route.id?.startsWith('/blog/')} {/if} - + {#snippet top_nav()} -