fix(ogImage): update socialImage path to include base URL if defined (#1858)
* fix(ogImage): update socialImage path to include base URL if defined * feat(path): add function to check if a file path is absolute * fix(ogImage): handle absolute paths for user defined og image paths * docs(CustomOgImages): update socialImage property to accept full URLs * fix(ogImage): typo * fix(ogImage): improve user-defined OG image path handling * Update docs/plugins/CustomOgImages.md Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com> * Update quartz/plugins/emitters/ogImage.tsx Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com> * refactor(path): remove isAbsoluteFilePath function * fix(ogImage): update user-defined OG image path handling to support relative URLs * feat(ogImage): enhance user-defined OG image path handling with absolute URL support * refactor(ogImage): remove debug log for ogImagePath * feat(path): add isAbsoluteURL function and corresponding tests * refactor(path): remove unused URL import for isomorphic compatibility --------- Co-authored-by: Karim H <karimh96@hotmail.com> Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
This commit is contained in:
		@@ -38,6 +38,17 @@ describe("typeguards", () => {
 | 
			
		||||
    assert(!path.isRelativeURL("./abc/def.md"))
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test("isAbsoluteURL", () => {
 | 
			
		||||
    assert(path.isAbsoluteURL("https://example.com"))
 | 
			
		||||
    assert(path.isAbsoluteURL("http://example.com"))
 | 
			
		||||
    assert(path.isAbsoluteURL("ftp://example.com/a/b/c"))
 | 
			
		||||
    assert(path.isAbsoluteURL("http://host/%25"))
 | 
			
		||||
    assert(path.isAbsoluteURL("file://host/twoslashes?more//slashes"))
 | 
			
		||||
 | 
			
		||||
    assert(!path.isAbsoluteURL("example.com/abc/def"))
 | 
			
		||||
    assert(!path.isAbsoluteURL("abc"))
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test("isFullSlug", () => {
 | 
			
		||||
    assert(path.isFullSlug("index"))
 | 
			
		||||
    assert(path.isFullSlug("abc/def"))
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
import { slug as slugAnchor } from "github-slugger"
 | 
			
		||||
import type { Element as HastElement } from "hast"
 | 
			
		||||
import { clone } from "./clone"
 | 
			
		||||
 | 
			
		||||
// this file must be isomorphic so it can't use node libs (e.g. path)
 | 
			
		||||
 | 
			
		||||
export const QUARTZ = "quartz"
 | 
			
		||||
@@ -39,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)
 | 
			
		||||
  } catch {
 | 
			
		||||
    return false
 | 
			
		||||
  }
 | 
			
		||||
  return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getFullSlug(window: Window): FullSlug {
 | 
			
		||||
  const res = window.document.body.dataset.slug! as FullSlug
 | 
			
		||||
  return res
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user