From 425592d09a8275745e140a2f3c74bb1b35e16b0e Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Wed, 6 Sep 2023 22:24:15 -0700
Subject: [PATCH] fix: links to index not showing in graph (closes #450)

---
 quartz/build.ts                           | 1 +
 quartz/components/scripts/graph.inline.ts | 3 ++-
 quartz/plugins/transformers/links.ts      | 1 -
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/quartz/build.ts b/quartz/build.ts
index 22288ac..5752caa 100644
--- a/quartz/build.ts
+++ b/quartz/build.ts
@@ -142,6 +142,7 @@ async function startServing(
 
       const parsedFiles = [...contentMap.values()]
       const filteredContent = filterContent(ctx, parsedFiles)
+
       // TODO: we can probably traverse the link graph to figure out what's safe to delete here
       // instead of just deleting everything
       await rimraf(argv.output)
diff --git a/quartz/components/scripts/graph.inline.ts b/quartz/components/scripts/graph.inline.ts
index d72b297..dc5c99d 100644
--- a/quartz/components/scripts/graph.inline.ts
+++ b/quartz/components/scripts/graph.inline.ts
@@ -47,11 +47,12 @@ async function renderGraph(container: string, fullSlug: FullSlug) {
   const data = await fetchData
 
   const links: LinkData[] = []
+  const validLinks = new Set(Object.keys(data).map((slug) => simplifySlug(slug as FullSlug)))
   for (const [src, details] of Object.entries<ContentDetails>(data)) {
     const source = simplifySlug(src as FullSlug)
     const outgoing = details.links ?? []
     for (const dest of outgoing) {
-      if (dest in data) {
+      if (validLinks.has(dest)) {
         links.push({ source, target: dest })
       }
     }
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index 475a5e9..02ced15 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -5,7 +5,6 @@ import {
   SimpleSlug,
   TransformOptions,
   _stripSlashes,
-  joinSegments,
   simplifySlug,
   splitAnchor,
   transformLink,