Skip to content

Commit 154dbc0

Browse files
committed
feat: support schemda-dts with /full export
1 parent ea962d5 commit 154dbc0

File tree

5 files changed

+118
-64
lines changed

5 files changed

+118
-64
lines changed

packages/schema-org/build.config.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineBuildConfig } from 'unbuild'
2+
import { readFile, rename, writeFile } from 'fs-extra'
23

34
export default defineBuildConfig({
45
clean: true,
@@ -11,10 +12,20 @@ export default defineBuildConfig({
1112
},
1213
entries: [
1314
{ input: 'src/index' },
14-
{ input: 'providers/lite' },
15+
{ input: 'providers/', outDir: 'dist/providers', builder: 'mkdist' },
1516
{ input: 'runtime/', outDir: 'dist/runtime', builder: 'mkdist' },
1617
{ input: 'runtime-mock/', outDir: 'dist/runtime-mock', builder: 'mkdist' },
1718
],
19+
hooks: {
20+
'mkdist:done': async function (ctx) {
21+
const simpleDtsFile = `${ctx.options.outDir}/providers/base.d.ts`
22+
const simpleDts = await readFile(simpleDtsFile, { encoding: 'utf-8' })
23+
const fullDts = simpleDts
24+
.replace('from \'schema-org-graph-js\';', 'from \'schema-dts\';')
25+
await writeFile(`${ctx.options.outDir}/providers/full.d.ts`, fullDts, { encoding: 'utf-8' })
26+
await rename(simpleDtsFile, `${ctx.options.outDir}/providers/simple.d.ts`)
27+
},
28+
},
1829
externals: [
1930
'#vueuse/schema-org',
2031
'consola',

packages/schema-org/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
useHarlansHamburgers,
1212
useSetup,
1313
} from '../../../.test'
14-
import { defineOrganization, defineWebPage, defineWebSite } from '../../lite'
14+
import { defineOrganization, defineWebPage, defineWebSite } from '../../simple'
1515
import { injectSchemaOrg, useSchemaOrg } from './index'
1616

1717
describe('useSchemaOrg', () => {

packages/schema-org/package.json

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,13 @@
3737
"types": "./dist/runtime/components/index.d.ts",
3838
"import": "./dist/runtime/components/index.mjs"
3939
},
40-
"./lite": {
41-
"types": "./dist/lite.d.ts",
42-
"import": "./dist/lite.mjs"
40+
"./simple": {
41+
"types": "./dist/providers/simple.d.ts",
42+
"import": "./dist/providers/base.mjs"
43+
},
44+
"./full": {
45+
"types": "./dist/providers/full.d.ts",
46+
"import": "./dist/providers/base.mjs"
4347
},
4448
"./runtime": {
4549
"types": "./dist/runtime/index.d.ts",
@@ -65,13 +69,14 @@
6569
"vue-router": "^4"
6670
},
6771
"dependencies": {
68-
"defu": "^6.0.0",
69-
"schema-org-graph-js": "0.1.2",
70-
"ufo": "^0.8.5",
72+
"schema-org-graph-js": "0.3.3",
7173
"vue-demi": "^0.13.7"
7274
},
7375
"devDependencies": {
76+
"@types/fs-extra": "^9.0.13",
7477
"@vueuse/head": "^0.7.9",
78+
"fs-extra": "^10.1.0",
79+
"schema-dts": "^1.1.0",
7580
"utility-types": "^3.10.0",
7681
"vue": "^3.2.37",
7782
"vue-router": "^4.1.3"
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import type {
2+
AggregateOffer,
3+
AggregateRating,
4+
Article,
5+
BreadcrumbList,
6+
Comment,
7+
Event,
8+
HowTo,
9+
HowToStep,
10+
ImageObject,
11+
LocalBusiness,
12+
Offer,
13+
OpeningHoursSpecification,
14+
Organization,
15+
Person,
16+
Place,
17+
PostalAddress,
18+
Product,
19+
Question,
20+
Recipe,
21+
Review,
22+
VideoObject,
23+
VirtualLocation,
24+
WebPage,
25+
WebSite,
26+
} from 'schema-org-graph-js'
27+
import {
28+
addressResolver,
29+
aggregateOfferResolver,
30+
aggregateRatingResolver,
31+
articleResolver,
32+
breadcrumbResolver,
33+
commentResolver,
34+
eventResolver,
35+
howToResolver,
36+
howToStepResolver,
37+
imageResolver,
38+
localBusinessResolver,
39+
offerResolver,
40+
organizationResolver,
41+
personResolver,
42+
placeResolver,
43+
productResolver,
44+
questionResolver,
45+
recipeResolver,
46+
resolveOpeningHours,
47+
reviewResolver,
48+
videoResolver,
49+
virtualLocationResolver,
50+
webPageResolver,
51+
webSiteResolver,
52+
} from 'schema-org-graph-js'
53+
import type { Ref } from 'vue-demi'
54+
55+
type MaybeRef<T> = {
56+
[P in keyof T]?: T[P] | Ref<T[P]>;
57+
}
58+
59+
export type WithResolver<T> = T & {
60+
_resolver?: any
61+
_uid?: number
62+
}
63+
64+
export const provideResolver = <T>(input?: T, resolver?: any) => {
65+
return <WithResolver<T>> {
66+
...(input || {}),
67+
_resolver: resolver,
68+
}
69+
}
70+
71+
export const defineAddress = <T extends MaybeRef<PostalAddress>>(input?: T) => provideResolver(input, addressResolver)
72+
export const defineAggregateOffer = <T extends MaybeRef<AggregateOffer>>(input?: T) => provideResolver(input, aggregateOfferResolver)
73+
export const defineAggregateRating = <T extends MaybeRef<AggregateRating>>(input?: T) => provideResolver(input, aggregateRatingResolver)
74+
export const defineArticle = <T extends MaybeRef<Article>>(input?: T) => provideResolver(input, articleResolver)
75+
export const defineBreadcrumb = <T extends MaybeRef<BreadcrumbList>>(input?: T) => provideResolver(input, breadcrumbResolver)
76+
export const defineComment = <T extends MaybeRef<Comment>>(input?: T) => provideResolver(input, commentResolver)
77+
export const defineEvent = <T extends MaybeRef<Event>>(input?: T) => provideResolver(input, eventResolver)
78+
export const defineVirtualLocation = <T extends MaybeRef<VirtualLocation>>(input?: T) => provideResolver(input, virtualLocationResolver)
79+
export const definePlace = <T extends MaybeRef<Place>>(input?: T) => provideResolver(input, placeResolver)
80+
export const defineHowTo = <T extends MaybeRef<HowTo>>(input?: T) => provideResolver(input, howToResolver)
81+
export const defineHowToStep = <T extends MaybeRef<HowToStep>>(input?: T) => provideResolver(input, howToStepResolver)
82+
export const defineImage = <T extends MaybeRef<ImageObject>>(input?: T) => provideResolver(input, imageResolver)
83+
export const defineLocalBusiness = <T extends MaybeRef<LocalBusiness>>(input?: T) => provideResolver(input, localBusinessResolver)
84+
export const defineOffer = <T extends MaybeRef<Offer>>(input?: T) => provideResolver(input, offerResolver)
85+
export const defineOpeningHours = <T extends MaybeRef<OpeningHoursSpecification>>(input?: T) => provideResolver(input, resolveOpeningHours)
86+
export const defineOrganization = <T extends MaybeRef<Organization>>(input?: T) => provideResolver(input, organizationResolver)
87+
export const definePerson = <T extends MaybeRef<Person>>(input?: T) => provideResolver(input, personResolver)
88+
export const defineProduct = <T extends MaybeRef<Product>>(input?: T) => provideResolver(input, productResolver)
89+
export const defineQuestion = <T extends MaybeRef<Question>>(input?: T) => provideResolver(input, questionResolver)
90+
export const defineRecipe = <T extends MaybeRef<Recipe>>(input?: T) => provideResolver(input, recipeResolver)
91+
export const defineReview = <T extends MaybeRef<Review>>(input?: T) => provideResolver(input, reviewResolver)
92+
export const defineVideo = <T extends MaybeRef<VideoObject>>(input?: T) => provideResolver(input, videoResolver)
93+
export const defineWebPage = <T extends MaybeRef<WebPage>>(input?: T) => provideResolver(input, webPageResolver)
94+
export const defineWebSite = <T extends MaybeRef<WebSite>>(input?: T) => provideResolver(input, webSiteResolver)

packages/schema-org/providers/lite.ts

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)