Try the pre-generate route

pull/8432/head
Puru Vijay 3 years ago
parent 5e6d6f5340
commit 67980b9171

@ -10,3 +10,4 @@
/src/routes/_components/Supporters/donors.jpg /src/routes/_components/Supporters/donors.jpg
/src/routes/_components/Supporters/donors.js /src/routes/_components/Supporters/donors.js
.vercel .vercel
examples-data.js

@ -1,57 +1,57 @@
{ {
"name": "svelte.dev", "name": "svelte.dev",
"version": "1.0.0", "version": "1.0.0",
"description": "Docs and examples for Svelte", "description": "Docs and examples for Svelte",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "node scripts/update.js && vite dev", "dev": "node scripts/generate_examples.js && node scripts/update.js && vite dev",
"build": "node scripts/update.js && vite build", "build": "node scripts/generate_examples.js && node scripts/update.js && vite build",
"update": "node scripts/update.js --force=true", "update": "node scripts/update.js --force=true",
"preview": "vite preview", "preview": "vite preview",
"start": "node build", "start": "node build",
"check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch",
"format": "npm run check:format -- --write", "format": "npm run check:format -- --write",
"check:format": "prettier --check . --ignore-path .gitignore --plugin-search-dir=.", "check:format": "prettier --check . --ignore-path .gitignore --plugin-search-dir=.",
"test": "uvu -r ts-node/register src/lib/server/markdown" "test": "uvu -r ts-node/register src/lib/server/markdown"
}, },
"dependencies": { "dependencies": {
"@supabase/supabase-js": "^2.11.0", "@supabase/supabase-js": "^2.11.0",
"@sveltejs/adapter-vercel": "^2.4.1", "@sveltejs/adapter-vercel": "^2.4.1",
"@sveltejs/repl": "^0.2.0", "@sveltejs/repl": "^0.2.0",
"cookie": "^0.5.0", "cookie": "^0.5.0",
"devalue": "^4.3.0", "devalue": "^4.3.0",
"do-not-zip": "^1.0.0", "do-not-zip": "^1.0.0",
"flexsearch": "^0.7.31", "flexsearch": "^0.7.31",
"flru": "^1.0.2", "flru": "^1.0.2",
"sourcemap-codec": "^1.4.8", "sourcemap-codec": "^1.4.8",
"svelte-local-storage-store": "^0.4.0" "svelte-local-storage-store": "^0.4.0"
}, },
"devDependencies": { "devDependencies": {
"@resvg/resvg-js": "^2.4.1", "@resvg/resvg-js": "^2.4.1",
"@sveltejs/kit": "^1.12.0", "@sveltejs/kit": "^1.12.0",
"@sveltejs/site-kit": "^3.3.6", "@sveltejs/site-kit": "^3.3.6",
"@sveltejs/vite-plugin-svelte": "^2.0.3", "@sveltejs/vite-plugin-svelte": "^2.0.3",
"@types/marked": "^4.0.8", "@types/marked": "^4.0.8",
"@types/prismjs": "^1.26.0", "@types/prismjs": "^1.26.0",
"degit": "^2.8.4", "degit": "^2.8.4",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"jimp": "^0.22.7", "jimp": "^0.22.7",
"marked": "^4.2.12", "marked": "^4.2.12",
"node-fetch": "^3.3.1", "node-fetch": "^3.3.1",
"prettier": "^2.8.4", "prettier": "^2.8.4",
"prettier-plugin-svelte": "^2.9.0", "prettier-plugin-svelte": "^2.9.0",
"prism-svelte": "^0.5.0", "prism-svelte": "^0.5.0",
"prismjs": "^1.29.0", "prismjs": "^1.29.0",
"satori": "^0.4.3", "satori": "^0.4.3",
"satori-html": "^0.3.2", "satori-html": "^0.3.2",
"shelljs": "^0.8.5", "shelljs": "^0.8.5",
"shiki": "^0.14.1", "shiki": "^0.14.1",
"shiki-twoslash": "^3.1.1", "shiki-twoslash": "^3.1.1",
"svelte": "^3.57.0", "svelte": "^3.57.0",
"svelte-check": "^3.1.4", "svelte-check": "^3.1.4",
"typescript": "^5.0.2", "typescript": "^5.0.2",
"vite": "^4.2.0", "vite": "^4.2.0",
"vite-imagetools": "^4.0.18" "vite-imagetools": "^4.0.18"
} }
} }

@ -0,0 +1,11 @@
import { get_examples_data } from '../src/lib/server/examples/get-examples.js';
import fs from 'node:fs';
const examples_data = get_examples_data(
new URL('../../../site/content/examples', import.meta.url).pathname
);
fs.writeFileSync(
new URL('../src/routes/(authed)/repl/[id].json/examples-data.js', import.meta.url),
`export default ${JSON.stringify(examples_data)}`
);

@ -2,6 +2,6 @@ import * as session from '$lib/db/session';
export async function load({ request }) { export async function load({ request }) {
return { return {
user: await session.from_cookie(request.headers.get('cookie')) user: session.from_cookie(request.headers.get('cookie')),
}; };
} }

@ -4,6 +4,7 @@ import * as gist from '$lib/db/gist';
import { get_example } from '$lib/server/examples'; import { get_example } from '$lib/server/examples';
import { get_examples_data, get_examples_list } from '$lib/server/examples/get-examples'; import { get_examples_data, get_examples_list } from '$lib/server/examples/get-examples';
import { error, json } from '@sveltejs/kit'; import { error, json } from '@sveltejs/kit';
import examples_data from './examples-data.js';
export const prerender = 'auto'; export const prerender = 'auto';
@ -39,28 +40,23 @@ export async function GET({ params }) {
// We prerender examples pages during build time. That means, when something like `/repl/hello-world.json` // 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 // is accessed, this function won't be run at all, as it will be served from the filesystem
try { examples = new Set(
const examples_data = get_examples_data(); get_examples_list(examples_data)
examples = new Set( .map((category) => category.examples)
get_examples_list(examples_data) .flat()
.map((category) => category.examples) .map((example) => example.slug)
.flat() );
.map((example) => example.slug)
); if (examples.has(params.id)) {
const example = get_example(examples_data, params.id);
if (examples.has(params.id)) {
const example = get_example(examples_data, params.id); return json({
id: params.id,
return json({ name: example.title,
id: params.id, owner: null,
name: example.title, relaxed: false, // TODO is this right? EDIT: It was example.relaxed before, which no example return to my knowledge. By @PuruVJ
owner: null, components: munge(example.files),
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),
});
}
} catch (e) {
console.warn('Cant use filesystem');
} }
if (dev && !client) { if (dev && !client) {

Loading…
Cancel
Save