@unhead/schema-org 0.1.1 → 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":
@@ -1581,6 +1585,7 @@ const resolveMeta = (meta) => {
1581
1585
  meta.url = meta.canonicalUrl;
1582
1586
  meta.url = joinURL(meta.host, meta.path);
1583
1587
  return {
1588
+ ...meta,
1584
1589
  host: meta.host,
1585
1590
  url: meta.url,
1586
1591
  currency: meta.currency,
@@ -1832,6 +1837,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
1832
1837
  const defineBook = (input) => provideResolver(input, "book");
1833
1838
  const defineCourse = (input) => provideResolver(input, "course");
1834
1839
  const defineItemList = (input) => provideResolver(input, "itemList");
1840
+ const defineListItem = (input) => provideResolver(input, "listItem");
1835
1841
  const defineMovie = (input) => provideResolver(input, "movie");
1836
1842
  const defineSearchAction = (input) => provideResolver(input, "searchAction");
1837
1843
  const defineReadAction = (input) => provideResolver(input, "readAction");
@@ -1884,6 +1890,7 @@ exports.defineHowTo = defineHowTo;
1884
1890
  exports.defineHowToStep = defineHowToStep;
1885
1891
  exports.defineImage = defineImage;
1886
1892
  exports.defineItemList = defineItemList;
1893
+ exports.defineListItem = defineListItem;
1887
1894
  exports.defineLocalBusiness = defineLocalBusiness;
1888
1895
  exports.defineMovie = defineMovie;
1889
1896
  exports.defineOffer = defineOffer;
@@ -1909,6 +1916,7 @@ exports.howToStepDirectionResolver = howToStepDirectionResolver;
1909
1916
  exports.howToStepResolver = howToStepResolver;
1910
1917
  exports.imageResolver = imageResolver;
1911
1918
  exports.itemListResolver = itemListResolver;
1919
+ exports.listItemResolver = listItemResolver;
1912
1920
  exports.localBusinessResolver = localBusinessResolver;
1913
1921
  exports.movieResolver = movieResolver;
1914
1922
  exports.offerResolver = offerResolver;
@@ -1921,7 +1929,6 @@ exports.questionResolver = questionResolver;
1921
1929
  exports.ratingResolver = ratingResolver;
1922
1930
  exports.readActionResolver = readActionResolver;
1923
1931
  exports.recipeResolver = recipeResolver;
1924
- exports.resolveListItem = resolveListItem;
1925
1932
  exports.resolveMeta = resolveMeta;
1926
1933
  exports.resolveNode = resolveNode;
1927
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":
@@ -1579,6 +1583,7 @@ const resolveMeta = (meta) => {
1579
1583
  meta.url = meta.canonicalUrl;
1580
1584
  meta.url = joinURL(meta.host, meta.path);
1581
1585
  return {
1586
+ ...meta,
1582
1587
  host: meta.host,
1583
1588
  url: meta.url,
1584
1589
  currency: meta.currency,
@@ -1830,6 +1835,7 @@ const defineWebSite = (input) => provideResolver(input, "webSite");
1830
1835
  const defineBook = (input) => provideResolver(input, "book");
1831
1836
  const defineCourse = (input) => provideResolver(input, "course");
1832
1837
  const defineItemList = (input) => provideResolver(input, "itemList");
1838
+ const defineListItem = (input) => provideResolver(input, "listItem");
1833
1839
  const defineMovie = (input) => provideResolver(input, "movie");
1834
1840
  const defineSearchAction = (input) => provideResolver(input, "searchAction");
1835
1841
  const defineReadAction = (input) => provideResolver(input, "readAction");
@@ -1847,4 +1853,4 @@ function useSchemaOrg(input) {
1847
1853
  }, { mode: process.env.NODE_ENV === "development" ? "all" : "server" });
1848
1854
  }
1849
1855
 
1850
- 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.1",
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>",