Skip to content

Commit 8bd5438

Browse files
authored
feat(client): improve client data types (#1626)
1 parent a5ce1e7 commit 8bd5438

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

packages/client/src/composables/clientData.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ export const clientDataSymbol: InjectionKey<ClientData> = Symbol(
1212
/**
1313
* Returns client data
1414
*/
15-
export const useClientData = (): ClientData => {
16-
const clientData = inject(clientDataSymbol)
15+
export const useClientData = <
16+
Frontmatter extends Record<string, unknown> = Record<string, unknown>,
17+
Data extends Record<string, unknown> = Record<string, unknown>,
18+
>(): ClientData<Frontmatter, Data> => {
19+
const clientData = inject<ClientData<Frontmatter, Data>>(clientDataSymbol)
1720
if (!clientData) {
1821
throw new Error('useClientData() is called without provider.')
1922
}

packages/client/src/composables/clientDataUtils.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@ export const usePageComponent = (): PageComponentRef =>
2222

2323
export const usePageData = <
2424
T extends Record<string, unknown> = Record<string, unknown>,
25-
>(): PageDataRef<T> => useClientData().pageData as PageDataRef<T>
25+
>(): PageDataRef<T> => useClientData<Record<string, unknown>, T>().pageData
2626

2727
export const usePageFrontmatter = <
2828
T extends Record<string, unknown> = Record<string, unknown>,
29-
>(): PageFrontmatterRef<T> =>
30-
useClientData().pageFrontmatter as PageFrontmatterRef<T>
29+
>(): PageFrontmatterRef<T> => useClientData<T>().pageFrontmatter
3130

3231
export const usePageHead = (): PageHeadRef => useClientData().pageHead
3332

packages/client/src/types/clientData.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@ export type RoutesRef = Ref<Routes>
5454
export type SiteDataRef = Ref<SiteData>
5555
export type SiteLocaleDataRef = ComputedRef<SiteLocaleData>
5656

57-
export interface ClientData {
57+
export interface ClientData<
58+
Frontmatter extends Record<string, unknown> = Record<string, unknown>,
59+
Data extends Record<string, unknown> = Record<string, unknown>,
60+
> {
5861
layouts: LayoutsRef
5962
pageComponent: PageComponentRef
60-
pageData: PageDataRef
61-
pageFrontmatter: PageFrontmatterRef
63+
pageData: PageDataRef<Data>
64+
pageFrontmatter: PageFrontmatterRef<Frontmatter>
6265
pageHead: PageHeadRef
6366
pageHeadTitle: PageHeadTitleRef
6467
pageLang: PageLangRef

0 commit comments

Comments
 (0)