Skip to content

Commit f46bdce

Browse files
committed
fix(schemaOrg): broken nested reactivity types
1 parent f3908f8 commit f46bdce

File tree

2 files changed

+53
-37
lines changed

2 files changed

+53
-37
lines changed

packages/schema-org/src/vue/runtime/composables.ts

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ResolvableProperties, UseHeadInput, UseHeadOptions } from '@unhead/vue'
1+
import type { DeepResolvableProperties, UseHeadInput, UseHeadOptions } from '@unhead/vue'
22
import type { ActiveHeadEntry } from 'unhead/types'
33
import type {
44
AggregateOffer,
@@ -53,113 +53,113 @@ function provideResolver<T>(input?: T, resolver?: string) {
5353
return input
5454
}
5555

56-
export function defineAddress<T extends Record<string, any>>(input?: ResolvableProperties<PostalAddress & T>) {
56+
export function defineAddress<T extends Record<string, any>>(input?: DeepResolvableProperties<PostalAddress & T>) {
5757
return provideResolver(input, 'address')
5858
}
59-
export function defineAggregateOffer<T extends Record<string, any>>(input?: ResolvableProperties<AggregateOffer & T>) {
59+
export function defineAggregateOffer<T extends Record<string, any>>(input?: DeepResolvableProperties<AggregateOffer & T>) {
6060
return provideResolver(input, 'aggregateOffer')
6161
}
62-
export function defineAggregateRating<T extends Record<string, any>>(input?: ResolvableProperties<AggregateRating & T>) {
62+
export function defineAggregateRating<T extends Record<string, any>>(input?: DeepResolvableProperties<AggregateRating & T>) {
6363
return provideResolver(input, 'aggregateRating')
6464
}
65-
export function defineArticle<T extends Record<string, any>>(input?: ResolvableProperties<Article & T>) {
65+
export function defineArticle<T extends Record<string, any>>(input?: DeepResolvableProperties<Article & T>) {
6666
return provideResolver(input, 'article')
6767
}
68-
export function defineBreadcrumb<T extends Record<string, any>>(input?: ResolvableProperties<BreadcrumbList & T>) {
68+
export function defineBreadcrumb<T extends Record<string, any>>(input?: DeepResolvableProperties<BreadcrumbList & T>) {
6969
return provideResolver(input, 'breadcrumb')
7070
}
71-
export function defineComment<T extends Record<string, any>>(input?: ResolvableProperties<Comment & T>) {
71+
export function defineComment<T extends Record<string, any>>(input?: DeepResolvableProperties<Comment & T>) {
7272
return provideResolver(input, 'comment')
7373
}
74-
export function defineEvent<T extends Record<string, any>>(input?: ResolvableProperties<Event & T>) {
74+
export function defineEvent<T extends Record<string, any>>(input?: DeepResolvableProperties<Event & T>) {
7575
return provideResolver(input, 'event')
7676
}
77-
export function defineFoodEstablishment<T extends Record<string, any>>(input?: ResolvableProperties<FoodEstablishment & T>) {
77+
export function defineFoodEstablishment<T extends Record<string, any>>(input?: DeepResolvableProperties<FoodEstablishment & T>) {
7878
return provideResolver(input, 'foodEstablishment')
7979
}
80-
export function defineVirtualLocation<T extends Record<string, any>>(input?: ResolvableProperties<VirtualLocation & T>) {
80+
export function defineVirtualLocation<T extends Record<string, any>>(input?: DeepResolvableProperties<VirtualLocation & T>) {
8181
return provideResolver(input, 'virtualLocation')
8282
}
83-
export function definePlace<T extends Record<string, any>>(input?: ResolvableProperties<Place & T>) {
83+
export function definePlace<T extends Record<string, any>>(input?: DeepResolvableProperties<Place & T>) {
8484
return provideResolver(input, 'place')
8585
}
86-
export function defineHowTo<T extends Record<string, any>>(input?: ResolvableProperties<HowTo & T>) {
86+
export function defineHowTo<T extends Record<string, any>>(input?: DeepResolvableProperties<HowTo & T>) {
8787
return provideResolver(input, 'howTo')
8888
}
89-
export function defineHowToStep<T extends Record<string, any>>(input?: ResolvableProperties<HowToStep & T>) {
89+
export function defineHowToStep<T extends Record<string, any>>(input?: DeepResolvableProperties<HowToStep & T>) {
9090
return provideResolver(input, 'howToStep')
9191
}
92-
export function defineImage<T extends Record<string, any>>(input?: ResolvableProperties<ImageObject & T>) {
92+
export function defineImage<T extends Record<string, any>>(input?: DeepResolvableProperties<ImageObject & T>) {
9393
return provideResolver(input, 'image')
9494
}
95-
export function defineJobPosting<T extends Record<string, any>>(input?: ResolvableProperties<JobPosting & T>) {
95+
export function defineJobPosting<T extends Record<string, any>>(input?: DeepResolvableProperties<JobPosting & T>) {
9696
return provideResolver(input, 'jobPosting')
9797
}
98-
export function defineLocalBusiness<T extends Record<string, any>>(input?: ResolvableProperties<LocalBusiness & T>) {
98+
export function defineLocalBusiness<T extends Record<string, any>>(input?: DeepResolvableProperties<LocalBusiness & T>) {
9999
return provideResolver(input, 'localBusiness')
100100
}
101-
export function defineOffer<T extends Record<string, any>>(input?: ResolvableProperties<Offer & T>) {
101+
export function defineOffer<T extends Record<string, any>>(input?: DeepResolvableProperties<Offer & T>) {
102102
return provideResolver(input, 'offer')
103103
}
104-
export function defineOpeningHours<T extends Record<string, any>>(input?: ResolvableProperties<OpeningHoursSpecification & T>) {
104+
export function defineOpeningHours<T extends Record<string, any>>(input?: DeepResolvableProperties<OpeningHoursSpecification & T>) {
105105
return provideResolver(input, 'openingHours')
106106
}
107-
export function defineOrganization<T extends Record<string, any>>(input?: ResolvableProperties<Organization & T>) {
107+
export function defineOrganization<T extends Record<string, any>>(input?: DeepResolvableProperties<Organization & T>) {
108108
return provideResolver(input, 'organization')
109109
}
110-
export function definePerson<T extends Record<string, any>>(input?: ResolvableProperties<Person & T>) {
110+
export function definePerson<T extends Record<string, any>>(input?: DeepResolvableProperties<Person & T>) {
111111
return provideResolver(input, 'person')
112112
}
113-
export function defineProduct<T extends Record<string, any>>(input?: ResolvableProperties<Product & T>) {
113+
export function defineProduct<T extends Record<string, any>>(input?: DeepResolvableProperties<Product & T>) {
114114
return provideResolver(input, 'product')
115115
}
116-
export function defineQuestion<T extends Record<string, any>>(input?: ResolvableProperties<Question & T>) {
116+
export function defineQuestion<T extends Record<string, any>>(input?: DeepResolvableProperties<Question & T>) {
117117
return provideResolver(input, 'question')
118118
}
119-
export function defineRecipe<T extends Record<string, any>>(input?: ResolvableProperties<Recipe & T>) {
119+
export function defineRecipe<T extends Record<string, any>>(input?: DeepResolvableProperties<Recipe & T>) {
120120
return provideResolver(input, 'recipe')
121121
}
122-
export function defineReview<T extends Record<string, any>>(input?: ResolvableProperties<Review & T>) {
122+
export function defineReview<T extends Record<string, any>>(input?: DeepResolvableProperties<Review & T>) {
123123
return provideResolver(input, 'review')
124124
}
125-
export function defineVideo<T extends Record<string, any>>(input?: ResolvableProperties<VideoObject & T>) {
125+
export function defineVideo<T extends Record<string, any>>(input?: DeepResolvableProperties<VideoObject & T>) {
126126
return provideResolver(input, 'video')
127127
}
128-
export function defineWebPage<T extends Record<string, any>>(input?: ResolvableProperties<WebPage & T>) {
128+
export function defineWebPage<T extends Record<string, any>>(input?: DeepResolvableProperties<WebPage & T>) {
129129
return provideResolver(input, 'webPage')
130130
}
131-
export function defineWebSite<T extends Record<string, any>>(input?: ResolvableProperties<WebSite & T>) {
131+
export function defineWebSite<T extends Record<string, any>>(input?: DeepResolvableProperties<WebSite & T>) {
132132
return provideResolver(input, 'webSite')
133133
}
134-
export function defineBook<T extends Record<string, any>>(input?: ResolvableProperties<Book & T>) {
134+
export function defineBook<T extends Record<string, any>>(input?: DeepResolvableProperties<Book & T>) {
135135
return provideResolver(input, 'book')
136136
}
137-
export function defineCourse<T extends Record<string, any>>(input?: ResolvableProperties<Course & T>) {
137+
export function defineCourse<T extends Record<string, any>>(input?: DeepResolvableProperties<Course & T>) {
138138
return provideResolver(input, 'course')
139139
}
140-
export function defineItemList<T extends Record<string, any>>(input?: ResolvableProperties<ItemList & T>) {
140+
export function defineItemList<T extends Record<string, any>>(input?: DeepResolvableProperties<ItemList & T>) {
141141
return provideResolver(input, 'itemList')
142142
}
143-
export function defineListItem<T extends Record<string, any>>(input?: ResolvableProperties<ListItem & T>) {
143+
export function defineListItem<T extends Record<string, any>>(input?: DeepResolvableProperties<ListItem & T>) {
144144
return provideResolver(input, 'listItem')
145145
}
146-
export function defineMovie<T extends Record<string, any>>(input?: ResolvableProperties<Movie & T>) {
146+
export function defineMovie<T extends Record<string, any>>(input?: DeepResolvableProperties<Movie & T>) {
147147
return provideResolver(input, 'movie')
148148
}
149-
export function defineSearchAction<T extends Record<string, any>>(input?: ResolvableProperties<SearchAction & T>) {
149+
export function defineSearchAction<T extends Record<string, any>>(input?: DeepResolvableProperties<SearchAction & T>) {
150150
return provideResolver(input, 'searchAction')
151151
}
152-
export function defineReadAction<T extends Record<string, any>>(input?: ResolvableProperties<ReadAction & T>) {
152+
export function defineReadAction<T extends Record<string, any>>(input?: DeepResolvableProperties<ReadAction & T>) {
153153
return provideResolver(input, 'readAction')
154154
}
155-
export function defineSoftwareApp<T extends Record<string, any>>(input?: ResolvableProperties<SoftwareApp & T>) {
155+
export function defineSoftwareApp<T extends Record<string, any>>(input?: DeepResolvableProperties<SoftwareApp & T>) {
156156
return provideResolver(input, 'softwareApp')
157157
}
158-
export function defineBookEdition<T extends Record<string, any>>(input?: ResolvableProperties<BookEdition & T>) {
158+
export function defineBookEdition<T extends Record<string, any>>(input?: DeepResolvableProperties<BookEdition & T>) {
159159
return provideResolver(input, 'bookEdition')
160160
}
161161

162-
export type UseSchemaOrgInput = Arrayable<ResolvableProperties<Thing | Record<string, any>>>
162+
export type UseSchemaOrgInput = Arrayable<DeepResolvableProperties<Thing | Record<string, any>>>
163163

164164
export function useSchemaOrg(input: UseSchemaOrgInput = [], options: UseHeadOptions = {}): ActiveHeadEntry<UseSchemaOrgInput> {
165165
// lazy initialise the plugin

packages/vue/src/types/util.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,19 @@ export type ResolvableArray<T> = ResolvableValue<ResolvableValue<T>[]>
1010
export type ResolvableProperties<T> = {
1111
[key in keyof T]?: ResolvableValue<T[key]>
1212
}
13+
14+
export type ResolvableUnion<T> = T extends string | number | boolean
15+
? ResolvableValue<T>
16+
: T extends object
17+
? DeepResolvableProperties<T>
18+
: ResolvableValue<T>
19+
20+
export type DeepResolvableProperties<T> = {
21+
[K in keyof T]?: T[K] extends string | object
22+
? T[K] extends string
23+
? ResolvableUnion<T[K]>
24+
: T[K] extends object
25+
? DeepResolvableProperties<T[K]>
26+
: ResolvableUnion<T[K]>
27+
: ResolvableUnion<T[K]>
28+
}

0 commit comments

Comments
 (0)