arc-xp-custom-blocks
Version:
arc libraries for ingala
106 lines (105 loc) • 3.2 kB
JavaScript
import generateResizedImageUrl from "./generateResizedImageUrl.js";
function searchPageMetaDataGenerator(fusionContext = {}, metaValue = () => {
}) {
var _a, _b, _c, _d;
const { arcSite, globalContent = {}, requestUri, siteProperties = {} } = fusionContext;
const {
fallbackImageAlt,
fallbackImageAuth,
fallbackImageFocalPoint,
fallbackImageUrl,
keywords,
metaData = { ogImageWidth: 1200, ogImageHeight: 630 },
resizerTokenVersion = "1",
resizerURL,
twitterUsername,
websiteDomain,
websiteName
} = siteProperties;
const { ogImageWidth, ogImageHeight, twitterCard } = metaData;
const config = { resizerTokenVersion, resizerURL };
const promoItem = {
url: fallbackImageUrl,
auth: { [resizerTokenVersion]: fallbackImageAuth },
focal_point: fallbackImageFocalPoint
};
const searchKeywords = ((_a = metaValue("keywords")) == null ? void 0 : _a.trim()) || (keywords == null ? void 0 : keywords.trim());
const searchTitle = ((_b = metaValue("title")) == null ? void 0 : _b.trim()) || websiteName;
const imageUrl = generateResizedImageUrl(promoItem, config, ogImageWidth, ogImageHeight);
const robots = ((_c = metaValue("robots")) == null ? void 0 : _c.trim()) || ((_d = siteProperties == null ? void 0 : siteProperties.robots) == null ? void 0 : _d.trim());
const url = requestUri && `${websiteDomain}${requestUri}` || websiteDomain;
const metadata = {};
const metadataProperties = {
"robots": robots && {
name: "robots",
content: robots
},
"og:site_name": websiteName && {
property: "og:site_name",
content: websiteName
},
"og:type": {
property: "og:type",
content: "website"
},
"og:url": url && {
name: "og:url",
content: url
},
"og:title": searchTitle && {
property: "og:title",
content: searchTitle
},
"twitter:title": searchTitle && {
name: "twitter:title",
content: searchTitle
},
"author": websiteName && {
name: "author",
content: websiteName
},
"keywords": searchKeywords && {
name: "keywords",
content: searchKeywords
},
"og:image": imageUrl && {
property: "og:image",
content: imageUrl
},
"twitter:image": imageUrl && {
name: "twitter:image",
content: imageUrl
},
"og:image:alt": fallbackImageAlt && {
property: "og:image:alt",
content: fallbackImageAlt
},
"twitter:image:alt": fallbackImageAlt && {
name: "twitter:image:alt",
content: fallbackImageAlt
},
"og:image:width": imageUrl && {
property: "og:image:width",
content: ogImageWidth
},
"og:image:height": imageUrl && {
property: "og:image:height",
content: ogImageHeight
},
"twitter:card": twitterCard && {
name: "twitter:card",
content: twitterCard
},
"twitter:site": twitterUsername && {
name: "twitter:site",
content: `@${twitterUsername}`
}
};
Object.entries(metadataProperties).forEach(([key, value]) => {
value ? metadata[key] = value : null;
});
return metadata;
}
export {
searchPageMetaDataGenerator as default
};