@unhead/schema-org
Version:
Unhead Schema.org for Simple and Automated Google Rich Results
47 lines (44 loc) • 1.63 kB
JavaScript
import { d as defineSchemaOrgResolver, a9 as IdentityId, a6 as setIfEmpty, a7 as idReference, e as resolveRelation } from '../shared/schema-org.Cp6bpwL2.mjs';
import { aggregateOfferResolver } from './index.mjs';
import { aggregateRatingResolver } from './index2.mjs';
import { offerResolver } from './index23.mjs';
import { reviewResolver } from './index32.mjs';
import { d as PrimaryWebPageId } from './index3.mjs';
import 'unhead/plugins';
import 'unhead/utils';
import 'ufo';
import '../shared/schema-org.Dg61qWpa.mjs';
import '../shared/schema-org.40UJYB57.mjs';
import './index16.mjs';
import './index28.mjs';
import './index40.mjs';
import './index39.mjs';
const ProductId = "#product";
const productResolver = defineSchemaOrgResolver({
defaults: {
"@type": "Product"
},
inheritMeta: [
"description",
"image",
{ meta: "title", key: "name" }
],
idPrefix: ["url", ProductId],
resolve(node, ctx) {
node.aggregateOffer = resolveRelation(node.aggregateOffer, ctx, aggregateOfferResolver);
node.aggregateRating = resolveRelation(node.aggregateRating, ctx, aggregateRatingResolver);
node.offers = resolveRelation(node.offers, ctx, offerResolver);
node.review = resolveRelation(node.review, ctx, reviewResolver);
return node;
},
resolveRootNode(product, { find }) {
const webPage = find(PrimaryWebPageId);
const identity = find(IdentityId);
if (identity)
setIfEmpty(product, "brand", idReference(identity));
if (webPage)
setIfEmpty(product, "mainEntityOfPage", idReference(webPage));
return product;
}
});
export { ProductId, productResolver };