@unhead/schema-org 0.1.2 → 0.2.0

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 CHANGED
@@ -261,7 +261,7 @@ const webSiteResolver = defineSchemaOrgResolver({
261
261
  }
262
262
  });
263
263
 
264
- const resolveListItem = defineSchemaOrgResolver({
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, resolveListItem, {
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, resolveListItem, {
775
+ node.itemListElement = resolveRelation(node.itemListElement, ctx, listItemResolver, {
774
776
  array: true,
775
777
  afterResolve(node2) {
776
778
  setIfEmpty(node2, "position", index++);
@@ -1545,6 +1547,8 @@ function loadResolver(resolver) {
1545
1547
  return courseResolver;
1546
1548
  case "itemList":
1547
1549
  return itemListResolver;
1550
+ case "listItem":
1551
+ return listItemResolver;
1548
1552
  case "movie":
1549
1553
  return movieResolver;
1550
1554
  case "searchAction":
@@ -1833,6 +1837,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
1833
1837
  const defineBook = (input) => provideResolver(input, "book");
1834
1838
  const defineCourse = (input) => provideResolver(input, "course");
1835
1839
  const defineItemList = (input) => provideResolver(input, "itemList");
1840
+ const defineListItem = (input) => provideResolver(input, "listItem");
1836
1841
  const defineMovie = (input) => provideResolver(input, "movie");
1837
1842
  const defineSearchAction = (input) => provideResolver(input, "searchAction");
1838
1843
  const defineReadAction = (input) => provideResolver(input, "readAction");
@@ -1885,6 +1890,7 @@ exports.defineHowTo = defineHowTo;
1885
1890
  exports.defineHowToStep = defineHowToStep;
1886
1891
  exports.defineImage = defineImage;
1887
1892
  exports.defineItemList = defineItemList;
1893
+ exports.defineListItem = defineListItem;
1888
1894
  exports.defineLocalBusiness = defineLocalBusiness;
1889
1895
  exports.defineMovie = defineMovie;
1890
1896
  exports.defineOffer = defineOffer;
@@ -1910,6 +1916,7 @@ exports.howToStepDirectionResolver = howToStepDirectionResolver;
1910
1916
  exports.howToStepResolver = howToStepResolver;
1911
1917
  exports.imageResolver = imageResolver;
1912
1918
  exports.itemListResolver = itemListResolver;
1919
+ exports.listItemResolver = listItemResolver;
1913
1920
  exports.localBusinessResolver = localBusinessResolver;
1914
1921
  exports.movieResolver = movieResolver;
1915
1922
  exports.offerResolver = offerResolver;
@@ -1922,7 +1929,6 @@ exports.questionResolver = questionResolver;
1922
1929
  exports.ratingResolver = ratingResolver;
1923
1930
  exports.readActionResolver = readActionResolver;
1924
1931
  exports.recipeResolver = recipeResolver;
1925
- exports.resolveListItem = resolveListItem;
1926
1932
  exports.resolveMeta = resolveMeta;
1927
1933
  exports.resolveNode = resolveNode;
1928
1934
  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: string;
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 resolveListItem: SchemaOrgNodeDefinition<ListItem>;
453
+ declare const listItemResolver: SchemaOrgNodeDefinition<ListItem>;
454
454
 
455
455
  interface ItemListSimple extends Thing {
456
456
  /**
@@ -1489,6 +1489,7 @@ declare const defineWebSite: <T extends Record<string, any>>(input?: (WebSite &
1489
1489
  declare const defineBook: <T extends Record<string, any>>(input?: (Book & T) | undefined) => Book & T;
1490
1490
  declare const defineCourse: <T extends Record<string, any>>(input?: (Course & T) | undefined) => Course & T;
1491
1491
  declare const defineItemList: <T extends Record<string, any>>(input?: (ItemList & T) | undefined) => ItemList & T;
1492
+ declare const defineListItem: <T extends Record<string, any>>(input?: (ListItem & T) | undefined) => ListItem & T;
1492
1493
  declare const defineMovie: <T extends Record<string, any>>(input?: (Movie & T) | undefined) => Movie & T;
1493
1494
  declare const defineSearchAction: <T extends Record<string, any>>(input?: (SearchAction & T) | undefined) => SearchAction & T;
1494
1495
  declare const defineReadAction: <T extends Record<string, any>>(input?: (ReadAction & T) | undefined) => ReadAction & T;
@@ -1496,4 +1497,4 @@ declare const defineSoftwareApp: <T extends Record<string, any>>(input?: (Softwa
1496
1497
  declare const defineBookEdition: <T extends Record<string, any>>(input?: (BookEdition & T) | undefined) => BookEdition & T;
1497
1498
  declare function useSchemaOrg(input?: any): any;
1498
1499
 
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, resolveListItem, resolveMeta, resolveNode, resolveNodeId, resolveRelation, reviewResolver, searchActionResolver, softwareAppResolver, useSchemaOrg, videoResolver, virtualLocationResolver, webPageResolver, webSiteResolver };
1500
+ 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 resolveListItem = defineSchemaOrgResolver({
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, resolveListItem, {
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, resolveListItem, {
773
+ node.itemListElement = resolveRelation(node.itemListElement, ctx, listItemResolver, {
772
774
  array: true,
773
775
  afterResolve(node2) {
774
776
  setIfEmpty(node2, "position", index++);
@@ -1543,6 +1545,8 @@ function loadResolver(resolver) {
1543
1545
  return courseResolver;
1544
1546
  case "itemList":
1545
1547
  return itemListResolver;
1548
+ case "listItem":
1549
+ return listItemResolver;
1546
1550
  case "movie":
1547
1551
  return movieResolver;
1548
1552
  case "searchAction":
@@ -1831,6 +1835,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
1831
1835
  const defineBook = (input) => provideResolver(input, "book");
1832
1836
  const defineCourse = (input) => provideResolver(input, "course");
1833
1837
  const defineItemList = (input) => provideResolver(input, "itemList");
1838
+ const defineListItem = (input) => provideResolver(input, "listItem");
1834
1839
  const defineMovie = (input) => provideResolver(input, "movie");
1835
1840
  const defineSearchAction = (input) => provideResolver(input, "searchAction");
1836
1841
  const defineReadAction = (input) => provideResolver(input, "readAction");
@@ -1848,4 +1853,4 @@ function useSchemaOrg(input) {
1848
1853
  }, { mode: process.env.NODE_ENV === "development" ? "all" : "server" });
1849
1854
  }
1850
1855
 
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, resolveListItem, resolveMeta, resolveNode, resolveNodeId, resolveRelation, reviewResolver, searchActionResolver, softwareAppResolver, useSchemaOrg, videoResolver, virtualLocationResolver, webPageResolver, webSiteResolver };
1856
+ 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unhead/schema-org",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "packageManager": "pnpm@7.8.0",
5
5
  "description": "Node Schema.org for Simple and Automated Google Rich Results",
6
6
  "author": "Harlan Wilton <harlan@harlanzw.com>",