gatsby-theme-advanced
Version:
GatsbyJS theme equipped with advanced features.
48 lines (47 loc) • 1.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateSeoData = exports.generatePostData = void 0;
const remove_markdown_1 = __importDefault(require("remove-markdown"));
// Generate postData from a allMdx edge
const generatePostData = (post) => {
const { coverImageUrl, coverImageAlt, datePublished, dateModified, description, title, category, tags, internalContent, excerpt, } = post;
if (!internalContent)
throw Error("SEO::generatePostData: Post doesn't contain internal content used for Rich Tags. Aborting.");
const body = (0, remove_markdown_1.default)(internalContent);
return {
title,
description: description || excerpt,
coverImageUrl,
coverImageAlt,
datePublished,
dateModified,
category: category || "None",
tags: tags || [],
body,
url: post.url,
};
};
exports.generatePostData = generatePostData;
// Generate shared SEO metadata
const generateSeoData = (websiteData, postData) => {
const isArticle = !!postData;
const title = postData ? postData.title : websiteData.title;
const type = postData ? "article" : "website";
const imageUrl = postData ? postData.coverImageUrl : websiteData.logoUrl;
const imageAlt = postData ? postData.coverImageAlt : websiteData.description;
const url = postData ? postData.url : websiteData.url;
const description = postData ? postData.description : websiteData.description;
return {
isArticle,
type,
title,
imageUrl,
imageAlt,
url,
description,
};
};
exports.generateSeoData = generateSeoData;