update: add config type helper, clean up code

pull/4660/head
Yuxuan Zhang 6 months ago
parent 7211246399
commit f5bdd2bbca
No known key found for this signature in database
GPG Key ID: 6910B04F3351EF7D

@ -77,7 +77,7 @@ function debugConfigLayers(path: string, layers: SiteData[]): SiteData[] {
const summary = layers.map((c, i, arr) => {
const n = i + 1
if (n === arr.length) return `${n}. .vitepress/config (root)`
return `${n}. ${(c as any)?.VP_SOURCE ?? '(Unknown Source)'}`
return `${n}. ${(c as any)?.['[VP_SOURCE]'] ?? '(Unknown Source)'}`
})
console.debug(
[summaryTitle, ''.padEnd(summaryTitle.length, '='), ...summary].join('\n')

@ -14,7 +14,10 @@ import type {
SSGContext,
SiteData
} from './shared'
import type { AdditionalConfig } from '../../types/shared'
import type {
AdditionalConfigDict,
AdditionalConfigLoader
} from '../../types/shared'
export type RawConfigExports<ThemeConfig = any> =
| Awaitable<UserConfig<ThemeConfig>>
@ -194,7 +197,9 @@ export interface UserConfig<ThemeConfig = any>
* Multi-layer configuration overloading.
* Auto-resolves to docs/.../config.(ts|js|json) when unspecified.
*/
additionalConfig?: AdditionalConfig
additionalConfig?:
| AdditionalConfigDict<ThemeConfig>
| AdditionalConfigLoader<ThemeConfig>
}
export interface SiteConfig<ThemeConfig = any>

30
types/shared.d.ts vendored

@ -5,6 +5,14 @@ export type { DefaultTheme } from './default-theme.js'
export type Awaitable<T> = T | PromiseLike<T>
// Beware that this may cause performance issues or infinite loops
// Use only when absolutely necessary
export type DeepPartial<T> = T extends object
? {
[K in keyof T]?: DeepPartial<T[K]>
}
: T
export interface PageData {
relativePath: string
/**
@ -134,7 +142,9 @@ export interface SiteData<ThemeConfig = any> {
router: {
prefetchLinks: boolean
}
additionalConfig?: AdditionalConfig<ThemeConfig>
additionalConfig?:
| AdditionalConfigDict<ThemeConfig>
| AdditionalConfigLoader<ThemeConfig>
}
export type HeadConfig =
@ -162,26 +172,18 @@ export interface LocaleSpecificConfig<ThemeConfig = any> {
themeConfig?: ThemeConfig
}
export interface AdditionalConfigEntry<ThemeConfig = any>
extends LocaleSpecificConfig<ThemeConfig> {
/**
* Source of current config entry, only available in development mode
*/
src?: string
}
export type AdditionalConfig<ThemeConfig = any> = DeepPartial<
LocaleSpecificConfig<ThemeConfig>
>
export type AdditionalConfigDict<ThemeConfig = any> = Record<
string,
AdditionalConfigEntry<ThemeConfig>
AdditionalConfig<ThemeConfig>
>
export type AdditionalConfigLoader<ThemeConfig = any> = (
path: string
) => AdditionalConfigEntry<ThemeConfig>[]
export type AdditionalConfig<ThemeConfig = any> =
| AdditionalConfigDict<ThemeConfig>
| AdditionalConfigLoader<ThemeConfig>
) => AdditionalConfig<ThemeConfig>[]
export type LocaleConfig<ThemeConfig = any> = Record<
string,

Loading…
Cancel
Save