diff --git a/__tests__/e2e/dynamic-routes/[id].paths.ts b/__tests__/e2e/dynamic-routes/[id].paths.ts index a5036936..12a8bc32 100644 --- a/__tests__/e2e/dynamic-routes/[id].paths.ts +++ b/__tests__/e2e/dynamic-routes/[id].paths.ts @@ -1,14 +1,14 @@ -import type { PageData } from 'client/shared' +import { defineRoutes } from 'vitepress' import paths from './paths' -export default { +export default defineRoutes({ async paths(watchedFiles: string[]) { - console.log('watchedFiles', watchedFiles) + // console.log('watchedFiles', watchedFiles) return paths }, watch: ['**/data-loading/**/*.json'], - async transformPageData(pageData: PageData) { - console.log('transformPageData', pageData.filePath) + async transformPageData(pageData) { + // console.log('transformPageData', pageData.filePath) pageData.title += ' - transformed' } -} +}) diff --git a/src/node/index.ts b/src/node/index.ts index 63ee79f8..5f3980be 100644 --- a/src/node/index.ts +++ b/src/node/index.ts @@ -5,6 +5,11 @@ export * from './contentLoader' export * from './init/init' export * from './markdown/markdown' export { defineLoader, type LoaderModule } from './plugins/staticDataPlugin' +export { + defineRoutes, + type ResolvedRouteConfig, + type RouteModule +} from './plugins/dynamicRoutesPlugin' export * from './postcss/isolateStyles' export * from './serve/serve' export * from './server' diff --git a/src/node/plugins/dynamicRoutesPlugin.ts b/src/node/plugins/dynamicRoutesPlugin.ts index 38909916..a480d898 100644 --- a/src/node/plugins/dynamicRoutesPlugin.ts +++ b/src/node/plugins/dynamicRoutesPlugin.ts @@ -44,13 +44,14 @@ export interface RouteModule { paths: | UserRouteConfig[] | ((watchedFiles: string[]) => Awaitable) + transformPageData?: UserConfig['transformPageData'] } interface ResolvedRouteModule { watch: string[] | undefined routes: ResolvedRouteConfig[] | undefined loader: RouteModule['paths'] - transformPageData?: UserConfig['transformPageData'] + transformPageData?: RouteModule['transformPageData'] } const dynamicRouteRE = /\[(\w+?)\]/g @@ -59,6 +60,13 @@ const pathLoaderRE = /\.paths\.m?[jt]s$/ const routeModuleCache = new Map() let moduleGraph = new ModuleGraph() +/** + * Helper for defining routes with type inference + */ +export function defineRoutes(loader: RouteModule) { + return loader +} + export async function resolvePages( srcDir: string, userConfig: UserConfig,