From 6d4c5cc87046fa394714b476e929e34f106ee949 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:38:18 +0100 Subject: [PATCH] chore: prepare legacy site deploy (#13987) This basically removes everything but the home page and docs/tutorial. More specifically: - add old tutorial to nav - strips out implementations of repl and blog, these links go to the current blog/repl instead - removes examples - adds deprecation banner - link to current site --- sites/svelte.dev/package.json | 6 +- sites/svelte.dev/scripts/generate_examples.js | 16 - sites/svelte.dev/src/lib/server/blog/index.js | 84 ----- .../svelte.dev/src/lib/server/blog/types.d.ts | 27 -- .../src/lib/server/examples/index.js | 98 ----- .../src/lib/server/examples/types.d.ts | 27 -- .../src/routes/(authed)/+layout.server.js | 12 - .../src/routes/(authed)/+layout.svelte | 28 -- .../src/routes/(authed)/apps/+page.server.js | 20 -- .../src/routes/(authed)/apps/+page.svelte | 328 ----------------- .../routes/(authed)/apps/destroy/+server.js | 12 - .../src/routes/(authed)/repl/+page.js | 21 -- .../src/routes/(authed)/repl/+page.svelte | 0 .../src/routes/(authed)/repl/[id]/+page.js | 18 - .../routes/(authed)/repl/[id]/+page.server.js | 16 - .../routes/(authed)/repl/[id]/+page.svelte | 151 -------- .../(authed)/repl/[id]/AppControls.svelte | 339 ------------------ .../routes/(authed)/repl/[id]/UserMenu.svelte | 134 ------- .../routes/(authed)/repl/[id]/downloadBlob.js | 15 - .../(authed)/repl/[id]/embed/+page.server.js | 16 - .../(authed)/repl/[id]/embed/+page.svelte | 92 ----- .../(authed)/repl/api/[id].json/+server.js | 93 ----- .../(authed)/repl/create.json/+server.js | 18 - .../(authed)/repl/embed/+page.server.js | 14 - .../(authed)/repl/local/[...path]/+server.js | 15 - .../(authed)/repl/save/[id].json/+server.js | 14 - sites/svelte.dev/src/routes/+layout.svelte | 6 +- .../src/routes/banner.json/+server.js | 24 +- .../src/routes/blog/+page.server.js | 9 - sites/svelte.dev/src/routes/blog/+page.svelte | 91 ----- .../src/routes/blog/[slug]/+page.server.js | 18 - .../src/routes/blog/[slug]/+page.svelte | 137 ------- .../routes/blog/[slug]/card.png/+server.js | 51 --- .../routes/blog/[slug]/card.png/Card.svelte | 58 --- .../blog/[slug]/card.png/Overpass-Regular.ttf | Bin 169512 -> 0 bytes .../src/routes/blog/rss.xml/+server.js | 72 ---- .../the-easiest-way-to-get-started/+page.js | 6 - sites/svelte.dev/src/routes/examples/+page.js | 7 - .../src/routes/examples/+page.svelte | 0 .../routes/examples/[slug]/+page.server.js | 15 - .../src/routes/examples/[slug]/+page.svelte | 128 ------- .../examples/[slug]/TableOfContents.svelte | 123 ------- .../src/routes/examples/api/+server.js | 8 - .../examples/api/[slug].json/+server.js | 26 -- sites/svelte.dev/src/routes/faq/+server.js | 7 - .../svelte.dev/src/routes/nav.json/+server.js | 51 +-- sites/svelte.dev/src/routes/roadmap/+page.js | 8 - sites/svelte.dev/src/routes/stopwar.svg | 1 - 48 files changed, 24 insertions(+), 2436 deletions(-) delete mode 100644 sites/svelte.dev/scripts/generate_examples.js delete mode 100644 sites/svelte.dev/src/lib/server/blog/index.js delete mode 100644 sites/svelte.dev/src/lib/server/blog/types.d.ts delete mode 100644 sites/svelte.dev/src/lib/server/examples/index.js delete mode 100644 sites/svelte.dev/src/lib/server/examples/types.d.ts delete mode 100644 sites/svelte.dev/src/routes/(authed)/+layout.server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/+layout.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/apps/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/apps/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/apps/destroy/+server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/+page.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/AppControls.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/UserMenu.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/downloadBlob.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/api/[id].json/+server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/create.json/+server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/embed/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/local/[...path]/+server.js delete mode 100644 sites/svelte.dev/src/routes/(authed)/repl/save/[id].json/+server.js delete mode 100644 sites/svelte.dev/src/routes/blog/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/blog/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/blog/[slug]/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/blog/[slug]/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/blog/[slug]/card.png/+server.js delete mode 100644 sites/svelte.dev/src/routes/blog/[slug]/card.png/Card.svelte delete mode 100644 sites/svelte.dev/src/routes/blog/[slug]/card.png/Overpass-Regular.ttf delete mode 100644 sites/svelte.dev/src/routes/blog/rss.xml/+server.js delete mode 100644 sites/svelte.dev/src/routes/blog/the-easiest-way-to-get-started/+page.js delete mode 100644 sites/svelte.dev/src/routes/examples/+page.js delete mode 100644 sites/svelte.dev/src/routes/examples/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/examples/[slug]/+page.server.js delete mode 100644 sites/svelte.dev/src/routes/examples/[slug]/+page.svelte delete mode 100644 sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte delete mode 100644 sites/svelte.dev/src/routes/examples/api/+server.js delete mode 100644 sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js delete mode 100644 sites/svelte.dev/src/routes/faq/+server.js delete mode 100644 sites/svelte.dev/src/routes/roadmap/+page.js delete mode 100644 sites/svelte.dev/src/routes/stopwar.svg diff --git a/sites/svelte.dev/package.json b/sites/svelte.dev/package.json index 9a6d904b7b..243e6fcc2e 100644 --- a/sites/svelte.dev/package.json +++ b/sites/svelte.dev/package.json @@ -5,9 +5,9 @@ "description": "Docs and examples for Svelte", "type": "module", "scripts": { - "dev": "node scripts/update.js && pnpm run generate && vite dev", - "build": "node scripts/update.js && pnpm run generate && vite build", - "generate": "node scripts/type-gen/index.js && node scripts/generate_examples.js", + "dev": "node scripts/update.js && vite dev", + "build": "node scripts/update.js && vite build", + "generate": "node scripts/type-gen/index.js", "update": "node scripts/update.js --force=true", "preview": "vite preview", "start": "node build", diff --git a/sites/svelte.dev/scripts/generate_examples.js b/sites/svelte.dev/scripts/generate_examples.js deleted file mode 100644 index 360cba79bd..0000000000 --- a/sites/svelte.dev/scripts/generate_examples.js +++ /dev/null @@ -1,16 +0,0 @@ -import { fileURLToPath } from 'node:url'; -import { get_examples_data } from '../src/lib/server/examples/index.js'; -import { mkdir, writeFile } from 'node:fs/promises'; - -const examples_data = await get_examples_data( - fileURLToPath(new URL('../../../documentation/examples', import.meta.url)) -); - -try { - await mkdir(new URL('../src/lib/generated/', import.meta.url), { recursive: true }); -} catch {} - -writeFile( - new URL('../src/lib/generated/examples-data.js', import.meta.url), - `export default ${JSON.stringify(examples_data)}` -); diff --git a/sites/svelte.dev/src/lib/server/blog/index.js b/sites/svelte.dev/src/lib/server/blog/index.js deleted file mode 100644 index 1cd3a16178..0000000000 --- a/sites/svelte.dev/src/lib/server/blog/index.js +++ /dev/null @@ -1,84 +0,0 @@ -// @ts-check -import { extractFrontmatter } from '@sveltejs/site-kit/markdown'; -import { CONTENT_BASE_PATHS } from '../../../constants.js'; -import { render_content } from '../renderer.js'; -import { get_sections } from '../docs/index.js'; - -/** - * @param {import('./types').BlogData} blog_data - * @param {string} slug - */ -export async function get_processed_blog_post(blog_data, slug) { - for (const post of blog_data) { - if (post.slug === slug) { - return { - ...post, - content: await render_content(post.file, post.content) - }; - } - } - - return null; -} - -const BLOG_NAME_REGEX = /^(\d{4}-\d{2}-\d{2})-(.+)\.md$/; - -/** @returns {Promise} */ -export async function get_blog_data(base = CONTENT_BASE_PATHS.BLOG) { - const { readdir, readFile } = await import('node:fs/promises'); - - /** @type {import('./types').BlogData} */ - const blog_posts = []; - - for (const file of (await readdir(base)).reverse()) { - if (!BLOG_NAME_REGEX.test(file)) continue; - - const { date, date_formatted, slug } = get_date_and_slug(file); - const { metadata, body } = extractFrontmatter(await readFile(`${base}/${file}`, 'utf-8')); - const authors = metadata.author.split(',').map((author) => author.trim()); - const authorUrls = metadata.authorURL.split(',').map((author) => author.trim()); - - blog_posts.push({ - date, - date_formatted, - content: body, - description: metadata.description, - draft: metadata.draft === 'true', - slug, - title: metadata.title, - file, - authors: authors.map((author, i) => ({ - name: author, - url: authorUrls[i] - })), - sections: await get_sections(body) - }); - } - - return blog_posts; -} - -/** @param {import('./types').BlogData} blog_data */ -export function get_blog_list(blog_data) { - return blog_data.map(({ slug, date, title, description, draft }) => ({ - slug, - date, - title, - description, - draft - })); -} - -/** @param {string} filename */ -function get_date_and_slug(filename) { - const match = BLOG_NAME_REGEX.exec(filename); - if (!match) throw new Error(`Invalid filename for blog: '${filename}'`); - - const [, date, slug] = match; - const [y, m, d] = date.split('-'); - const date_formatted = `${months[+m - 1]} ${+d} ${y}`; - - return { date, date_formatted, slug }; -} - -const months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); diff --git a/sites/svelte.dev/src/lib/server/blog/types.d.ts b/sites/svelte.dev/src/lib/server/blog/types.d.ts deleted file mode 100644 index fc922ca54c..0000000000 --- a/sites/svelte.dev/src/lib/server/blog/types.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Section } from '../docs/types'; - -export interface BlogPost { - title: string; - description: string; - date: string; - date_formatted: string; - slug: string; - file: string; - authors: { - name: string; - url?: string; - }[]; - draft: boolean; - content: string; - sections: Section[]; -} - -export type BlogData = BlogPost[]; - -export interface BlogPostSummary { - slug: string; - title: string; - description: string; - date: string; - draft: boolean; -} diff --git a/sites/svelte.dev/src/lib/server/examples/index.js b/sites/svelte.dev/src/lib/server/examples/index.js deleted file mode 100644 index 759a72746e..0000000000 --- a/sites/svelte.dev/src/lib/server/examples/index.js +++ /dev/null @@ -1,98 +0,0 @@ -import { CONTENT_BASE_PATHS } from '../../../constants.js'; - -/** - * @param {import('./types').ExamplesData} examples_data - * @param {string} slug - */ -export function get_example(examples_data, slug) { - for (const section of examples_data) { - for (const example of section.examples) { - if (example.slug === slug) { - return example; - } - } - } - - return null; -} - -/** - * @returns {Promise} - */ -export async function get_examples_data(base = CONTENT_BASE_PATHS.EXAMPLES) { - const { readdir, stat, readFile } = await import('node:fs/promises'); - - const examples = []; - - for (const subdir of await readdir(base)) { - /** @type {import('./types').ExamplesDatum} */ - const section = { - title: '', // Initialise with empty - slug: subdir.split('-').slice(1).join('-'), - examples: [] - }; - - if (!((await stat(`${base}/${subdir}`)).isDirectory() || subdir.endsWith('meta.json'))) - continue; - - if (!subdir.endsWith('meta.json')) - section.title = - JSON.parse(await readFile(`${base}/${subdir}/meta.json`, 'utf-8')).title ?? 'Embeds'; - - for (const section_dir of await readdir(`${base}/${subdir}`)) { - const match = /\d{2}-(.+)/.exec(section_dir); - if (!match) continue; - - const slug = match[1]; - - const example_base_dir = `${base}/${subdir}/${section_dir}`; - - // Get title for - const example_title = JSON.parse( - await readFile(`${example_base_dir}/meta.json`, 'utf-8') - ).title; - - /** - * @type {Array<{ - * name: string; - * type: string; - * content: string; - * }>} - */ - const files = []; - for (const file of (await readdir(example_base_dir)).filter( - (file) => !file.endsWith('meta.json') - )) { - const type = file.split('.').at(-1); - if (!type) { - throw new Error(`Could not determine type from ${file}`); - } - files.push({ - name: file, - type, - content: await readFile(`${example_base_dir}/${file}`, 'utf-8') - }); - } - - section.examples.push({ title: example_title, slug, files }); - } - - examples.push(section); - } - - return examples; -} - -/** - * @param {import('./types').ExamplesData} examples_data - * @returns {import('./types').ExamplesList} - */ -export function get_examples_list(examples_data) { - return examples_data.map((section) => ({ - title: section.title, - examples: section.examples.map((example) => ({ - title: example.title, - slug: example.slug - })) - })); -} diff --git a/sites/svelte.dev/src/lib/server/examples/types.d.ts b/sites/svelte.dev/src/lib/server/examples/types.d.ts deleted file mode 100644 index 4be706354d..0000000000 --- a/sites/svelte.dev/src/lib/server/examples/types.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -export interface ExamplesDatum { - title: string; - slug: string; - examples: { - title: string; - slug: string; - files: { - content: string; - type: string; - name: string; - }[]; - }[]; -} - -export type ExamplesData = ExamplesDatum[]; - -export interface Example { - title: string; - slug: string; -} - -export interface ExampleSection { - title: string; - examples: Example[]; -} - -export type ExamplesList = ExampleSection[]; diff --git a/sites/svelte.dev/src/routes/(authed)/+layout.server.js b/sites/svelte.dev/src/routes/(authed)/+layout.server.js deleted file mode 100644 index 4a0c545f5d..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/+layout.server.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as session from '$lib/db/session'; - -/** @type {import('@sveltejs/adapter-vercel').Config} */ -export const config = { - runtime: 'nodejs18.x' // see https://github.com/sveltejs/svelte/pull/9136 -}; - -export async function load({ request }) { - return { - user: await session.from_cookie(request.headers.get('cookie')) - }; -} diff --git a/sites/svelte.dev/src/routes/(authed)/+layout.svelte b/sites/svelte.dev/src/routes/(authed)/+layout.svelte deleted file mode 100644 index b3c90243eb..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/+layout.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/sites/svelte.dev/src/routes/(authed)/apps/+page.server.js b/sites/svelte.dev/src/routes/(authed)/apps/+page.server.js deleted file mode 100644 index a85cb5796b..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/apps/+page.server.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as gist from '$lib/db/gist'; - -export async function load({ url, parent }) { - let gists = []; - let next = null; - - const search = url.searchParams.get('search'); - - const { user } = await parent(); - - if (user) { - const offset_param = url.searchParams.get('offset'); - const offset = offset_param ? parseInt(offset_param) : 0; - const search = url.searchParams.get('search'); - - ({ gists, next } = await gist.list(user, { offset, search })); - } - - return { user, gists, next, search }; -} diff --git a/sites/svelte.dev/src/routes/(authed)/apps/+page.svelte b/sites/svelte.dev/src/routes/(authed)/apps/+page.svelte deleted file mode 100644 index 64a6c1d6a1..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/apps/+page.svelte +++ /dev/null @@ -1,328 +0,0 @@ - - - - Your apps • Svelte - - -
- {#if data.user} -
-

Your apps

-
- {data.user.github_name || data.user.github_login} avatar - - {data.user.github_name || data.user.github_login} - (log out) - -
-
- -
- {#if selected.length > 0} - - - - {:else} -
{ - const search = new FormData(/** @type {HTMLFormElement} */ (e.target)).get('search'); - goto(search ? `/apps?search=${encodeURIComponent(search.toString())}` : '/apps'); - }} - > - -
- {/if} -
- - {#if data.gists.length > 0} - - - - {:else} -

No apps here. Go make one!

- {/if} - {:else} -

- Please log in to see your saved apps. -

- {/if} -
- - diff --git a/sites/svelte.dev/src/routes/(authed)/apps/destroy/+server.js b/sites/svelte.dev/src/routes/(authed)/apps/destroy/+server.js deleted file mode 100644 index d898111a60..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/apps/destroy/+server.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as session from '$lib/db/session'; -import * as gist from '$lib/db/gist'; - -export async function POST({ request }) { - const user = await session.from_cookie(request.headers.get('cookie')); - if (!user) return new Response(undefined, { status: 401 }); - - const body = await request.json(); - await gist.destroy(user.id, body.ids); - - return new Response(undefined, { status: 204 }); -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/+page.js b/sites/svelte.dev/src/routes/(authed)/repl/+page.js deleted file mode 100644 index c6e63444fd..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/+page.js +++ /dev/null @@ -1,21 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load({ url }) { - const query = url.searchParams; - const gist = query.get('gist'); - const example = query.get('example'); - const version = query.get('version'); - const vim = query.get('vim'); - - // redirect to v2 REPL if appropriate - if (version && /^[^>]?[12]/.test(version)) { - redirect(302, `https://v2.svelte.dev/repl?${query}`); - } - - const id = gist || example || 'hello-world'; - // we need to filter out null values - const q = new URLSearchParams(); - if (version) q.set('version', version); - if (vim) q.set('vim', vim); - redirect(301, `/repl/${id}?${q}`); -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/+page.svelte b/sites/svelte.dev/src/routes/(authed)/repl/+page.svelte deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js deleted file mode 100644 index b130a6663c..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js +++ /dev/null @@ -1,18 +0,0 @@ -import { browser } from '$app/environment'; - -export function load({ data, url }) { - // initialize vim with the search param - const vim_search_params = url.searchParams.get('vim'); - let vim = vim_search_params !== null && vim_search_params !== 'false'; - // when in the browser check if there's a local storage entry and eventually override - // vim if there's not a search params otherwise update the local storage - if (browser) { - const vim_local_storage = window.localStorage.getItem('svelte:vim-enabled'); - if (vim_search_params !== null) { - window.localStorage.setItem('svelte:vim-enabled', vim.toString()); - } else if (vim_local_storage) { - vim = vim_local_storage !== 'false'; - } - } - return { ...data, vim }; -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.server.js b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.server.js deleted file mode 100644 index 62d5d419dd..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.server.js +++ /dev/null @@ -1,16 +0,0 @@ -import { error } from '@sveltejs/kit'; - -export async function load({ fetch, params, url }) { - const res = await fetch(`/repl/api/${params.id}.json`); - - if (!res.ok) { - error(/** @type {import('@sveltejs/kit').NumericRange<400, 599>} */(res.status)); - } - - const gist = await res.json(); - - return { - gist, - version: url.searchParams.get('version') || '4' - }; -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte deleted file mode 100644 index 02694bef33..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte +++ /dev/null @@ -1,151 +0,0 @@ - - - - {name} • REPL • Svelte - - - - - - -
- - - {#if browser} - - {/if} -
- - diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/AppControls.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/AppControls.svelte deleted file mode 100644 index fd14487d6d..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/AppControls.svelte +++ /dev/null @@ -1,339 +0,0 @@ - - - - -
- e.target.select()} - use:enter={(e) => /** @type {HTMLInputElement} */ (e.target).blur()} - /> - -
- - - - - - - - - {#if user} - - {:else} - - {/if} -
-
- - diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/UserMenu.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/UserMenu.svelte deleted file mode 100644 index 5449191a30..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/UserMenu.svelte +++ /dev/null @@ -1,134 +0,0 @@ - - -
(showMenu = false)} - use:click_outside={() => (showMenu = false)} -> - - - {#if showMenu} - - {/if} -
- - diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/downloadBlob.js b/sites/svelte.dev/src/routes/(authed)/repl/[id]/downloadBlob.js deleted file mode 100644 index 5815e2217b..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/downloadBlob.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @param {Blob} blob - * @param {string} filename - */ -export default (blob, filename) => { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = filename; - link.style.display = 'none'; - document.body.appendChild(link); - link.click(); - URL.revokeObjectURL(url); - link.remove(); -}; diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.server.js b/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.server.js deleted file mode 100644 index f9d55d0846..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.server.js +++ /dev/null @@ -1,16 +0,0 @@ -import { error } from '@sveltejs/kit'; - -export async function load({ fetch, params, url }) { - const res = await fetch(`/repl/api/${params.id}.json`); - - if (!res.ok) { - throw error(/** @type {any} */ (res.status)); - } - - const gist = await res.json(); - - return { - gist, - version: url.searchParams.get('version') || '4' - }; -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.svelte deleted file mode 100644 index 7592c53c24..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/embed/+page.svelte +++ /dev/null @@ -1,92 +0,0 @@ - - - - {data.gist.name} • REPL • Svelte - - - - - - -
- {#if browser} - - {/if} -
- - diff --git a/sites/svelte.dev/src/routes/(authed)/repl/api/[id].json/+server.js b/sites/svelte.dev/src/routes/(authed)/repl/api/[id].json/+server.js deleted file mode 100644 index f0854a819a..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/api/[id].json/+server.js +++ /dev/null @@ -1,93 +0,0 @@ -import { dev } from '$app/environment'; -import { client } from '$lib/db/client.js'; -import * as gist from '$lib/db/gist.js'; -import examples_data from '$lib/generated/examples-data.js'; -import { get_example, get_examples_list } from '$lib/server/examples/index.js'; -import { error, json } from '@sveltejs/kit'; - -export const prerender = 'auto'; - -const UUID_REGEX = /^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/; - - -/** @param {import('$lib/server/examples/types').ExamplesData[number]['examples'][number]['files'][number][]} files */ -function munge(files) { - return files - .map((file) => { - const dot = file.name.lastIndexOf('.'); - let name = file.name.slice(0, dot); - let type = file.name.slice(dot + 1); - - if (type === 'html') type = 'svelte'; - // @ts-expect-error what is file.source? by @PuruVJ - return { name, type, source: file.source ?? file.content ?? '' }; - }) - .sort((a, b) => { - if (a.name === 'App' && a.type === 'svelte') return -1; - if (b.name === 'App' && b.type === 'svelte') return 1; - - if (a.type !== b.type) return a.type === 'svelte' ? -1 : 1; - - return a.name < b.name ? -1 : 1; - }); -} - -export async function GET({ params }) { - // Currently, these pages(that are in examples/) are prerendered. To avoid making any FS requests, - // We prerender examples pages during build time. That means, when something like `/repl/hello-world.json` - // is accessed, this function won't be run at all, as it will be served from the filesystem - - const example = get_example(examples_data, params.id); - if (example) { - return json({ - id: params.id, - name: example.title, - owner: null, - relaxed: false, // TODO is this right? EDIT: It was example.relaxed before, which no example return to my knowledge. By @PuruVJ - components: munge(example.files) - }); - } - - if (dev && !client) { - // in dev with no local Supabase configured, proxy to production - // this lets us at least load saved REPLs - const res = await fetch(`https://svelte.dev/repl/api/${params.id}.json`); - - // returning the response directly results in a bizarre - // content encoding error, so we create a new one - return new Response(await res.text(), { - status: res.status, - headers: { - 'content-type': 'application/json' - } - }); - } - - if (!UUID_REGEX.test(params.id)) { - error(404); - } - - const app = await gist.read(params.id); - - if (!app) { - error(404, 'not found'); - } - - return json({ - id: params.id, - name: app.name, - // @ts-ignore - owner: app.userid, - relaxed: false, - // @ts-expect-error app.files has a `source` property - components: munge(app.files) - }); -} - -export async function entries() { - const { get_examples_list } = await import('$lib/server/examples/index.js'); - - return get_examples_list(examples_data) - .map(({ examples }) => examples) - .flatMap((val) => val.map(({ slug }) => ({ id: slug }))); -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/create.json/+server.js b/sites/svelte.dev/src/routes/(authed)/repl/create.json/+server.js deleted file mode 100644 index e7794ffbf2..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/create.json/+server.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as gist from '$lib/db/gist'; -import * as session from '$lib/db/session'; -import { error, json } from '@sveltejs/kit'; - -export async function POST({ request }) { - const user = await session.from_cookie(request.headers.get('cookie')); - if (!user) error(401); - - const body = await request.json(); - const result = await gist.create(user, body); - - // normalize id - result.id = result.id.replace(/-/g, ''); - - return json(result, { - status: 201 - }); -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/embed/+page.server.js b/sites/svelte.dev/src/routes/(authed)/repl/embed/+page.server.js deleted file mode 100644 index d6f8ab11bb..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/embed/+page.server.js +++ /dev/null @@ -1,14 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load({ url }) { - if (!url.searchParams.has('gist')) { - throw redirect(301, '/repl/hello-world/embed'); - } else { - const searchParamsWithoutGist = new URLSearchParams(url.searchParams); - searchParamsWithoutGist.delete('gist'); - throw redirect( - 301, - `/repl/${url.searchParams.get('gist')}/embed?${searchParamsWithoutGist.toString()}` - ); - } -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/local/[...path]/+server.js b/sites/svelte.dev/src/routes/(authed)/repl/local/[...path]/+server.js deleted file mode 100644 index f141ee2021..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/local/[...path]/+server.js +++ /dev/null @@ -1,15 +0,0 @@ -import { env } from '$env/dynamic/private'; - -const local_svelte_path = env.LOCAL_SVELTE_PATH || '../../../svelte'; - -export async function GET({ params: { path } }) { - if (import.meta.env.PROD || ('/' + path).includes('/.')) { - return new Response(undefined, { status: 403 }); - } - - const { readFile } = await import('node:fs/promises'); - - return new Response(await readFile(`${local_svelte_path}/${path}`), { - headers: { 'Content-Type': 'text/javascript' } - }); -} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/save/[id].json/+server.js b/sites/svelte.dev/src/routes/(authed)/repl/save/[id].json/+server.js deleted file mode 100644 index f37f699432..0000000000 --- a/sites/svelte.dev/src/routes/(authed)/repl/save/[id].json/+server.js +++ /dev/null @@ -1,14 +0,0 @@ -import * as gist from '$lib/db/gist'; -import * as session from '$lib/db/session'; -import { error } from '@sveltejs/kit'; - -// TODO reimplement as an action -export async function PUT({ params, request }) { - const user = await session.from_cookie(request.headers.get('cookie')); - if (!user) error(401, 'Unauthorized'); - - const body = await request.json(); - await gist.update(user, params.id, body); - - return new Response(undefined, { status: 204 }); -} diff --git a/sites/svelte.dev/src/routes/+layout.svelte b/sites/svelte.dev/src/routes/+layout.svelte index a08469bed7..e5cf42a2ad 100644 --- a/sites/svelte.dev/src/routes/+layout.svelte +++ b/sites/svelte.dev/src/routes/+layout.svelte @@ -2,7 +2,7 @@ import '@sveltejs/site-kit/styles/index.css'; import { injectSpeedInsights } from '@vercel/speed-insights/sveltekit'; - import { inject } from '@vercel/analytics' + import { inject } from '@vercel/analytics'; import { browser } from '$app/environment'; import { page } from '$app/stores'; import { Icon, Shell, Banners } from '@sveltejs/site-kit/components'; @@ -58,9 +58,7 @@ - Tutorial - - SvelteKit + Current version diff --git a/sites/svelte.dev/src/routes/banner.json/+server.js b/sites/svelte.dev/src/routes/banner.json/+server.js index ffe27fd996..b9a2fe8977 100644 --- a/sites/svelte.dev/src/routes/banner.json/+server.js +++ b/sites/svelte.dev/src/routes/banner.json/+server.js @@ -9,29 +9,15 @@ export const GET = async () => { return json( defineBanner([ { - id: 'advent2023', + id: 'deprecated', start: new Date('1 Dec, 2023 00:00:00 UTC'), - end: new Date('24 Dec, 2023 23:59:59 UTC'), + end: new Date('24 Dec, 2050 23:59:59 UTC'), arrow: true, content: { - lg: 'Advent of Svelte 2023 is here!', - sm: 'Advent of Svelte' + lg: 'This documentation is for Svelte 3 and 4. Go to the latest docs.', + sm: 'These docs are for Svelte 3/4' }, - href: 'https://advent.sveltesociety.dev/' - }, - - // This one skips the blog post and just changes the link - { - id: 'advent2023-finished', - start: new Date('25 Dec, 2023 00:00:00 UTC'), - end: new Date('1 Jan, 2024 00:00:00 UTC'), - arrow: true, - content: { - lg: 'Advent of Svelte 2023 is over. See you next year!', - sm: 'Advent of Svelte 2023 is over!' - }, - href: 'https://advent.sveltesociety.dev/' - // scope: ['svelte.dev, kit.svelte.dev'] // Dont show on learn.svelte.dev by not adding it to the array + href: 'https://svelte.dev/' } ]) ); diff --git a/sites/svelte.dev/src/routes/blog/+page.server.js b/sites/svelte.dev/src/routes/blog/+page.server.js deleted file mode 100644 index 367fc36e70..0000000000 --- a/sites/svelte.dev/src/routes/blog/+page.server.js +++ /dev/null @@ -1,9 +0,0 @@ -import { get_blog_data, get_blog_list } from '$lib/server/blog/index.js'; - -export const prerender = true; - -export async function load() { - return { - posts: get_blog_list(await get_blog_data()) - }; -} diff --git a/sites/svelte.dev/src/routes/blog/+page.svelte b/sites/svelte.dev/src/routes/blog/+page.svelte deleted file mode 100644 index 39bd289603..0000000000 --- a/sites/svelte.dev/src/routes/blog/+page.svelte +++ /dev/null @@ -1,91 +0,0 @@ - - - - Blog • Svelte - - - - - - - -

Blog

-
- {#each data.posts as post} - {#if !post.draft} - - {/if} - {/each} -
- - diff --git a/sites/svelte.dev/src/routes/blog/[slug]/+page.server.js b/sites/svelte.dev/src/routes/blog/[slug]/+page.server.js deleted file mode 100644 index dc91f6a824..0000000000 --- a/sites/svelte.dev/src/routes/blog/[slug]/+page.server.js +++ /dev/null @@ -1,18 +0,0 @@ -import { get_blog_data, get_processed_blog_post } from '$lib/server/blog/index.js'; -import { error } from '@sveltejs/kit'; - -export const prerender = true; - -export async function load({ params }) { - const post = await get_processed_blog_post(await get_blog_data(), params.slug); - - if (!post) error(404); - - // forgive me — terrible hack necessary to get diffs looking sensible - // on the `runes` blog post - post.content = post.content.replace(/( )+/gm, (match) => ' '.repeat(match.length / 4)); - - return { - post - }; -} diff --git a/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte b/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte deleted file mode 100644 index bb13ba2a2e..0000000000 --- a/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte +++ /dev/null @@ -1,137 +0,0 @@ - - - - {data.post.title} - - - - - - - - - - -
-
-

{data.post.title}

-

{data.post.description}

- - - - - - {@html data.post.content} -
-
- - diff --git a/sites/svelte.dev/src/routes/blog/[slug]/card.png/+server.js b/sites/svelte.dev/src/routes/blog/[slug]/card.png/+server.js deleted file mode 100644 index ed8a177ce6..0000000000 --- a/sites/svelte.dev/src/routes/blog/[slug]/card.png/+server.js +++ /dev/null @@ -1,51 +0,0 @@ -import { get_blog_data, get_processed_blog_post } from '$lib/server/blog/index.js'; -import { Resvg } from '@resvg/resvg-js'; -import { error } from '@sveltejs/kit'; -import satori from 'satori'; -import { html as toReactNode } from 'satori-html'; -import Card from './Card.svelte'; -import OverpassRegular from './Overpass-Regular.ttf'; - -const height = 630; -const width = 1200; - -export const prerender = true; - -export async function GET({ params }) { - const post = await get_processed_blog_post(await get_blog_data(), params.slug); - - if (!post) error(404); - - // @ts-ignore - const result = Card.render({ post }); - const element = toReactNode(`${result.html}`); - - const svg = await satori(element, { - fonts: [ - { - name: 'Overpass', - data: Buffer.from(OverpassRegular), - style: 'normal', - weight: 400 - } - ], - height, - width - }); - - const resvg = new Resvg(svg, { - fitTo: { - mode: 'width', - value: width - } - }); - - const image = resvg.render(); - - return new Response(image.asPng(), { - headers: { - 'content-type': 'image/png', - 'cache-control': 'public, max-age=600' // cache for 10 minutes - } - }); -} diff --git a/sites/svelte.dev/src/routes/blog/[slug]/card.png/Card.svelte b/sites/svelte.dev/src/routes/blog/[slug]/card.png/Card.svelte deleted file mode 100644 index 5e433eeed3..0000000000 --- a/sites/svelte.dev/src/routes/blog/[slug]/card.png/Card.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -
- Svelte Machine - -
-

{post.title}

-

{post.date_formatted}

-
-
- - diff --git a/sites/svelte.dev/src/routes/blog/[slug]/card.png/Overpass-Regular.ttf b/sites/svelte.dev/src/routes/blog/[slug]/card.png/Overpass-Regular.ttf deleted file mode 100644 index 3b32102d83b9c9f3f56ad447c73ac8f837a9c9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169512 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': 'gt' - }; - - return html.replace(/["'&<>]/g, (c) => `&${chars[c]};`); -} - -/** @param {import('$lib/server/blog/types').BlogPostSummary[]} posts */ -const get_rss = (posts) => - ` - - - - - Svelte blog - https://svelte.dev/blog - News and information about the magical disappearing UI framework - - https://svelte.dev/favicon.png - Svelte - https://svelte.dev/blog - - ${posts - .filter((post) => !post.draft) - .map( - (post) => ` - - ${escapeHTML(post.title)} - https://svelte.dev/blog/${post.slug} - ${escapeHTML(post.description)} - ${formatPubdate(post.date)} - - ` - ) - .join('')} - - - -` - .replace(/>[^\S]+/gm, '>') - .replace(/[^\S]+ - - - - {data.example?.title} {data.example?.title ? '•' : ''} Svelte Examples - - - - - - -

Examples

-
-
- -
- -
-
- {#if mobile} - - {/if} -
- - diff --git a/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte b/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte deleted file mode 100644 index 1aa8a7965a..0000000000 --- a/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - -
    - {#each sections as section} - - {#if section.title !== 'Embeds'} -
  • - {section.title} - - {#each section.examples as example} -
    - - {example.title} thumbnail - - {example.title} - - {#if example.slug === active_section} - REPL - {/if} -
    - {/each} -
  • - {/if} - {/each} -
- - diff --git a/sites/svelte.dev/src/routes/examples/api/+server.js b/sites/svelte.dev/src/routes/examples/api/+server.js deleted file mode 100644 index 36107147ba..0000000000 --- a/sites/svelte.dev/src/routes/examples/api/+server.js +++ /dev/null @@ -1,8 +0,0 @@ -// @ts-check -import examples_data from '$lib/generated/examples-data.js'; -import { get_examples_list } from '$lib/server/examples/index.js'; -import { json } from '@sveltejs/kit'; - -export const GET = () => { - return json(get_examples_list(examples_data)); -}; diff --git a/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js b/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js deleted file mode 100644 index 5255475f2f..0000000000 --- a/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js +++ /dev/null @@ -1,26 +0,0 @@ -import examples_data from '$lib/generated/examples-data.js'; -import { get_example, get_examples_list } from '$lib/server/examples/index.js'; -import { error, json } from '@sveltejs/kit'; - -export const prerender = true; - -export const GET = ({ params }) => { - const examples = new Set( - get_examples_list(examples_data) - .map((category) => category.examples) - .flat() - .map((example) => example.slug) - ); - - if (!examples.has(params.slug)) error(404, 'Example not found'); - - return json(get_example(examples_data, params.slug)); -}; - -export async function entries() { - const examples_list = get_examples_list(examples_data); - - return examples_list - .map(({ examples }) => examples) - .flatMap((val) => val.map(({ slug }) => ({ slug }))); -} diff --git a/sites/svelte.dev/src/routes/faq/+server.js b/sites/svelte.dev/src/routes/faq/+server.js deleted file mode 100644 index 6f35cdc67e..0000000000 --- a/sites/svelte.dev/src/routes/faq/+server.js +++ /dev/null @@ -1,7 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export const prerender = true; - -export function GET() { - redirect(308, '/docs/faq'); -} diff --git a/sites/svelte.dev/src/routes/nav.json/+server.js b/sites/svelte.dev/src/routes/nav.json/+server.js index aa7c1eb069..ad2acb44b8 100644 --- a/sites/svelte.dev/src/routes/nav.json/+server.js +++ b/sites/svelte.dev/src/routes/nav.json/+server.js @@ -1,7 +1,5 @@ -import { get_blog_data, get_blog_list } from '$lib/server/blog/index.js'; import { get_docs_data, get_docs_list } from '$lib/server/docs/index.js'; -import { get_examples_list } from '$lib/server/examples/index.js'; -import examples_data from '$lib/generated/examples-data.js'; +import { get_tutorial_list, get_tutorial_data } from '$lib/server/tutorial/index.js'; import { json } from '@sveltejs/kit'; export const prerender = true; @@ -14,9 +12,9 @@ export const GET = async () => { * @returns {Promise} */ async function get_nav_list() { - const [docs_list, blog_list] = await Promise.all([ + const [docs_list, tutorial_list] = await Promise.all([ get_docs_list(await get_docs_data()), - get_blog_list(await get_blog_data()) + get_tutorial_list(await get_tutorial_data()) ]); const processed_docs_list = docs_list.map(({ title, pages }) => ({ @@ -24,25 +22,10 @@ async function get_nav_list() { sections: pages.map(({ title, path }) => ({ title, path })) })); - const processed_blog_list = [ - { - title: '', - sections: blog_list.map(({ title, slug, date }) => ({ - title, - path: '/blog/' + slug, - // Put a NEW badge on blog posts that are less than 14 days old - badge: (+new Date() - +new Date(date)) / (1000 * 60 * 60 * 24) < 14 ? 'NEW' : undefined - })) - } - ]; - - const examples_list = get_examples_list(examples_data); - const processed_examples_list = examples_list - .map(({ title, examples }) => ({ - title, - sections: examples.map(({ title, slug }) => ({ title, path: '/examples/' + slug })) - })) - .filter(({ title }) => title !== 'Embeds'); + const processed_tutorial_list = tutorial_list.map(({ title, tutorials }) => ({ + title, + sections: tutorials.map(({ title, slug }) => ({ title, path: '/tutorial/' + slug })) + })); return [ { @@ -57,31 +40,25 @@ async function get_nav_list() { ] }, { - title: 'Examples', - prefix: 'examples', - pathname: '/examples', + title: 'Tutorial', + prefix: 'tutorial', + pathname: '/tutorial', sections: [ { - title: 'EXAMPLES', - sections: processed_examples_list + title: 'TUTORIAL', + sections: processed_tutorial_list } ] }, { title: 'REPL', prefix: 'repl', - pathname: '/repl' + pathname: 'https://svelte.dev/playground' }, { title: 'Blog', prefix: 'blog', - pathname: '/blog', - sections: [ - { - title: 'BLOG', - sections: processed_blog_list - } - ] + pathname: 'https://svelte.dev/blog' } ]; } diff --git a/sites/svelte.dev/src/routes/roadmap/+page.js b/sites/svelte.dev/src/routes/roadmap/+page.js deleted file mode 100644 index 2010d73c9f..0000000000 --- a/sites/svelte.dev/src/routes/roadmap/+page.js +++ /dev/null @@ -1,8 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load() { - redirect( - 307, - 'https://docs.google.com/document/d/1IA9Z5rcIm_KRxvh_L42d2NDdYRHZ72MfszhyJrsmf5A' - ); -} diff --git a/sites/svelte.dev/src/routes/stopwar.svg b/sites/svelte.dev/src/routes/stopwar.svg deleted file mode 100644 index 6e497c2c79..0000000000 --- a/sites/svelte.dev/src/routes/stopwar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file