Skip to content

Commit 187aef3

Browse files
committed
refactor(core): remove theme data from site data
BREAKING CHANGE: `themeConfig` is not available in site data any more
1 parent e971e39 commit 187aef3

30 files changed

+239
-294
lines changed

packages/@vuepress/client/src/app.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ import {
2222
resolvePageLang,
2323
routeLocaleSymbol,
2424
resolveRouteLocale,
25-
themeDataSymbol,
26-
resolveThemeData,
27-
themeLocaleDataSymbol,
28-
resolveThemeLocaleData,
2925
siteLocaleDataSymbol,
3026
resolveSiteLocaleData,
3127
useUpdateHead,
@@ -108,10 +104,6 @@ export const createVueApp = async ({
108104
const siteLocaleData = computed(() =>
109105
resolveSiteLocaleData(siteData.value, routeLocale.value)
110106
)
111-
const themeData = computed(() => resolveThemeData(siteData.value))
112-
const themeLocaleData = computed(() =>
113-
resolveThemeLocaleData(siteLocaleData.value)
114-
)
115107
const pageFrontmatter = computed(() => resolvePageFrontmatter(pageData.value))
116108
const pageHeadTitle = computed(() =>
117109
resolvePageHeadTitle(pageData.value, siteLocaleData.value)
@@ -128,8 +120,6 @@ export const createVueApp = async ({
128120
// provide global computed
129121
app.provide(routeLocaleSymbol, routeLocale)
130122
app.provide(siteLocaleDataSymbol, siteLocaleData)
131-
app.provide(themeDataSymbol, themeData)
132-
app.provide(themeLocaleDataSymbol, themeLocaleData)
133123
app.provide(pageFrontmatterSymbol, pageFrontmatter)
134124
app.provide(pageHeadTitleSymbol, pageHeadTitle)
135125
app.provide(pageHeadSymbol, pageHead)
@@ -152,16 +142,6 @@ export const createVueApp = async ({
152142
return siteLocaleData.value
153143
},
154144
},
155-
$theme: {
156-
get() {
157-
return themeData.value
158-
},
159-
},
160-
$themeLocale: {
161-
get() {
162-
return themeLocaleData.value
163-
},
164-
},
165145
$page: {
166146
get() {
167147
return pageData.value

packages/@vuepress/client/src/injections/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export * from './pageHeadTitle'
55
export * from './pageLang'
66
export * from './pagesData'
77
export * from './routeLocale'
8-
export * from './themeData'
98
export * from './siteData'
109
export * from './siteLocaleData'
1110
export * from './updateHead'

packages/@vuepress/client/src/injections/siteData.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
import { readonly, ref } from 'vue'
22
import type { Ref } from 'vue'
3-
import type { SiteData, SiteThemeConfig } from '@vuepress/shared'
3+
import type { SiteData } from '@vuepress/shared'
44
import { siteData as siteDataRaw } from '@internal/siteData'
55

66
export type { SiteData }
7-
export type SiteDataRef<T extends SiteThemeConfig = SiteThemeConfig> = Ref<
8-
SiteData<T>
9-
>
7+
export type SiteDataRef = Ref<SiteData>
108

119
export const siteData: SiteDataRef = ref(readonly(siteDataRaw) as SiteData)
1210

13-
export const useSiteData = <
14-
T extends SiteThemeConfig = SiteThemeConfig
15-
>(): SiteDataRef<T> => {
16-
return siteData as SiteDataRef<T>
17-
}
11+
export const useSiteData = (): SiteDataRef => siteData
1812

1913
if (import.meta.webpackHot) {
2014
import.meta.webpackHot!.accept('@internal/siteData', () => {
Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,32 @@
11
import { inject } from 'vue'
22
import type { ComputedRef, InjectionKey } from 'vue'
3-
import type { SiteData, SiteThemeConfig } from '@vuepress/shared'
3+
import type { SiteData } from '@vuepress/shared'
44
import type { RouteLocale } from './routeLocale'
55

6-
export type SiteLocaleData<
7-
T extends SiteThemeConfig = SiteThemeConfig
8-
> = SiteData<T>
6+
export type SiteLocaleData = SiteData
97

10-
export type SiteLocaleDataRef<
11-
T extends SiteThemeConfig = SiteThemeConfig
12-
> = ComputedRef<SiteLocaleData<T>>
8+
export type SiteLocaleDataRef = ComputedRef<SiteLocaleData>
139

1410
export const siteLocaleDataSymbol: InjectionKey<SiteLocaleDataRef> = Symbol(
1511
__DEV__ ? 'siteLocaleData' : ''
1612
)
1713

18-
export const useSiteLocaleData = <
19-
T extends SiteThemeConfig = SiteThemeConfig
20-
>(): SiteLocaleDataRef<T> => {
14+
export const useSiteLocaleData = (): SiteLocaleDataRef => {
2115
const siteLocaleData = inject(siteLocaleDataSymbol)
2216
if (!siteLocaleData) {
2317
throw new Error('useSiteLocaleData() is called without provider.')
2418
}
25-
return siteLocaleData as SiteLocaleDataRef<T>
19+
return siteLocaleData
2620
}
2721

2822
/**
2923
* Merge the locales fields to the root fields
3024
* according to the route path
3125
*/
32-
export const resolveSiteLocaleData = <T extends SiteThemeConfig>(
33-
{ base, lang, title, description, head, locales, themeConfig }: SiteData<T>,
26+
export const resolveSiteLocaleData = (
27+
site: SiteData,
3428
routeLocale: RouteLocale
35-
): SiteLocaleData<T> => ({
36-
base,
37-
lang,
38-
title,
39-
description,
40-
head,
41-
locales,
42-
...(locales[routeLocale] ?? {}),
43-
themeConfig: {
44-
...themeConfig,
45-
...(themeConfig.locales?.[routeLocale] ?? {}),
46-
},
29+
): SiteLocaleData => ({
30+
...site,
31+
...site.locales[routeLocale],
4732
})

packages/@vuepress/client/src/injections/themeData.ts

Lines changed: 0 additions & 43 deletions
This file was deleted.

packages/@vuepress/core/src/app/createAppSiteData.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ export const createAppSiteData = (options: AppOptions): SiteData => {
1313
description: options.description,
1414
head: options.head,
1515
locales: options.locales,
16-
themeConfig: options.themeConfig,
1716
}
1817
}

packages/@vuepress/core/src/types/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import type {
1111
PageHeader,
1212
SiteData,
1313
SiteLocaleConfig,
14-
SiteThemeConfig,
1514
} from '@vuepress/shared'
1615

1716
export type {
@@ -27,7 +26,6 @@ export type {
2726
PageHeader,
2827
SiteData,
2928
SiteLocaleConfig,
30-
SiteThemeConfig,
3129
}
3230

3331
export * from './app'

packages/@vuepress/core/src/types/theme.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { LocaleData, SiteThemeConfig } from '@vuepress/shared'
21
import type { Plugin, PluginFunction, PluginObject } from './plugin'
32

43
/**
@@ -10,16 +9,15 @@ import type { Plugin, PluginFunction, PluginObject } from './plugin'
109
*
1110
* A theme package should have a `Theme` as the default export
1211
*/
13-
export type Theme<
14-
T extends Record<string, unknown> = Record<never, never>
15-
> = Plugin<T, ThemeObject>
12+
export type Theme<T extends ThemeConfig = ThemeConfig> = Plugin<T, ThemeObject>
1613

1714
/**
1815
* Vuepress theme function
1916
*/
20-
export type ThemeFunction<
21-
T extends Record<string, unknown> = Record<never, never>
22-
> = PluginFunction<T, ThemeObject>
17+
export type ThemeFunction<T extends ThemeConfig = ThemeConfig> = PluginFunction<
18+
T,
19+
ThemeObject
20+
>
2321

2422
/**
2523
* Vuepress theme object
@@ -44,6 +42,4 @@ export interface ThemeObject extends PluginObject {
4442
*
4543
* @remark suffix `Config` means this is for user config
4644
*/
47-
export type ThemeConfig<
48-
ThemeLocaleData extends LocaleData = LocaleData
49-
> = SiteThemeConfig<ThemeLocaleData>
45+
export type ThemeConfig = Record<string, any>

packages/@vuepress/shared/src/types/site.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
import type { HeadConfig } from './head'
2-
import type { LocaleConfig, LocaleData } from './locale'
2+
import type { LocaleConfig } from './locale'
33

44
/**
55
* Vuepress site data
66
*/
7-
export interface SiteData<T extends SiteThemeConfig = SiteThemeConfig>
8-
extends SiteLocaleData {
7+
export interface SiteData extends SiteLocaleData {
98
// site base
109
base: string
1110

1211
// locale config
1312
locales: SiteLocaleConfig
14-
15-
// theme config
16-
themeConfig: Partial<T>
1713
}
1814

1915
/**
@@ -57,15 +53,3 @@ export interface SiteLocaleData {
5753
* @remark suffix `Config` means this is for user config
5854
*/
5955
export type SiteLocaleConfig = LocaleConfig<SiteLocaleData>
60-
61-
/**
62-
* Site theme config
63-
*
64-
* @remark suffix `Config` means this is for user config
65-
*/
66-
export type SiteThemeConfig<
67-
ThemeLocaleData extends LocaleData = LocaleData
68-
> = ThemeLocaleData & {
69-
locales?: LocaleConfig<ThemeLocaleData>
70-
[key: string]: any
71-
}

packages/@vuepress/theme-default/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"@vuepress/plugin-medium-zoom": "2.0.0-alpha.24",
3939
"@vuepress/plugin-nprogress": "2.0.0-alpha.24",
4040
"@vuepress/plugin-palette-stylus": "2.0.0-alpha.24",
41+
"@vuepress/plugin-theme-data": "2.0.0-alpha.24",
4142
"@vuepress/shared": "2.0.0-alpha.24",
4243
"@vuepress/utils": "2.0.0-alpha.24",
4344
"prismjs": "^1.23.0",

0 commit comments

Comments
 (0)