diff --git a/src/routes/[lesson]/[id]/+page.server.ts b/src/routes/[lesson]/[id]/+page.server.ts index 46802d2..d17cbd2 100644 --- a/src/routes/[lesson]/[id]/+page.server.ts +++ b/src/routes/[lesson]/[id]/+page.server.ts @@ -1,7 +1,7 @@ -import type { PageServerLoad } from "./$types"; -import { render } from 'svelte/server'; -import { rewriteTags } from "$lib/utils/rewrite"; +import type { EntryGenerator, PageServerLoad, RouteParams } from './$types'; import type { Component } from 'svelte'; +import { render } from 'svelte/server'; +import { rewriteTags } from '$lib/utils/rewrite'; interface PageModule { default: unknown; @@ -25,14 +25,14 @@ const loadPage = async (lesson: string, id: string) => { let renderHtml = render(pageModule as unknown as Component, {}); - const terms = await import(`\$lib/docs/${lesson}/terms/index.json`) + const terms = await import(`\$lib/docs/${lesson}/terms/index.json`); - renderHtml.body = rewriteTags(renderHtml.body, terms.default, lesson) + renderHtml.body = rewriteTags(renderHtml.body, terms.default, lesson); return { component: pageModule.default, html: renderHtml, - title: pageModule.metadata?.title || '', + title: pageModule.metadata?.title || '' }; }; @@ -45,7 +45,27 @@ export const load: PageServerLoad = async ({ params }) => { props: { lesson, id, - lessonHtml, + lessonHtml } }; -}; \ No newline at end of file +}; + +export const entries: EntryGenerator = async (): Promise> => { + const pagesAll = import.meta.glob('/src/lib/docs/*/lessons/*/index.svx', { eager: true }); + + // 重複しないキー("lesson/id" 形式)を作成 + const uniqueKeys: Record = Object.keys(pagesAll).reduce((acc, filePath) => { + const parts = filePath.split('/'); + const lesson = parts[4]; + const id = parts[6]; + const key = `${lesson}/${id}`; + acc[key] = true; + return acc; + }, {} as Record); + + // キーを分割してパラメーターオブジェクトを生成 + return Object.keys(uniqueKeys).map((key) => { + const [lesson, id] = key.split('/'); + return { lesson, id }; + }); +}; diff --git a/static/CNAME b/static/CNAME index 62ef77d..33851a9 100644 --- a/static/CNAME +++ b/static/CNAME @@ -1 +1 @@ -misc-lesson.f5.si \ No newline at end of file +misc-lessons.f5.si \ No newline at end of file