gatsby-theme-advanced
Version:
GatsbyJS theme equipped with advanced features.
73 lines (72 loc) • 2.61 kB
JSX
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateArticleMetadata = exports.generateOrganizationMetadata = exports.getAuthorMetadata = void 0;
const react_1 = __importDefault(require("react"));
const getAuthorMetadata = (userData) => ({
"@type": "Person",
givenName: userData.firstName,
familyName: userData.lastName,
email: userData.email,
address: userData.location,
});
exports.getAuthorMetadata = getAuthorMetadata;
const generateOrganizationMetadata = (orgData) => {
const { url, logoUrl, description, name } = orgData;
return {
"@context": "https://schema.org",
"@type": "Organization",
url,
name,
description,
logo: logoUrl,
};
};
exports.generateOrganizationMetadata = generateOrganizationMetadata;
const generateArticleMetadata = (postData, orgData, userData) => {
const { title, description, coverImageUrl, datePublished, dateModified, category, tags, body, url, } = postData;
const orgMetaData = orgData
? (0, exports.generateOrganizationMetadata)(orgData)
: undefined;
const authorData = userData ? (0, exports.getAuthorMetadata)(userData) : undefined;
if (!coverImageUrl || !description)
return null;
return {
"@context": "http://schema.org",
"@type": "BlogPosting",
image: coverImageUrl,
url,
headline: title,
name: title,
description,
dateCreated: datePublished,
datePublished,
dateModified,
author: authorData,
creator: authorData,
publisher: orgMetaData,
mainEntityOfPage: "True",
keywords: tags,
articleSection: category,
articleBody: body,
};
};
exports.generateArticleMetadata = generateArticleMetadata;
const RichSearchResultTags = ({ seoData, postData, userData, orgData, }) => {
const { isArticle } = seoData;
const articleJsonLd = isArticle && postData
? (0, exports.generateArticleMetadata)(postData, orgData, userData)
: undefined;
const orgJsonLd = orgData ? (0, exports.generateOrganizationMetadata)(orgData) : undefined;
const jsonLdData = isArticle ? articleJsonLd : orgJsonLd;
return jsonLdData
? [
<script key="rich-search" type="application/ld+json">
{JSON.stringify(jsonLdData)}
</script>,
]
: [];
};
exports.default = RichSearchResultTags;