@unhead/schema-org 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +53 -45
- package/dist/index.d.ts +15 -6
- package/dist/index.mjs +52 -45
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -261,7 +261,7 @@ const webSiteResolver = defineSchemaOrgResolver({
|
|
|
261
261
|
}
|
|
262
262
|
});
|
|
263
263
|
|
|
264
|
-
const
|
|
264
|
+
const listItemResolver = defineSchemaOrgResolver({
|
|
265
265
|
cast(node) {
|
|
266
266
|
if (typeof node === "string") {
|
|
267
267
|
node = {
|
|
@@ -276,6 +276,8 @@ const resolveListItem = defineSchemaOrgResolver({
|
|
|
276
276
|
resolve(node, ctx) {
|
|
277
277
|
if (typeof node.item === "string")
|
|
278
278
|
node.item = resolveWithBase(ctx.meta.host, node.item);
|
|
279
|
+
else if (typeof node.item === "object")
|
|
280
|
+
node.item = resolveRelation(node.item, ctx);
|
|
279
281
|
return node;
|
|
280
282
|
}
|
|
281
283
|
});
|
|
@@ -289,7 +291,7 @@ const breadcrumbResolver = defineSchemaOrgResolver({
|
|
|
289
291
|
resolve(breadcrumb, ctx) {
|
|
290
292
|
if (breadcrumb.itemListElement) {
|
|
291
293
|
let index = 1;
|
|
292
|
-
breadcrumb.itemListElement = resolveRelation(breadcrumb.itemListElement, ctx,
|
|
294
|
+
breadcrumb.itemListElement = resolveRelation(breadcrumb.itemListElement, ctx, listItemResolver, {
|
|
293
295
|
array: true,
|
|
294
296
|
afterResolve(node) {
|
|
295
297
|
setIfEmpty(node, "position", index++);
|
|
@@ -770,7 +772,7 @@ const itemListResolver = defineSchemaOrgResolver({
|
|
|
770
772
|
resolve(node, ctx) {
|
|
771
773
|
if (node.itemListElement) {
|
|
772
774
|
let index = 1;
|
|
773
|
-
node.itemListElement = resolveRelation(node.itemListElement, ctx,
|
|
775
|
+
node.itemListElement = resolveRelation(node.itemListElement, ctx, listItemResolver, {
|
|
774
776
|
array: true,
|
|
775
777
|
afterResolve(node2) {
|
|
776
778
|
setIfEmpty(node2, "position", index++);
|
|
@@ -844,6 +846,47 @@ const reviewResolver = defineSchemaOrgResolver({
|
|
|
844
846
|
}
|
|
845
847
|
});
|
|
846
848
|
|
|
849
|
+
const videoResolver = defineSchemaOrgResolver({
|
|
850
|
+
cast(input) {
|
|
851
|
+
if (typeof input === "string") {
|
|
852
|
+
input = {
|
|
853
|
+
url: input
|
|
854
|
+
};
|
|
855
|
+
}
|
|
856
|
+
return input;
|
|
857
|
+
},
|
|
858
|
+
alias: "video",
|
|
859
|
+
defaults: {
|
|
860
|
+
"@type": "VideoObject"
|
|
861
|
+
},
|
|
862
|
+
inheritMeta: [
|
|
863
|
+
{ meta: "title", key: "name" },
|
|
864
|
+
"description",
|
|
865
|
+
"image",
|
|
866
|
+
"inLanguage",
|
|
867
|
+
{ meta: "datePublished", key: "uploadDate" }
|
|
868
|
+
],
|
|
869
|
+
idPrefix: "host",
|
|
870
|
+
resolve(video, ctx) {
|
|
871
|
+
if (video.uploadDate)
|
|
872
|
+
video.uploadDate = resolvableDateToIso(video.uploadDate);
|
|
873
|
+
video.url = resolveWithBase(ctx.meta.host, video.url);
|
|
874
|
+
if (video.caption && !video.description)
|
|
875
|
+
video.description = video.caption;
|
|
876
|
+
if (!video.description)
|
|
877
|
+
video.description = "No description";
|
|
878
|
+
if (video.thumbnailUrl)
|
|
879
|
+
video.thumbnailUrl = resolveRelation(video.thumbnailUrl, ctx, imageResolver);
|
|
880
|
+
return video;
|
|
881
|
+
},
|
|
882
|
+
resolveRootNode(video, { find }) {
|
|
883
|
+
if (video.image && !video.thumbnailUrl) {
|
|
884
|
+
const firstImage = asArray(video.image)[0];
|
|
885
|
+
setIfEmpty(video, "thumbnailUrl", find(firstImage["@id"])?.url);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
});
|
|
889
|
+
|
|
847
890
|
const movieResolver = defineSchemaOrgResolver({
|
|
848
891
|
defaults: {
|
|
849
892
|
"@type": "Movie"
|
|
@@ -852,6 +895,8 @@ const movieResolver = defineSchemaOrgResolver({
|
|
|
852
895
|
node.aggregateRating = resolveRelation(node.aggregateRating, ctx, aggregateRatingResolver);
|
|
853
896
|
node.review = resolveRelation(node.review, ctx, reviewResolver);
|
|
854
897
|
node.director = resolveRelation(node.director, ctx, personResolver);
|
|
898
|
+
node.actor = resolveRelation(node.actor, ctx, personResolver);
|
|
899
|
+
node.trailer = resolveRelation(node.trailer, ctx, videoResolver);
|
|
855
900
|
if (node.dateCreated)
|
|
856
901
|
node.dateCreated = resolvableDateToDate(node.dateCreated);
|
|
857
902
|
return node;
|
|
@@ -1448,47 +1493,6 @@ const softwareAppResolver = defineSchemaOrgResolver({
|
|
|
1448
1493
|
}
|
|
1449
1494
|
});
|
|
1450
1495
|
|
|
1451
|
-
const videoResolver = defineSchemaOrgResolver({
|
|
1452
|
-
cast(input) {
|
|
1453
|
-
if (typeof input === "string") {
|
|
1454
|
-
input = {
|
|
1455
|
-
url: input
|
|
1456
|
-
};
|
|
1457
|
-
}
|
|
1458
|
-
return input;
|
|
1459
|
-
},
|
|
1460
|
-
alias: "video",
|
|
1461
|
-
defaults: {
|
|
1462
|
-
"@type": "VideoObject"
|
|
1463
|
-
},
|
|
1464
|
-
inheritMeta: [
|
|
1465
|
-
{ meta: "title", key: "name" },
|
|
1466
|
-
"description",
|
|
1467
|
-
"image",
|
|
1468
|
-
"inLanguage",
|
|
1469
|
-
{ meta: "datePublished", key: "uploadDate" }
|
|
1470
|
-
],
|
|
1471
|
-
idPrefix: "host",
|
|
1472
|
-
resolve(video, ctx) {
|
|
1473
|
-
if (video.uploadDate)
|
|
1474
|
-
video.uploadDate = resolvableDateToIso(video.uploadDate);
|
|
1475
|
-
video.url = resolveWithBase(ctx.meta.host, video.url);
|
|
1476
|
-
if (video.caption && !video.description)
|
|
1477
|
-
video.description = video.caption;
|
|
1478
|
-
if (!video.description)
|
|
1479
|
-
video.description = "No description";
|
|
1480
|
-
if (video.thumbnailUrl)
|
|
1481
|
-
video.thumbnailUrl = resolveRelation(video.thumbnailUrl, ctx, imageResolver);
|
|
1482
|
-
return video;
|
|
1483
|
-
},
|
|
1484
|
-
resolveRootNode(video, { find }) {
|
|
1485
|
-
if (video.image && !video.thumbnailUrl) {
|
|
1486
|
-
const firstImage = asArray(video.image)[0];
|
|
1487
|
-
setIfEmpty(video, "thumbnailUrl", find(firstImage["@id"])?.url);
|
|
1488
|
-
}
|
|
1489
|
-
}
|
|
1490
|
-
});
|
|
1491
|
-
|
|
1492
1496
|
function loadResolver(resolver) {
|
|
1493
1497
|
switch (resolver) {
|
|
1494
1498
|
case "address":
|
|
@@ -1545,6 +1549,8 @@ function loadResolver(resolver) {
|
|
|
1545
1549
|
return courseResolver;
|
|
1546
1550
|
case "itemList":
|
|
1547
1551
|
return itemListResolver;
|
|
1552
|
+
case "listItem":
|
|
1553
|
+
return listItemResolver;
|
|
1548
1554
|
case "movie":
|
|
1549
1555
|
return movieResolver;
|
|
1550
1556
|
case "searchAction":
|
|
@@ -1833,6 +1839,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
|
|
|
1833
1839
|
const defineBook = (input) => provideResolver(input, "book");
|
|
1834
1840
|
const defineCourse = (input) => provideResolver(input, "course");
|
|
1835
1841
|
const defineItemList = (input) => provideResolver(input, "itemList");
|
|
1842
|
+
const defineListItem = (input) => provideResolver(input, "listItem");
|
|
1836
1843
|
const defineMovie = (input) => provideResolver(input, "movie");
|
|
1837
1844
|
const defineSearchAction = (input) => provideResolver(input, "searchAction");
|
|
1838
1845
|
const defineReadAction = (input) => provideResolver(input, "readAction");
|
|
@@ -1885,6 +1892,7 @@ exports.defineHowTo = defineHowTo;
|
|
|
1885
1892
|
exports.defineHowToStep = defineHowToStep;
|
|
1886
1893
|
exports.defineImage = defineImage;
|
|
1887
1894
|
exports.defineItemList = defineItemList;
|
|
1895
|
+
exports.defineListItem = defineListItem;
|
|
1888
1896
|
exports.defineLocalBusiness = defineLocalBusiness;
|
|
1889
1897
|
exports.defineMovie = defineMovie;
|
|
1890
1898
|
exports.defineOffer = defineOffer;
|
|
@@ -1910,6 +1918,7 @@ exports.howToStepDirectionResolver = howToStepDirectionResolver;
|
|
|
1910
1918
|
exports.howToStepResolver = howToStepResolver;
|
|
1911
1919
|
exports.imageResolver = imageResolver;
|
|
1912
1920
|
exports.itemListResolver = itemListResolver;
|
|
1921
|
+
exports.listItemResolver = listItemResolver;
|
|
1913
1922
|
exports.localBusinessResolver = localBusinessResolver;
|
|
1914
1923
|
exports.movieResolver = movieResolver;
|
|
1915
1924
|
exports.offerResolver = offerResolver;
|
|
@@ -1922,7 +1931,6 @@ exports.questionResolver = questionResolver;
|
|
|
1922
1931
|
exports.ratingResolver = ratingResolver;
|
|
1923
1932
|
exports.readActionResolver = readActionResolver;
|
|
1924
1933
|
exports.recipeResolver = recipeResolver;
|
|
1925
|
-
exports.resolveListItem = resolveListItem;
|
|
1926
1934
|
exports.resolveMeta = resolveMeta;
|
|
1927
1935
|
exports.resolveNode = resolveNode;
|
|
1928
1936
|
exports.resolveNodeId = resolveNodeId;
|
package/dist/index.d.ts
CHANGED
|
@@ -189,7 +189,7 @@ interface VideoObject extends VideoSimple {
|
|
|
189
189
|
*/
|
|
190
190
|
declare const videoResolver: SchemaOrgNodeDefinition<VideoObject>;
|
|
191
191
|
|
|
192
|
-
type ValidArticleSubTypes = 'Article' | 'AdvertiserContentArticle' | 'NewsArticle' | 'Report' | 'SatiricalArticle' | 'ScholarlyArticle' | 'SocialMediaPosting' | 'TechArticle';
|
|
192
|
+
type ValidArticleSubTypes = 'Article' | 'BlogPosting' | 'AdvertiserContentArticle' | 'NewsArticle' | 'Report' | 'SatiricalArticle' | 'ScholarlyArticle' | 'SocialMediaPosting' | 'TechArticle';
|
|
193
193
|
interface ArticleSimple extends Thing {
|
|
194
194
|
['@type']?: Arrayable<ValidArticleSubTypes>;
|
|
195
195
|
/**
|
|
@@ -436,13 +436,13 @@ interface ListItemSimple extends Thing {
|
|
|
436
436
|
/**
|
|
437
437
|
* The name of the page in question, as it appears in the breadcrumb navigation.
|
|
438
438
|
*/
|
|
439
|
-
name
|
|
439
|
+
name?: string;
|
|
440
440
|
/**
|
|
441
441
|
* The unmodified canonical URL of the page in question.
|
|
442
442
|
* - If a relative path is provided, it will be resolved to absolute.
|
|
443
443
|
* - Item is not required for the last entry
|
|
444
444
|
*/
|
|
445
|
-
item?: string;
|
|
445
|
+
item?: string | Thing;
|
|
446
446
|
/**
|
|
447
447
|
* An integer (starting at 1), counting the 'depth' of the page from (including) the homepage.
|
|
448
448
|
*/
|
|
@@ -450,7 +450,7 @@ interface ListItemSimple extends Thing {
|
|
|
450
450
|
}
|
|
451
451
|
interface ListItem extends ListItemSimple {
|
|
452
452
|
}
|
|
453
|
-
declare const
|
|
453
|
+
declare const listItemResolver: SchemaOrgNodeDefinition<ListItem>;
|
|
454
454
|
|
|
455
455
|
interface ItemListSimple extends Thing {
|
|
456
456
|
/**
|
|
@@ -1086,11 +1086,19 @@ interface MovieSimple extends Thing {
|
|
|
1086
1086
|
/**
|
|
1087
1087
|
* The director of the movie.
|
|
1088
1088
|
*/
|
|
1089
|
-
director?:
|
|
1089
|
+
director?: NodeRelations<Person | string>;
|
|
1090
|
+
/**
|
|
1091
|
+
* The director of the movie.
|
|
1092
|
+
*/
|
|
1093
|
+
actor?: NodeRelations<Person | string>;
|
|
1090
1094
|
/**
|
|
1091
1095
|
* A nested Review of the movie.
|
|
1092
1096
|
*/
|
|
1093
1097
|
review?: NodeRelations<Review>;
|
|
1098
|
+
/**
|
|
1099
|
+
* The trailer of a movie or TV/radio series, season, episode, etc.
|
|
1100
|
+
*/
|
|
1101
|
+
trailer?: NodeRelations<string | VideoObject>;
|
|
1094
1102
|
}
|
|
1095
1103
|
interface Movie extends MovieSimple {
|
|
1096
1104
|
}
|
|
@@ -1489,6 +1497,7 @@ declare const defineWebSite: <T extends Record<string, any>>(input?: (WebSite &
|
|
|
1489
1497
|
declare const defineBook: <T extends Record<string, any>>(input?: (Book & T) | undefined) => Book & T;
|
|
1490
1498
|
declare const defineCourse: <T extends Record<string, any>>(input?: (Course & T) | undefined) => Course & T;
|
|
1491
1499
|
declare const defineItemList: <T extends Record<string, any>>(input?: (ItemList & T) | undefined) => ItemList & T;
|
|
1500
|
+
declare const defineListItem: <T extends Record<string, any>>(input?: (ListItem & T) | undefined) => ListItem & T;
|
|
1492
1501
|
declare const defineMovie: <T extends Record<string, any>>(input?: (Movie & T) | undefined) => Movie & T;
|
|
1493
1502
|
declare const defineSearchAction: <T extends Record<string, any>>(input?: (SearchAction & T) | undefined) => SearchAction & T;
|
|
1494
1503
|
declare const defineReadAction: <T extends Record<string, any>>(input?: (ReadAction & T) | undefined) => ReadAction & T;
|
|
@@ -1496,4 +1505,4 @@ declare const defineSoftwareApp: <T extends Record<string, any>>(input?: (Softwa
|
|
|
1496
1505
|
declare const defineBookEdition: <T extends Record<string, any>>(input?: (BookEdition & T) | undefined) => BookEdition & T;
|
|
1497
1506
|
declare function useSchemaOrg(input?: any): any;
|
|
1498
1507
|
|
|
1499
|
-
export { AggregateOffer, AggregateOfferSimple, AggregateRating, AggregateRatingSimple, Arrayable, Article, ArticleSimple, Book, BookEdition, BookEditionSimple, BookSimple, BreadcrumbList, BreadcrumbSimple, Comment$1 as Comment, CommentSimple, Course, CourseSimple, Event, EventSimple, HowTo, HowToDirection, HowToId, HowToSimple, HowToStep, HowToStepSimple, Id, IdReference, Identity, ImageObject, ImageSimple, ItemList, ItemListSimple, ListItem, ListItemSimple, LocalBusiness, LocalBusinessSimple, MetaInput, Movie, MovieSimple, NodeRelation, NodeRelations, NutritionInformation, Offer, OfferSimple, OpeningHoursSimple, OpeningHoursSpecification, OptionalSchemaOrgPrefix, Organization, OrganizationSimple, Person, PersonSimple, Place, PlaceSimple, PostalAddress, PostalAddressSimple, PrimaryArticleId, PrimaryBookId, PrimaryBreadcrumbId, PrimaryEventId, PrimaryWebPageId, PrimaryWebSiteId, Product, ProductId, ProductSimple, Question, QuestionSimple, Rating, RatingSimple, ReadAction, ReadActionInput, Recipe, RecipeId, RecipeSimple, ResolvableDate, ResolvedMeta, Review, ReviewSimple, SchemaOrgGraph, SchemaOrgNode, SchemaOrgNodeDefinition, SchemaOrgUnheadPlugin, SearchAction, SearchActionInput, SoftwareApp, SoftwareAppSimple, Thing, UserConfig, VideoObject, VideoSimple, VirtualLocation, VirtualLocationSimple, WebPage, WebPageSimple, WebSite, WebSiteSimple, WithResolver, addressResolver, aggregateOfferResolver, aggregateRatingResolver, articleResolver, bookEditionResolver, bookResolver, breadcrumbResolver, commentResolver, courseResolver, createSchemaOrgGraph, dedupeNodes, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineEvent, defineHowTo, defineHowToStep, defineImage, defineItemList, defineLocalBusiness, defineMovie, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgResolver, defineSearchAction, defineSoftwareApp, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, eventResolver, howToResolver, howToStepDirectionResolver, howToStepResolver, imageResolver, itemListResolver, localBusinessResolver, movieResolver, offerResolver, openingHoursResolver, organizationResolver, personResolver, placeResolver, productResolver, questionResolver, ratingResolver, readActionResolver, recipeResolver,
|
|
1508
|
+
export { AggregateOffer, AggregateOfferSimple, AggregateRating, AggregateRatingSimple, Arrayable, Article, ArticleSimple, Book, BookEdition, BookEditionSimple, BookSimple, BreadcrumbList, BreadcrumbSimple, Comment$1 as Comment, CommentSimple, Course, CourseSimple, Event, EventSimple, HowTo, HowToDirection, HowToId, HowToSimple, HowToStep, HowToStepSimple, Id, IdReference, Identity, ImageObject, ImageSimple, ItemList, ItemListSimple, ListItem, ListItemSimple, LocalBusiness, LocalBusinessSimple, MetaInput, Movie, MovieSimple, NodeRelation, NodeRelations, NutritionInformation, Offer, OfferSimple, OpeningHoursSimple, OpeningHoursSpecification, OptionalSchemaOrgPrefix, Organization, OrganizationSimple, Person, PersonSimple, Place, PlaceSimple, PostalAddress, PostalAddressSimple, PrimaryArticleId, PrimaryBookId, PrimaryBreadcrumbId, PrimaryEventId, PrimaryWebPageId, PrimaryWebSiteId, Product, ProductId, ProductSimple, Question, QuestionSimple, Rating, RatingSimple, ReadAction, ReadActionInput, Recipe, RecipeId, RecipeSimple, ResolvableDate, ResolvedMeta, Review, ReviewSimple, SchemaOrgGraph, SchemaOrgNode, SchemaOrgNodeDefinition, SchemaOrgUnheadPlugin, SearchAction, SearchActionInput, SoftwareApp, SoftwareAppSimple, Thing, UserConfig, VideoObject, VideoSimple, VirtualLocation, VirtualLocationSimple, WebPage, WebPageSimple, WebSite, WebSiteSimple, WithResolver, addressResolver, aggregateOfferResolver, aggregateRatingResolver, articleResolver, bookEditionResolver, bookResolver, breadcrumbResolver, commentResolver, courseResolver, createSchemaOrgGraph, dedupeNodes, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineEvent, defineHowTo, defineHowToStep, defineImage, defineItemList, defineListItem, defineLocalBusiness, defineMovie, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgResolver, defineSearchAction, defineSoftwareApp, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, eventResolver, howToResolver, howToStepDirectionResolver, howToStepResolver, imageResolver, itemListResolver, listItemResolver, localBusinessResolver, movieResolver, offerResolver, openingHoursResolver, organizationResolver, personResolver, placeResolver, productResolver, questionResolver, ratingResolver, readActionResolver, recipeResolver, resolveMeta, resolveNode, resolveNodeId, resolveRelation, reviewResolver, searchActionResolver, softwareAppResolver, useSchemaOrg, videoResolver, virtualLocationResolver, webPageResolver, webSiteResolver };
|
package/dist/index.mjs
CHANGED
|
@@ -259,7 +259,7 @@ const webSiteResolver = defineSchemaOrgResolver({
|
|
|
259
259
|
}
|
|
260
260
|
});
|
|
261
261
|
|
|
262
|
-
const
|
|
262
|
+
const listItemResolver = defineSchemaOrgResolver({
|
|
263
263
|
cast(node) {
|
|
264
264
|
if (typeof node === "string") {
|
|
265
265
|
node = {
|
|
@@ -274,6 +274,8 @@ const resolveListItem = defineSchemaOrgResolver({
|
|
|
274
274
|
resolve(node, ctx) {
|
|
275
275
|
if (typeof node.item === "string")
|
|
276
276
|
node.item = resolveWithBase(ctx.meta.host, node.item);
|
|
277
|
+
else if (typeof node.item === "object")
|
|
278
|
+
node.item = resolveRelation(node.item, ctx);
|
|
277
279
|
return node;
|
|
278
280
|
}
|
|
279
281
|
});
|
|
@@ -287,7 +289,7 @@ const breadcrumbResolver = defineSchemaOrgResolver({
|
|
|
287
289
|
resolve(breadcrumb, ctx) {
|
|
288
290
|
if (breadcrumb.itemListElement) {
|
|
289
291
|
let index = 1;
|
|
290
|
-
breadcrumb.itemListElement = resolveRelation(breadcrumb.itemListElement, ctx,
|
|
292
|
+
breadcrumb.itemListElement = resolveRelation(breadcrumb.itemListElement, ctx, listItemResolver, {
|
|
291
293
|
array: true,
|
|
292
294
|
afterResolve(node) {
|
|
293
295
|
setIfEmpty(node, "position", index++);
|
|
@@ -768,7 +770,7 @@ const itemListResolver = defineSchemaOrgResolver({
|
|
|
768
770
|
resolve(node, ctx) {
|
|
769
771
|
if (node.itemListElement) {
|
|
770
772
|
let index = 1;
|
|
771
|
-
node.itemListElement = resolveRelation(node.itemListElement, ctx,
|
|
773
|
+
node.itemListElement = resolveRelation(node.itemListElement, ctx, listItemResolver, {
|
|
772
774
|
array: true,
|
|
773
775
|
afterResolve(node2) {
|
|
774
776
|
setIfEmpty(node2, "position", index++);
|
|
@@ -842,6 +844,47 @@ const reviewResolver = defineSchemaOrgResolver({
|
|
|
842
844
|
}
|
|
843
845
|
});
|
|
844
846
|
|
|
847
|
+
const videoResolver = defineSchemaOrgResolver({
|
|
848
|
+
cast(input) {
|
|
849
|
+
if (typeof input === "string") {
|
|
850
|
+
input = {
|
|
851
|
+
url: input
|
|
852
|
+
};
|
|
853
|
+
}
|
|
854
|
+
return input;
|
|
855
|
+
},
|
|
856
|
+
alias: "video",
|
|
857
|
+
defaults: {
|
|
858
|
+
"@type": "VideoObject"
|
|
859
|
+
},
|
|
860
|
+
inheritMeta: [
|
|
861
|
+
{ meta: "title", key: "name" },
|
|
862
|
+
"description",
|
|
863
|
+
"image",
|
|
864
|
+
"inLanguage",
|
|
865
|
+
{ meta: "datePublished", key: "uploadDate" }
|
|
866
|
+
],
|
|
867
|
+
idPrefix: "host",
|
|
868
|
+
resolve(video, ctx) {
|
|
869
|
+
if (video.uploadDate)
|
|
870
|
+
video.uploadDate = resolvableDateToIso(video.uploadDate);
|
|
871
|
+
video.url = resolveWithBase(ctx.meta.host, video.url);
|
|
872
|
+
if (video.caption && !video.description)
|
|
873
|
+
video.description = video.caption;
|
|
874
|
+
if (!video.description)
|
|
875
|
+
video.description = "No description";
|
|
876
|
+
if (video.thumbnailUrl)
|
|
877
|
+
video.thumbnailUrl = resolveRelation(video.thumbnailUrl, ctx, imageResolver);
|
|
878
|
+
return video;
|
|
879
|
+
},
|
|
880
|
+
resolveRootNode(video, { find }) {
|
|
881
|
+
if (video.image && !video.thumbnailUrl) {
|
|
882
|
+
const firstImage = asArray(video.image)[0];
|
|
883
|
+
setIfEmpty(video, "thumbnailUrl", find(firstImage["@id"])?.url);
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
});
|
|
887
|
+
|
|
845
888
|
const movieResolver = defineSchemaOrgResolver({
|
|
846
889
|
defaults: {
|
|
847
890
|
"@type": "Movie"
|
|
@@ -850,6 +893,8 @@ const movieResolver = defineSchemaOrgResolver({
|
|
|
850
893
|
node.aggregateRating = resolveRelation(node.aggregateRating, ctx, aggregateRatingResolver);
|
|
851
894
|
node.review = resolveRelation(node.review, ctx, reviewResolver);
|
|
852
895
|
node.director = resolveRelation(node.director, ctx, personResolver);
|
|
896
|
+
node.actor = resolveRelation(node.actor, ctx, personResolver);
|
|
897
|
+
node.trailer = resolveRelation(node.trailer, ctx, videoResolver);
|
|
853
898
|
if (node.dateCreated)
|
|
854
899
|
node.dateCreated = resolvableDateToDate(node.dateCreated);
|
|
855
900
|
return node;
|
|
@@ -1446,47 +1491,6 @@ const softwareAppResolver = defineSchemaOrgResolver({
|
|
|
1446
1491
|
}
|
|
1447
1492
|
});
|
|
1448
1493
|
|
|
1449
|
-
const videoResolver = defineSchemaOrgResolver({
|
|
1450
|
-
cast(input) {
|
|
1451
|
-
if (typeof input === "string") {
|
|
1452
|
-
input = {
|
|
1453
|
-
url: input
|
|
1454
|
-
};
|
|
1455
|
-
}
|
|
1456
|
-
return input;
|
|
1457
|
-
},
|
|
1458
|
-
alias: "video",
|
|
1459
|
-
defaults: {
|
|
1460
|
-
"@type": "VideoObject"
|
|
1461
|
-
},
|
|
1462
|
-
inheritMeta: [
|
|
1463
|
-
{ meta: "title", key: "name" },
|
|
1464
|
-
"description",
|
|
1465
|
-
"image",
|
|
1466
|
-
"inLanguage",
|
|
1467
|
-
{ meta: "datePublished", key: "uploadDate" }
|
|
1468
|
-
],
|
|
1469
|
-
idPrefix: "host",
|
|
1470
|
-
resolve(video, ctx) {
|
|
1471
|
-
if (video.uploadDate)
|
|
1472
|
-
video.uploadDate = resolvableDateToIso(video.uploadDate);
|
|
1473
|
-
video.url = resolveWithBase(ctx.meta.host, video.url);
|
|
1474
|
-
if (video.caption && !video.description)
|
|
1475
|
-
video.description = video.caption;
|
|
1476
|
-
if (!video.description)
|
|
1477
|
-
video.description = "No description";
|
|
1478
|
-
if (video.thumbnailUrl)
|
|
1479
|
-
video.thumbnailUrl = resolveRelation(video.thumbnailUrl, ctx, imageResolver);
|
|
1480
|
-
return video;
|
|
1481
|
-
},
|
|
1482
|
-
resolveRootNode(video, { find }) {
|
|
1483
|
-
if (video.image && !video.thumbnailUrl) {
|
|
1484
|
-
const firstImage = asArray(video.image)[0];
|
|
1485
|
-
setIfEmpty(video, "thumbnailUrl", find(firstImage["@id"])?.url);
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
|
-
});
|
|
1489
|
-
|
|
1490
1494
|
function loadResolver(resolver) {
|
|
1491
1495
|
switch (resolver) {
|
|
1492
1496
|
case "address":
|
|
@@ -1543,6 +1547,8 @@ function loadResolver(resolver) {
|
|
|
1543
1547
|
return courseResolver;
|
|
1544
1548
|
case "itemList":
|
|
1545
1549
|
return itemListResolver;
|
|
1550
|
+
case "listItem":
|
|
1551
|
+
return listItemResolver;
|
|
1546
1552
|
case "movie":
|
|
1547
1553
|
return movieResolver;
|
|
1548
1554
|
case "searchAction":
|
|
@@ -1831,6 +1837,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
|
|
|
1831
1837
|
const defineBook = (input) => provideResolver(input, "book");
|
|
1832
1838
|
const defineCourse = (input) => provideResolver(input, "course");
|
|
1833
1839
|
const defineItemList = (input) => provideResolver(input, "itemList");
|
|
1840
|
+
const defineListItem = (input) => provideResolver(input, "listItem");
|
|
1834
1841
|
const defineMovie = (input) => provideResolver(input, "movie");
|
|
1835
1842
|
const defineSearchAction = (input) => provideResolver(input, "searchAction");
|
|
1836
1843
|
const defineReadAction = (input) => provideResolver(input, "readAction");
|
|
@@ -1848,4 +1855,4 @@ function useSchemaOrg(input) {
|
|
|
1848
1855
|
}, { mode: process.env.NODE_ENV === "development" ? "all" : "server" });
|
|
1849
1856
|
}
|
|
1850
1857
|
|
|
1851
|
-
export { HowToId, PrimaryArticleId, PrimaryBookId, PrimaryBreadcrumbId, PrimaryEventId, PrimaryWebPageId, PrimaryWebSiteId, ProductId, RecipeId, SchemaOrgUnheadPlugin, addressResolver, aggregateOfferResolver, aggregateRatingResolver, articleResolver, bookEditionResolver, bookResolver, breadcrumbResolver, commentResolver, courseResolver, createSchemaOrgGraph, dedupeNodes, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineEvent, defineHowTo, defineHowToStep, defineImage, defineItemList, defineLocalBusiness, defineMovie, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgResolver, defineSearchAction, defineSoftwareApp, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, eventResolver, howToResolver, howToStepDirectionResolver, howToStepResolver, imageResolver, itemListResolver, localBusinessResolver, movieResolver, offerResolver, openingHoursResolver, organizationResolver, personResolver, placeResolver, productResolver, questionResolver, ratingResolver, readActionResolver, recipeResolver,
|
|
1858
|
+
export { HowToId, PrimaryArticleId, PrimaryBookId, PrimaryBreadcrumbId, PrimaryEventId, PrimaryWebPageId, PrimaryWebSiteId, ProductId, RecipeId, SchemaOrgUnheadPlugin, addressResolver, aggregateOfferResolver, aggregateRatingResolver, articleResolver, bookEditionResolver, bookResolver, breadcrumbResolver, commentResolver, courseResolver, createSchemaOrgGraph, dedupeNodes, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineEvent, defineHowTo, defineHowToStep, defineImage, defineItemList, defineListItem, defineLocalBusiness, defineMovie, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgResolver, defineSearchAction, defineSoftwareApp, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, eventResolver, howToResolver, howToStepDirectionResolver, howToStepResolver, imageResolver, itemListResolver, listItemResolver, localBusinessResolver, movieResolver, offerResolver, openingHoursResolver, organizationResolver, personResolver, placeResolver, productResolver, questionResolver, ratingResolver, readActionResolver, recipeResolver, resolveMeta, resolveNode, resolveNodeId, resolveRelation, reviewResolver, searchActionResolver, softwareAppResolver, useSchemaOrg, videoResolver, virtualLocationResolver, webPageResolver, webSiteResolver };
|
package/package.json
CHANGED