Use entries

pull/8570/head
Puru Vijay 3 years ago
parent 6eba8e48cb
commit 5ae46413fa

@ -1,10 +1,10 @@
import { dev } from '$app/environment'; import { dev } from '$app/environment';
import { client } from '$lib/db/client'; import { client } from '$lib/db/client';
import * as gist from '$lib/db/gist'; import * as gist from '$lib/db/gist';
import examples_data from '$lib/generated/examples-data.js';
import { get_example } from '$lib/server/examples'; import { get_example } from '$lib/server/examples';
import { 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 '$lib/generated/examples-data.js';
export const prerender = 'auto'; export const prerender = 'auto';
@ -87,9 +87,17 @@ export async function GET({ params }) {
return json({ return json({
id: params.id, id: params.id,
name: app.name, name: app.name,
// @ts-ignore
owner: app.userid, owner: app.userid,
relaxed: false, relaxed: false,
// @ts-expect-error app.files has a `source` property // @ts-expect-error app.files has a `source` property
components: munge(app.files) components: munge(app.files)
}); });
} }
/** @type {import('./$types.js').EntryGenerator} */
export async function entries() {
return get_examples_list(get_examples_data())
.map(({ examples }) => examples)
.flatMap((val) => val.map(({ slug }) => ({ id: slug + '.json' })));
}

@ -15,11 +15,3 @@ export async function load({ params }) {
slug: params.slug slug: params.slug
}; };
} }
/** @type {import('./$types').EntryGenerator} */
export async function entries() {
const examples_list = get_examples_list(get_examples_data());
return examples_list
.map(({ examples }) => examples)
.flatMap((val) => val.map(({ slug }) => ({ slug })));
}

@ -1,6 +1,6 @@
import examples_data from '$lib/generated/examples-data.js'; import examples_data from '$lib/generated/examples-data.js';
import { get_example } from '$lib/server/examples'; import { get_example } from '$lib/server/examples';
import { 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';
export const prerender = true; export const prerender = true;
@ -17,3 +17,10 @@ export const GET = ({ params }) => {
return json(get_example(examples_data, params.slug)); return json(get_example(examples_data, params.slug));
}; };
export async function entries() {
const examples_list = get_examples_list(get_examples_data());
return examples_list
.map(({ examples }) => examples)
.flatMap((val) => val.map(({ slug }) => ({ slug: slug + '.json' })));
}

@ -18,3 +18,10 @@ export async function load({ params }) {
slug: params.slug slug: params.slug
}; };
} }
export async function entries() {
const tutorials_list = get_tutorial_list(get_tutorial_data());
return tutorials_list
.map(({ tutorials }) => tutorials)
.flatMap((val) => val.map(({ slug }) => ({ slug })));
}

@ -1,39 +1,9 @@
// @ts-check // @ts-check
import adapter from '@sveltejs/adapter-vercel'; import adapter from '@sveltejs/adapter-vercel';
import { get_examples_data, get_examples_list } from './src/lib/server/examples/get-examples.js';
import { get_tutorial_data, get_tutorial_list } from './src/lib/server/tutorial/get-tutorial.js';
/** @type {import('@sveltejs/kit').Config} */ /** @type {import('@sveltejs/kit').Config} */
export default { export default {
kit: { kit: {
adapter: adapter(), adapter: adapter()
prerender: {
// TODO use route entries instead, once https://github.com/sveltejs/kit/pull/9571 is merged
entries: ['*', ...repl_json_entries(), ...tutorial_entries(), ...examples_json_entries()]
}
} }
}; };
function repl_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}`)} */ (`/repl/${slug}.json`))
);
}
function tutorial_entries() {
return get_tutorial_list(
get_tutorial_data(new URL('../../site/content/tutorial', import.meta.url).pathname)
).flatMap(({ tutorials }) =>
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