Skip to content

Commit 8bca3ea

Browse files
committed
feat(nodes): add new nodes, Book, Course, ItemList, Movie, etc
1 parent 2a914e2 commit 8bca3ea

File tree

4 files changed

+61
-11
lines changed

4 files changed

+61
-11
lines changed

packages/schema-org/providers/simple.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@ import type {
22
AggregateOffer,
33
AggregateRating,
44
Article,
5+
Book,
6+
BookEdition,
57
BreadcrumbList,
68
Comment,
9+
Course,
710
Event,
811
HowTo,
912
HowToStep,
1013
ImageObject,
14+
ItemList,
1115
LocalBusiness,
16+
Movie,
1217
Offer,
1318
OpeningHoursSpecification,
1419
Organization,
@@ -17,8 +22,12 @@ import type {
1722
PostalAddress,
1823
Product,
1924
Question,
25+
ReadAction,
2026
Recipe,
2127
Review,
28+
SearchAction,
29+
SoftwareApp,
30+
Thing,
2231
VideoObject,
2332
VirtualLocation,
2433
WebPage,
@@ -29,22 +38,30 @@ import {
2938
aggregateOfferResolver,
3039
aggregateRatingResolver,
3140
articleResolver,
41+
bookEditionResolver,
42+
bookResolver,
3243
breadcrumbResolver,
3344
commentResolver,
45+
courseResolver,
3446
eventResolver,
3547
howToResolver,
3648
howToStepResolver,
3749
imageResolver,
50+
itemListResolver,
3851
localBusinessResolver,
52+
movieResolver,
3953
offerResolver,
4054
organizationResolver,
4155
personResolver,
4256
placeResolver,
4357
productResolver,
4458
questionResolver,
59+
readActionResolver,
4560
recipeResolver,
4661
resolveOpeningHours,
4762
reviewResolver,
63+
searchActionResolver,
64+
softwareAppResolver,
4865
videoResolver,
4966
virtualLocationResolver,
5067
webPageResolver,
@@ -56,12 +73,12 @@ type MaybeRef<T> = {
5673
[P in keyof T]?: T[P] | Ref<T[P]>;
5774
}
5875

59-
export type WithResolver<T> = T & {
76+
type WithResolver<T> = T & {
6077
_resolver?: any
6178
_uid?: number
6279
}
6380

64-
export const provideResolver = <T>(input?: T, resolver?: any) => {
81+
const provideResolver = <T>(input?: T, resolver?: any) => {
6582
return <WithResolver<T>> {
6683
...(input || {}),
6784
_resolver: resolver,
@@ -92,3 +109,13 @@ export const defineReview = <T extends MaybeRef<Review>>(input?: T) => provideRe
92109
export const defineVideo = <T extends MaybeRef<VideoObject>>(input?: T) => provideResolver(input, videoResolver)
93110
export const defineWebPage = <T extends MaybeRef<WebPage>>(input?: T) => provideResolver(input, webPageResolver)
94111
export const defineWebSite = <T extends MaybeRef<WebSite>>(input?: T) => provideResolver(input, webSiteResolver)
112+
export const defineBook = <T extends MaybeRef<Book>>(input?: T) => provideResolver(input, bookResolver)
113+
export const defineBookEdition = <T extends MaybeRef<BookEdition>>(input?: T) => provideResolver(input, bookEditionResolver)
114+
export const defineCourse = <T extends MaybeRef<Course>>(input?: T) => provideResolver(input, courseResolver)
115+
export const defineItemList = <T extends MaybeRef<ItemList>>(input?: T) => provideResolver(input, itemListResolver)
116+
export const defineMovie = <T extends MaybeRef<Movie>>(input?: T) => provideResolver(input, movieResolver)
117+
export const defineSoftwareApp = <T extends MaybeRef<SoftwareApp>>(input?: T) => provideResolver(input, softwareAppResolver)
118+
export const defineSearchAction = <T extends MaybeRef<SearchAction>>(input?: T) => provideResolver(input, searchActionResolver)
119+
export const defineReadAction = <T extends MaybeRef<ReadAction>>(input?: T) => provideResolver(input, readActionResolver)
120+
121+
export { Thing }

packages/schema-org/runtime/components/nodes.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
import { computed, defineComponent, h, ref, unref } from 'vue'
2-
// @ts-expect-error untyped
3-
import { defineArticle, defineBreadcrumb, defineComment, defineEvent, defineHowTo, defineImage, defineLocalBusiness, defineOrganization, definePerson, defineProduct, defineQuestion, defineRecipe, defineReview, defineVideo, defineWebPage, defineWebSite } from '#vueuse/schema-org/provider'
4-
// @ts-expect-error untyped
2+
import {
3+
defineArticle, defineBook,
4+
defineBreadcrumb,
5+
defineComment, defineCourse,
6+
defineEvent,
7+
defineHowTo,
8+
defineImage, defineItemList,
9+
defineLocalBusiness, defineMovie,
10+
defineOrganization,
11+
definePerson,
12+
defineProduct,
13+
defineQuestion,
14+
defineRecipe,
15+
defineReview, defineSoftwareApp,
16+
defineVideo,
17+
defineWebPage,
18+
defineWebSite,
19+
} from '#vueuse/schema-org/provider'
520
import { useSchemaOrg } from '#vueuse/schema-org/runtime'
621

722
const shallowVNodesToText = (nodes: any) => {
@@ -85,14 +100,19 @@ export const SchemaOrgBreadcrumb = defineSchemaOrgComponent('SchemaOrgBreadcrumb
85100
export const SchemaOrgComment = defineSchemaOrgComponent('SchemaOrgComment', defineComment)
86101
export const SchemaOrgEvent = defineSchemaOrgComponent('SchemaOrgEvent', defineEvent)
87102
export const SchemaOrgHowTo = defineSchemaOrgComponent('SchemaOrgHowTo', defineHowTo)
88-
export const SchemaOrgOrganization = defineSchemaOrgComponent('SchemaOrgOrganization', defineOrganization)
89-
export const SchemaOrgPerson = defineSchemaOrgComponent('SchemaOrgPerson', definePerson)
90103
export const SchemaOrgImage = defineSchemaOrgComponent('SchemaOrgImage', defineImage)
91104
export const SchemaOrgLocalBusiness = defineSchemaOrgComponent('SchemaOrgLocalBusiness', defineLocalBusiness)
105+
export const SchemaOrgOrganization = defineSchemaOrgComponent('SchemaOrgOrganization', defineOrganization)
106+
export const SchemaOrgPerson = defineSchemaOrgComponent('SchemaOrgPerson', definePerson)
92107
export const SchemaOrgProduct = defineSchemaOrgComponent('SchemaOrgProduct', defineProduct)
93108
export const SchemaOrgQuestion = defineSchemaOrgComponent('SchemaOrgQuestion', defineQuestion)
94-
export const SchemaOrgReview = defineSchemaOrgComponent('SchemaOrgReview', defineReview)
95109
export const SchemaOrgRecipe = defineSchemaOrgComponent('SchemaOrgRecipe', defineRecipe)
110+
export const SchemaOrgReview = defineSchemaOrgComponent('SchemaOrgReview', defineReview)
96111
export const SchemaOrgVideo = defineSchemaOrgComponent('SchemaOrgVideo', defineVideo)
97112
export const SchemaOrgWebPage = defineSchemaOrgComponent('SchemaOrgWebPage', defineWebPage)
98113
export const SchemaOrgWebSite = defineSchemaOrgComponent('SchemaOrgWebSite', defineWebSite)
114+
export const SchemaOrgMovie = defineSchemaOrgComponent('SchemaOrgMovie', defineMovie)
115+
export const SchemaOrgCourse = defineSchemaOrgComponent('SchemaOrgCourse', defineCourse)
116+
export const SchemaOrgItemList = defineSchemaOrgComponent('SchemaOrgItemList', defineItemList)
117+
export const SchemaOrgBook = defineSchemaOrgComponent('SchemaOrgBook', defineBook)
118+
export const SchemaOrgSoftwareApp = defineSchemaOrgComponent('SchemaOrgSoftwareApp', defineSoftwareApp)

packages/schema-org/runtime/composables/useSchemaOrg.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { getCurrentInstance, nextTick, onBeforeUnmount, onMounted, watch } from 'vue'
2+
import type { SchemaOrgVuePlugin } from '@vueuse/schema-org'
23
import { injectSchemaOrg } from '#vueuse/schema-org/runtime'
34

5+
type Arrayable<T> = T | Array<T>
6+
47
let vmGlobalUid = -1
58

6-
export function useSchemaOrg(input: any) {
9+
export function useSchemaOrg(input: Arrayable<any>) {
710
// make sure we can get client
8-
const client = injectSchemaOrg()
11+
const client = injectSchemaOrg() as SchemaOrgVuePlugin
912
if (!client)
1013
return
1114

packages/schema-org/src/composables/createSchemaOrg.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export interface SchemaOrgVuePlugin {
3030
/**
3131
* Given a Vue component context, deleted any nodes associated with it.
3232
*/
33-
removeContext: (uid: Number) => void
33+
removeContext: (uid: number) => void
3434
/**
3535
* Sets up the initial placeholder for the meta tag using useHead.
3636
*/

0 commit comments

Comments
 (0)