@@ -48,160 +48,203 @@ import type {
4848 WebPage ,
4949 WebSite ,
5050} from './nodes'
51- import type { Arrayable , Thing } from './types'
51+ import type { Arrayable , SchemaOrgNodeDefinition , Thing } from './types'
52+ import { aggregateOfferResolver } from './nodes/AggregateOffer'
53+ import { aggregateRatingResolver } from './nodes/AggregateRating'
54+ import { articleResolver } from './nodes/Article'
55+ import { bookEditionResolver , bookResolver } from './nodes/Book'
56+ import { breadcrumbResolver } from './nodes/Breadcrumb'
57+ import { commentResolver } from './nodes/Comment'
58+ import { courseResolver } from './nodes/Course'
59+ import { datasetResolver } from './nodes/Dataset'
60+ import { eventResolver } from './nodes/Event'
61+ import { foodEstablishmentResolver } from './nodes/FoodEstablishment'
62+ import { howToResolver } from './nodes/HowTo'
63+ import { howToStepResolver } from './nodes/HowTo/HowToStep'
64+ import { imageResolver } from './nodes/Image'
65+ import { itemListResolver } from './nodes/ItemList'
66+ import { jobPostingResolver } from './nodes/JobPosting'
67+ import { listItemResolver } from './nodes/ListItem'
68+ import { localBusinessResolver } from './nodes/LocalBusiness'
69+ import { movieResolver } from './nodes/Movie'
70+ import { musicAlbumResolver } from './nodes/MusicAlbum'
71+ import { musicGroupResolver } from './nodes/MusicGroup'
72+ import { musicPlaylistResolver } from './nodes/MusicPlaylist'
73+ import { musicRecordingResolver } from './nodes/MusicRecording'
74+ import { offerResolver } from './nodes/Offer'
75+ import { openingHoursResolver } from './nodes/OpeningHours'
76+ import { organizationResolver } from './nodes/Organization'
77+ import { personResolver } from './nodes/Person'
78+ import { placeResolver } from './nodes/Place'
79+ import { podcastEpisodeResolver } from './nodes/PodcastEpisode'
80+ import { podcastSeasonResolver } from './nodes/PodcastSeason'
81+ import { podcastSeriesResolver } from './nodes/PodcastSeries'
82+ import { addressResolver } from './nodes/PostalAddress'
83+ import { productResolver } from './nodes/Product'
84+ import { questionResolver } from './nodes/Question'
85+ import { recipeResolver } from './nodes/Recipe'
86+ import { reviewResolver } from './nodes/Review'
87+ import { serviceResolver } from './nodes/Service'
88+ import { softwareAppResolver } from './nodes/SoftwareApp'
89+ import { tvEpisodeResolver } from './nodes/TVEpisode'
90+ import { tvSeasonResolver } from './nodes/TVSeason'
91+ import { tvSeriesResolver } from './nodes/TVSeries'
92+ import { videoResolver } from './nodes/Video'
93+ import { virtualLocationResolver } from './nodes/VirtualLocation'
94+ import { webPageResolver } from './nodes/WebPage'
95+ import { readActionResolver } from './nodes/WebPage/ReadAction'
96+ import { webSiteResolver } from './nodes/WebSite'
97+ import { searchActionResolver } from './nodes/WebSite/SearchAction'
5298import { UnheadSchemaOrg } from './plugin'
5399
54- function provideResolver < T > ( input ?: T , resolver ?: string ) {
100+ function provideResolver < T > ( input ?: T , resolver ?: SchemaOrgNodeDefinition < any > ) : T & { _resolver ?: SchemaOrgNodeDefinition < any > } {
55101 if ( ! input )
56102 input = { } as T
57- // avoid unreferring by wrapping it in a function
58- // @ts -expect-error untyped
59- input . _resolver = resolver
60- return input
103+ return { ...input , _resolver : resolver } as T & { _resolver ?: SchemaOrgNodeDefinition < any > }
61104}
62105
63106export function defineAddress < T extends Record < string , any > > ( input ?: PostalAddress & T ) {
64- return provideResolver ( input , 'address' )
107+ return provideResolver ( input , addressResolver )
65108}
66109export function defineAggregateOffer < T extends Record < string , any > > ( input ?: AggregateOffer & T ) {
67- return provideResolver ( input , 'aggregateOffer' )
110+ return provideResolver ( input , aggregateOfferResolver )
68111}
69112export function defineAggregateRating < T extends Record < string , any > > ( input ?: AggregateRating & T ) {
70- return provideResolver ( input , 'aggregateRating' )
113+ return provideResolver ( input , aggregateRatingResolver )
71114}
72115export function defineArticle < T extends Record < string , any > > ( input ?: Article & T ) {
73- return provideResolver ( input , 'article' )
116+ return provideResolver ( input , articleResolver )
74117}
75118export function defineBreadcrumb < T extends Record < string , any > > ( input ?: BreadcrumbList & T ) {
76- return provideResolver ( input , 'breadcrumb' )
119+ return provideResolver ( input , breadcrumbResolver )
77120}
78121export function defineComment < T extends Record < string , any > > ( input ?: Comment & T ) {
79- return provideResolver ( input , 'comment' )
122+ return provideResolver ( input , commentResolver )
80123}
81124export function defineEvent < T extends Record < string , any > > ( input ?: Event & T ) {
82- return provideResolver ( input , 'event' )
125+ return provideResolver ( input , eventResolver )
83126}
84127export function defineFoodEstablishment < T extends Record < string , any > > ( input ?: FoodEstablishment & T ) {
85- return provideResolver ( input , 'foodEstablishment' )
128+ return provideResolver ( input , foodEstablishmentResolver )
86129}
87130export function defineVirtualLocation < T extends Record < string , any > > ( input ?: VirtualLocation & T ) {
88- return provideResolver ( input , 'virtualLocation' )
131+ return provideResolver ( input , virtualLocationResolver )
89132}
90133export function definePlace < T extends Record < string , any > > ( input ?: Place & T ) {
91- return provideResolver ( input , 'place' )
134+ return provideResolver ( input , placeResolver )
92135}
93136export function defineHowTo < T extends Record < string , any > > ( input ?: HowTo & T ) {
94- return provideResolver ( input , 'howTo' )
137+ return provideResolver ( input , howToResolver )
95138}
96139export function defineHowToStep < T extends Record < string , any > > ( input ?: HowToStep & T ) {
97- return provideResolver ( input , 'howToStep' )
140+ return provideResolver ( input , howToStepResolver )
98141}
99142export function defineImage < T extends Record < string , any > > ( input ?: ImageObject & T ) {
100- return provideResolver ( input , 'image' )
143+ return provideResolver ( input , imageResolver )
101144}
102145export function defineJobPosting < T extends Record < string , any > > ( input ?: JobPosting & T ) {
103- return provideResolver ( input , 'jobPosting' )
146+ return provideResolver ( input , jobPostingResolver )
104147}
105148export function defineLocalBusiness < T extends Record < string , any > > ( input ?: LocalBusiness & T ) {
106- return provideResolver ( input , 'localBusiness' )
149+ return provideResolver ( input , localBusinessResolver )
107150}
108151export function defineOffer < T extends Record < string , any > > ( input ?: Offer & T ) {
109- return provideResolver ( input , 'offer' )
152+ return provideResolver ( input , offerResolver )
110153}
111154export function defineOpeningHours < T extends Record < string , any > > ( input ?: OpeningHoursSpecification & T ) {
112- return provideResolver ( input , 'openingHours' )
155+ return provideResolver ( input , openingHoursResolver )
113156}
114157export function defineOrganization < T extends Record < string , any > > ( input ?: Organization & T ) {
115- return provideResolver ( input , 'organization' )
158+ return provideResolver ( input , organizationResolver )
116159}
117160export function definePerson < T extends Record < string , any > > ( input ?: Person & T ) {
118- return provideResolver ( input , 'person' )
161+ return provideResolver ( input , personResolver )
119162}
120163export function defineProduct < T extends Record < string , any > > ( input ?: Product & T ) {
121- return provideResolver ( input , 'product' )
164+ return provideResolver ( input , productResolver )
122165}
123166export function defineQuestion < T extends Record < string , any > > ( input ?: Question & T ) {
124- return provideResolver ( input , 'question' )
167+ return provideResolver ( input , questionResolver )
125168}
126169export function defineRecipe < T extends Record < string , any > > ( input ?: Recipe & T ) {
127- return provideResolver ( input , 'recipe' )
170+ return provideResolver ( input , recipeResolver )
128171}
129172export function defineReview < T extends Record < string , any > > ( input ?: Review & T ) {
130- return provideResolver ( input , 'review' )
173+ return provideResolver ( input , reviewResolver )
131174}
132175export function defineVideo < T extends Record < string , any > > ( input ?: VideoObject & T ) {
133- return provideResolver ( input , 'video' )
176+ return provideResolver ( input , videoResolver )
134177}
135178export function defineWebPage < T extends Record < string , any > > ( input ?: WebPage & T ) {
136- return provideResolver ( input , 'webPage' )
179+ return provideResolver ( input , webPageResolver )
137180}
138181export function defineWebSite < T extends Record < string , any > > ( input ?: WebSite & T ) {
139- return provideResolver ( input , 'webSite' )
182+ return provideResolver ( input , webSiteResolver )
140183}
141184export function defineBook < T extends Record < string , any > > ( input ?: Book & T ) {
142- return provideResolver ( input , 'book' )
185+ return provideResolver ( input , bookResolver )
143186}
144187export function defineCourse < T extends Record < string , any > > ( input ?: Course & T ) {
145- return provideResolver ( input , 'course' )
188+ return provideResolver ( input , courseResolver )
146189}
147190export function defineItemList < T extends Record < string , any > > ( input ?: ItemList & T ) {
148- return provideResolver ( input , 'itemList' )
191+ return provideResolver ( input , itemListResolver )
149192}
150193export function defineListItem < T extends Record < string , any > > ( input ?: ListItem & T ) {
151- return provideResolver ( input , 'listItem' )
194+ return provideResolver ( input , listItemResolver )
152195}
153196export function defineMovie < T extends Record < string , any > > ( input ?: Movie & T ) {
154- return provideResolver ( input , 'movie' )
197+ return provideResolver ( input , movieResolver )
155198}
156199export function defineSearchAction < T extends Record < string , any > > ( input ?: SearchAction & T ) {
157- return provideResolver ( input , 'searchAction' )
200+ return provideResolver ( input , searchActionResolver )
158201}
159202export function defineReadAction < T extends Record < string , any > > ( input ?: ReadAction & T ) {
160- return provideResolver ( input , 'readAction' )
203+ return provideResolver ( input , readActionResolver )
161204}
162205export function defineDataset < T extends Record < string , any > > ( input ?: Dataset & T ) {
163- return provideResolver ( input , 'dataset' )
206+ return provideResolver ( input , datasetResolver )
164207}
165208export function defineMusicRecording < T extends Record < string , any > > ( input ?: MusicRecording & T ) {
166- return provideResolver ( input , 'musicRecording' )
209+ return provideResolver ( input , musicRecordingResolver )
167210}
168211export function defineMusicAlbum < T extends Record < string , any > > ( input ?: MusicAlbum & T ) {
169- return provideResolver ( input , 'musicAlbum' )
212+ return provideResolver ( input , musicAlbumResolver )
170213}
171214export function defineMusicGroup < T extends Record < string , any > > ( input ?: MusicGroup & T ) {
172- return provideResolver ( input , 'musicGroup' )
215+ return provideResolver ( input , musicGroupResolver )
173216}
174217export function defineMusicPlaylist < T extends Record < string , any > > ( input ?: MusicPlaylist & T ) {
175- return provideResolver ( input , 'musicPlaylist' )
218+ return provideResolver ( input , musicPlaylistResolver )
176219}
177220export function definePodcastSeries < T extends Record < string , any > > ( input ?: PodcastSeries & T ) {
178- return provideResolver ( input , 'podcastSeries' )
221+ return provideResolver ( input , podcastSeriesResolver )
179222}
180223export function definePodcastEpisode < T extends Record < string , any > > ( input ?: PodcastEpisode & T ) {
181- return provideResolver ( input , 'podcastEpisode' )
224+ return provideResolver ( input , podcastEpisodeResolver )
182225}
183226export function definePodcastSeason < T extends Record < string , any > > ( input ?: PodcastSeason & T ) {
184- return provideResolver ( input , 'podcastSeason' )
227+ return provideResolver ( input , podcastSeasonResolver )
185228}
186229export function defineTVSeries < T extends Record < string , any > > ( input ?: TVSeries & T ) {
187- return provideResolver ( input , 'tvSeries' )
230+ return provideResolver ( input , tvSeriesResolver )
188231}
189232export function defineTVSeason < T extends Record < string , any > > ( input ?: TVSeason & T ) {
190- return provideResolver ( input , 'tvSeason' )
233+ return provideResolver ( input , tvSeasonResolver )
191234}
192235export function defineTVEpisode < T extends Record < string , any > > ( input ?: TVEpisode & T ) {
193- return provideResolver ( input , 'tvEpisode' )
236+ return provideResolver ( input , tvEpisodeResolver )
194237}
195238export function defineService < T extends Record < string , any > > ( input ?: Service & T ) {
196- return provideResolver ( input , 'service' )
239+ return provideResolver ( input , serviceResolver )
197240}
198241
199242/* simple-only */
200243export function defineSoftwareApp < T extends Record < string , any > > ( input ?: SoftwareApp & T ) {
201- return provideResolver ( input , 'softwareApp' )
244+ return provideResolver ( input , softwareAppResolver )
202245}
203246export function defineBookEdition < T extends Record < string , any > > ( input ?: BookEdition & T ) {
204- return provideResolver ( input , 'bookEdition' )
247+ return provideResolver ( input , bookEditionResolver )
205248}
206249/* end-simple-only */
207250
0 commit comments