From 777e2caaacd93ce41b046f6c9d5ba80cc43ba37c Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Fri, 8 Aug 2025 22:47:57 +0530 Subject: [PATCH 1/2] fix(types): pass generics deeply to user config --- src/node/siteConfig.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/node/siteConfig.ts b/src/node/siteConfig.ts index 99751d5e..e27bbce1 100644 --- a/src/node/siteConfig.ts +++ b/src/node/siteConfig.ts @@ -23,9 +23,9 @@ export type RawConfigExports = | Awaitable> | (() => Awaitable>) -export interface TransformContext { +export interface TransformContext { page: string - siteConfig: SiteConfig + siteConfig: SiteConfig siteData: SiteData pageData: PageData title: string @@ -35,8 +35,8 @@ export interface TransformContext { assets: string[] } -export interface TransformPageContext { - siteConfig: SiteConfig +export interface TransformPageContext { + siteConfig: SiteConfig } export interface UserConfig @@ -161,7 +161,7 @@ export interface UserConfig * Build end hook: called when SSG finish. * @param siteConfig The resolved configuration. */ - buildEnd?: (siteConfig: SiteConfig) => Awaitable + buildEnd?: (siteConfig: SiteConfig) => Awaitable /** * Render end hook: called when SSR rendering is done. @@ -173,7 +173,9 @@ export interface UserConfig * * This build hook will allow you to modify the head adding new entries that cannot be statically added. */ - transformHead?: (context: TransformContext) => Awaitable + transformHead?: ( + ctx: TransformContext + ) => Awaitable /** * HTML transform hook: runs before writing HTML to dist. @@ -181,7 +183,7 @@ export interface UserConfig transformHtml?: ( code: string, id: string, - ctx: TransformContext + ctx: TransformContext ) => Awaitable /** @@ -189,7 +191,7 @@ export interface UserConfig */ transformPageData?: ( pageData: PageData, - ctx: TransformPageContext + ctx: TransformPageContext ) => Awaitable | { [key: string]: any } | void> /** @@ -207,7 +209,7 @@ export interface UserConfig export interface SiteConfig extends Pick< - UserConfig, + UserConfig, | 'markdown' | 'vue' | 'vite' @@ -243,6 +245,6 @@ export interface SiteConfig inv: Record } logger: Logger - userConfig: UserConfig + userConfig: UserConfig buildConcurrency: number } From 318c14fa7c9fb949d74b7d9fae416e917766cf05 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 9 Aug 2025 01:06:32 +0530 Subject: [PATCH 2/2] fix: make paths in `watchedFiles` absolute as mentioned in the docs --- __tests__/e2e/dynamic-routes/[id].paths.ts | 2 +- src/node/contentLoader.ts | 5 ++++- src/node/plugins/dynamicRoutesPlugin.ts | 5 ++++- src/node/plugins/staticDataPlugin.ts | 5 ++++- src/node/utils/glob.ts | 1 + 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/__tests__/e2e/dynamic-routes/[id].paths.ts b/__tests__/e2e/dynamic-routes/[id].paths.ts index 12a8bc32..a1cb6fef 100644 --- a/__tests__/e2e/dynamic-routes/[id].paths.ts +++ b/__tests__/e2e/dynamic-routes/[id].paths.ts @@ -6,7 +6,7 @@ export default defineRoutes({ // console.log('watchedFiles', watchedFiles) return paths }, - watch: ['**/data-loading/**/*.json'], + watch: ['../data-loading/**/*.json'], async transformPageData(pageData) { // console.log('transformPageData', pageData.filePath) pageData.title += ' - transformed' diff --git a/src/node/contentLoader.ts b/src/node/contentLoader.ts index 7b32b619..406dcf6d 100644 --- a/src/node/contentLoader.ts +++ b/src/node/contentLoader.ts @@ -95,7 +95,10 @@ export function createContentLoader( async load(files?: string[]) { // the loader is being called directly, do a fresh glob - files = files ?? (await glob(watch, options.globOptions)) + files ??= await glob(watch, { + absolute: true, + ...options.globOptions + }) const md = await createMarkdownRenderer( config.srcDir, diff --git a/src/node/plugins/dynamicRoutesPlugin.ts b/src/node/plugins/dynamicRoutesPlugin.ts index 70294e1d..afc68be5 100644 --- a/src/node/plugins/dynamicRoutesPlugin.ts +++ b/src/node/plugins/dynamicRoutesPlugin.ts @@ -308,7 +308,10 @@ async function resolveDynamicRoutes( let pathsData: UserRouteConfig[] if (typeof loader === 'function') { - const watchedFiles = await glob(watch, options.globOptions) + const watchedFiles = await glob(watch, { + absolute: true, + ...options.globOptions + }) pathsData = await loader(watchedFiles) } else { pathsData = loader diff --git a/src/node/plugins/staticDataPlugin.ts b/src/node/plugins/staticDataPlugin.ts index 05065c27..5f8f260b 100644 --- a/src/node/plugins/staticDataPlugin.ts +++ b/src/node/plugins/staticDataPlugin.ts @@ -97,7 +97,10 @@ export const staticDataPlugin: Plugin = { } // load the data - const watchedFiles = await glob(watch, options.globOptions) + const watchedFiles = await glob(watch, { + absolute: true, + ...options.globOptions + }) const data = await load(watchedFiles) // record loader module for HMR diff --git a/src/node/utils/glob.ts b/src/node/utils/glob.ts index 53b11b4b..cd7c2e34 100644 --- a/src/node/utils/glob.ts +++ b/src/node/utils/glob.ts @@ -3,6 +3,7 @@ import { glob as _glob } from 'tinyglobby' import { normalizePath } from 'vite' export interface GlobOptions { + absolute?: boolean cwd?: string ignore?: string | string[] dot?: boolean