Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit caf8ca3

Browse files
authored
fix(schema-org): add missing Vue exports for schemaAutoImports entries (#728)
* fix(schema-org): add missing Vue exports for schemaAutoImports entries defineDataset, defineMusicAlbum, defineMusicGroup, defineMusicPlaylist, defineMusicRecording, definePodcastEpisode, definePodcastSeason, definePodcastSeries, defineTVEpisode, defineTVSeason, defineTVSeries, and defineService were listed in schemaAutoImports but not exported from @unhead/schema-org/vue, causing Nuxt build failures. Adds regression test to ensure all schemaAutoImports entries are exported from the Vue entry point. * fix: update schema-org export snapshot for new Vue exports
1 parent df9c846 commit caf8ca3

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
BreadcrumbList,
1010
Comment,
1111
Course,
12+
Dataset,
1213
Event,
1314
FoodEstablishment,
1415
HowTo,
@@ -19,20 +20,31 @@ import type {
1920
ListItem,
2021
LocalBusiness,
2122
Movie,
23+
MusicAlbum,
24+
MusicGroup,
25+
MusicPlaylist,
26+
MusicRecording,
2227
Offer,
2328
OpeningHoursSpecification,
2429
Organization,
2530
Person,
2631
Place,
32+
PodcastEpisode,
33+
PodcastSeason,
34+
PodcastSeries,
2735
PostalAddress,
2836
Product,
2937
Question,
3038
ReadAction,
3139
Recipe,
3240
Review,
3341
SearchAction,
42+
Service,
3443
SoftwareApp,
3544
Thing,
45+
TVEpisode,
46+
TVSeason,
47+
TVSeries,
3648
VideoObject,
3749
VirtualLocation,
3850
WebPage,
@@ -50,6 +62,7 @@ import { bookEditionResolver, bookResolver } from '../../nodes/Book'
5062
import { breadcrumbResolver } from '../../nodes/Breadcrumb'
5163
import { commentResolver } from '../../nodes/Comment'
5264
import { courseResolver } from '../../nodes/Course'
65+
import { datasetResolver } from '../../nodes/Dataset'
5366
import { eventResolver } from '../../nodes/Event'
5467
import { foodEstablishmentResolver } from '../../nodes/FoodEstablishment'
5568
import { howToResolver } from '../../nodes/HowTo'
@@ -60,17 +73,28 @@ import { jobPostingResolver } from '../../nodes/JobPosting'
6073
import { listItemResolver } from '../../nodes/ListItem'
6174
import { localBusinessResolver } from '../../nodes/LocalBusiness'
6275
import { movieResolver } from '../../nodes/Movie'
76+
import { musicAlbumResolver } from '../../nodes/MusicAlbum'
77+
import { musicGroupResolver } from '../../nodes/MusicGroup'
78+
import { musicPlaylistResolver } from '../../nodes/MusicPlaylist'
79+
import { musicRecordingResolver } from '../../nodes/MusicRecording'
6380
import { offerResolver } from '../../nodes/Offer'
6481
import { openingHoursResolver } from '../../nodes/OpeningHours'
6582
import { organizationResolver } from '../../nodes/Organization'
6683
import { personResolver } from '../../nodes/Person'
6784
import { placeResolver } from '../../nodes/Place'
85+
import { podcastEpisodeResolver } from '../../nodes/PodcastEpisode'
86+
import { podcastSeasonResolver } from '../../nodes/PodcastSeason'
87+
import { podcastSeriesResolver } from '../../nodes/PodcastSeries'
6888
import { addressResolver } from '../../nodes/PostalAddress'
6989
import { productResolver } from '../../nodes/Product'
7090
import { questionResolver } from '../../nodes/Question'
7191
import { recipeResolver } from '../../nodes/Recipe'
7292
import { reviewResolver } from '../../nodes/Review'
93+
import { serviceResolver } from '../../nodes/Service'
7394
import { softwareAppResolver } from '../../nodes/SoftwareApp'
95+
import { tvEpisodeResolver } from '../../nodes/TVEpisode'
96+
import { tvSeasonResolver } from '../../nodes/TVSeason'
97+
import { tvSeriesResolver } from '../../nodes/TVSeries'
7498
import { videoResolver } from '../../nodes/Video'
7599
import { virtualLocationResolver } from '../../nodes/VirtualLocation'
76100
import { webPageResolver } from '../../nodes/WebPage'
@@ -200,6 +224,42 @@ export function defineSoftwareApp<T extends Record<string, any>>(input?: DeepRes
200224
export function defineBookEdition<T extends Record<string, any>>(input?: DeepResolvableProperties<BookEdition & T>) {
201225
return provideResolver(input, bookEditionResolver)
202226
}
227+
export function defineDataset<T extends Record<string, any>>(input?: DeepResolvableProperties<Dataset & T>) {
228+
return provideResolver(input, datasetResolver)
229+
}
230+
export function defineMusicRecording<T extends Record<string, any>>(input?: DeepResolvableProperties<MusicRecording & T>) {
231+
return provideResolver(input, musicRecordingResolver)
232+
}
233+
export function defineMusicAlbum<T extends Record<string, any>>(input?: DeepResolvableProperties<MusicAlbum & T>) {
234+
return provideResolver(input, musicAlbumResolver)
235+
}
236+
export function defineMusicGroup<T extends Record<string, any>>(input?: DeepResolvableProperties<MusicGroup & T>) {
237+
return provideResolver(input, musicGroupResolver)
238+
}
239+
export function defineMusicPlaylist<T extends Record<string, any>>(input?: DeepResolvableProperties<MusicPlaylist & T>) {
240+
return provideResolver(input, musicPlaylistResolver)
241+
}
242+
export function definePodcastSeries<T extends Record<string, any>>(input?: DeepResolvableProperties<PodcastSeries & T>) {
243+
return provideResolver(input, podcastSeriesResolver)
244+
}
245+
export function definePodcastEpisode<T extends Record<string, any>>(input?: DeepResolvableProperties<PodcastEpisode & T>) {
246+
return provideResolver(input, podcastEpisodeResolver)
247+
}
248+
export function definePodcastSeason<T extends Record<string, any>>(input?: DeepResolvableProperties<PodcastSeason & T>) {
249+
return provideResolver(input, podcastSeasonResolver)
250+
}
251+
export function defineTVSeries<T extends Record<string, any>>(input?: DeepResolvableProperties<TVSeries & T>) {
252+
return provideResolver(input, tvSeriesResolver)
253+
}
254+
export function defineTVSeason<T extends Record<string, any>>(input?: DeepResolvableProperties<TVSeason & T>) {
255+
return provideResolver(input, tvSeasonResolver)
256+
}
257+
export function defineTVEpisode<T extends Record<string, any>>(input?: DeepResolvableProperties<TVEpisode & T>) {
258+
return provideResolver(input, tvEpisodeResolver)
259+
}
260+
export function defineService<T extends Record<string, any>>(input?: DeepResolvableProperties<Service & T>) {
261+
return provideResolver(input, serviceResolver)
262+
}
203263

204264
export type UseSchemaOrgInput = Arrayable<DeepResolvableProperties<Thing | Record<string, any>>>
205265

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as vueExports from '@unhead/schema-org/vue'
2+
import { describe, expect, it } from 'vitest'
3+
import { schemaAutoImports } from '../../src/imports'
4+
5+
describe('vue auto-imports', () => {
6+
it('every entry in schemaAutoImports is exported from @unhead/schema-org/vue', () => {
7+
const missing = schemaAutoImports.filter(name => !(name in vueExports))
8+
expect(missing, `Missing Vue exports: ${missing.join(', ')}`).toEqual([])
9+
})
10+
})

test/exports/schema-org.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
defineBreadcrumb: function
241241
defineComment: function
242242
defineCourse: function
243+
defineDataset: function
243244
defineEvent: function
244245
defineFoodEstablishment: function
245246
defineHowTo: function
@@ -250,19 +251,30 @@
250251
defineListItem: function
251252
defineLocalBusiness: function
252253
defineMovie: function
254+
defineMusicAlbum: function
255+
defineMusicGroup: function
256+
defineMusicPlaylist: function
257+
defineMusicRecording: function
253258
defineOffer: function
254259
defineOpeningHours: function
255260
defineOrganization: function
256261
definePerson: function
257262
definePlace: function
263+
definePodcastEpisode: function
264+
definePodcastSeason: function
265+
definePodcastSeries: function
258266
defineProduct: function
259267
defineQuestion: function
260268
defineReadAction: function
261269
defineRecipe: function
262270
defineReview: function
263271
defineSchemaOrgComponent: function
264272
defineSearchAction: function
273+
defineService: function
265274
defineSoftwareApp: function
275+
defineTVEpisode: function
276+
defineTVSeason: function
277+
defineTVSeries: function
266278
defineVideo: function
267279
defineVirtualLocation: function
268280
defineWebPage: function

0 commit comments

Comments
 (0)