Prerender examples api routes

pull/8435/head
Puru Vijay 3 years ago
parent cddd7651c8
commit 8a885bfe47

@ -19,7 +19,8 @@ export function get_examples_data(base = BASE) {
if (!(fs.statSync(`${base}/${subdir}`).isDirectory() || subdir.endsWith('meta.json'))) continue;
if (!subdir.endsWith('meta.json'))
section.title = JSON.parse(fs.readFileSync(`${base}/${subdir}/meta.json`, 'utf-8')).title;
section.title =
JSON.parse(fs.readFileSync(`${base}/${subdir}/meta.json`, 'utf-8')).title ?? 'Embeds';
for (const section_dir of fs.readdirSync(`${base}/${subdir}`)) {
const match = /\d{2}-(.+)/.exec(section_dir);

@ -14,7 +14,8 @@
<ul class="examples-toc">
{#each sections as section}
{#if section.title !== undefined}
<!-- Avoid embeds -->
{#if section.title !== 'Embeds'}
<li>
<span class="section-title">{section.title}</span>

@ -3,6 +3,8 @@ import { get_example } from '$lib/server/examples';
import { get_examples_list } from '$lib/server/examples/get-examples';
import { error, json } from '@sveltejs/kit';
export const prerender = true;
export const GET = ({ params }) => {
const examples = new Set(
get_examples_list(examples_data)

@ -9,7 +9,7 @@ export default {
adapter: adapter(),
prerender: {
// TODO use route entries instead, once https://github.com/sveltejs/kit/pull/9571 is merged
entries: ['*', ...repl_json_entries(), ...tutorial_entries()]
entries: ['*', ...repl_json_entries(), ...tutorial_entries(), ...examples_json_entries()]
}
}
};
@ -29,3 +29,11 @@ function tutorial_entries() {
tutorials.map(({ slug }) => /** @type {(`/${string}`)} */ (`/tutorial/${slug}`))
);
}
function examples_json_entries() {
return get_examples_list(
get_examples_data(new URL('../../site/content/examples', import.meta.url).pathname)
).flatMap(({ examples }) =>
examples.map(({ slug }) => /** @type {(`/${string}`)} */ (`/examples/api/${slug}.json`))
);
}

Loading…
Cancel
Save