From 0805e9a3ec1d694da3961c62d3a3d5248a3113b0 Mon Sep 17 00:00:00 2001 From: Karim H Date: Fri, 21 Mar 2025 18:40:47 -0400 Subject: [PATCH] feat(ogImage): enhance user-defined OG image path handling with absolute URL support --- quartz/plugins/emitters/ogImage.tsx | 17 +++++------------ quartz/util/path.ts | 9 +++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/quartz/plugins/emitters/ogImage.tsx b/quartz/plugins/emitters/ogImage.tsx index 030208d84..cb95e3258 100644 --- a/quartz/plugins/emitters/ogImage.tsx +++ b/quartz/plugins/emitters/ogImage.tsx @@ -1,14 +1,7 @@ import { QuartzEmitterPlugin } from "../types" import { i18n } from "../../i18n" import { unescapeHTML } from "../../util/escape" -import { - FullSlug, - getFileExtension, - isFullUrl, - isRelativeURL, - joinSegments, - QUARTZ, -} from "../../util/path" +import { FullSlug, getFileExtension, isAbsoluteURL, joinSegments, QUARTZ } from "../../util/path" import { ImageOptions, SocialImageOptions, defaultImage, getSatoriFonts } from "../../util/og" import sharp from "sharp" import satori, { SatoriOptions } from "satori" @@ -154,9 +147,9 @@ export const CustomOgImages: QuartzEmitterPlugin> = let userDefinedOgImagePath = pageData.frontmatter?.socialImage if (userDefinedOgImagePath) { - userDefinedOgImagePath = isRelativeURL(userDefinedOgImagePath) - ? `https://${baseUrl}/static/${userDefinedOgImagePath}` - : userDefinedOgImagePath + userDefinedOgImagePath = isAbsoluteURL(userDefinedOgImagePath) + ? userDefinedOgImagePath + : `https://${baseUrl}/static/${userDefinedOgImagePath}` } const generatedOgImagePath = isRealFile @@ -164,7 +157,7 @@ export const CustomOgImages: QuartzEmitterPlugin> = : undefined const defaultOgImagePath = `https://${baseUrl}/static/og-image.png` const ogImagePath = userDefinedOgImagePath ?? generatedOgImagePath ?? defaultOgImagePath - + console.log("ogImagePath", ogImagePath) const ogImageMimeType = `image/${getFileExtension(ogImagePath) ?? "png"}` return ( <> diff --git a/quartz/util/path.ts b/quartz/util/path.ts index 7dde93b05..23ae40a13 100644 --- a/quartz/util/path.ts +++ b/quartz/util/path.ts @@ -40,6 +40,15 @@ export function isRelativeURL(s: string): s is RelativeURL { return validStart && validEnding && ![".md", ".html"].includes(getFileExtension(s) ?? "") } +export function isAbsoluteURL(s: string): boolean { + try { + new URL(s) + return true + } catch { + return false + } +} + export function getFullSlug(window: Window): FullSlug { const res = window.document.body.dataset.slug! as FullSlug return res