Skip to content

Commit 968443a

Browse files
committed
improve logging
1 parent 81a26c3 commit 968443a

File tree

11 files changed

+58
-20
lines changed

11 files changed

+58
-20
lines changed

packages/fern-docs/bundle/src/components/PageHeader.tsx

+13-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { FernBreadcrumbs } from "./FernBreadcrumbs";
1111
import { FernLink } from "./FernLink";
1212

1313
export function PageHeader({
14+
slug,
1415
serialize,
1516
breadcrumb,
1617
title,
@@ -20,6 +21,7 @@ export function PageHeader({
2021
subtitle,
2122
children,
2223
}: {
24+
slug: string;
2325
serialize: MdxSerializer;
2426
breadcrumb: readonly FernNavigation.BreadcrumbItem[];
2527
title: string;
@@ -41,12 +43,16 @@ export function PageHeader({
4143
<WithAction action={action}>
4244
{titleHref == null ? (
4345
<h1 className="fern-page-heading hyphens-auto text-balance break-words">
44-
<MdxServerComponent serialize={serialize} mdx={title} />
46+
<MdxServerComponent serialize={serialize} mdx={title} slug={slug} />
4547
</h1>
4648
) : (
4749
<FernLink href={titleHref} scroll={true}>
4850
<h1 className="fern-page-heading hyphens-auto text-balance break-words">
49-
<MdxServerComponent serialize={serialize} mdx={title} />
51+
<MdxServerComponent
52+
serialize={serialize}
53+
mdx={title}
54+
slug={slug}
55+
/>
5056
</h1>
5157
</FernLink>
5258
)}
@@ -55,7 +61,11 @@ export function PageHeader({
5561
{subtitle && (
5662
<div className="prose-p:text-(color:--grayscale-a11) mt-2 hyphens-auto break-words leading-7">
5763
<React.Suspense fallback={subtitle}>
58-
<MdxServerComponent serialize={serialize} mdx={subtitle} />
64+
<MdxServerComponent
65+
serialize={serialize}
66+
mdx={subtitle}
67+
slug={slug}
68+
/>
5969
</React.Suspense>
6070
</div>
6171
)}

packages/fern-docs/bundle/src/components/api-reference/endpoints/EndpointContent.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export async function EndpointContent({
5656
/>
5757
)
5858
}
59+
slug={node.slug}
5960
>
6061
<EndpointUrlWithPlaygroundBaseUrl
6162
endpoint={endpoint}

packages/fern-docs/bundle/src/components/api-reference/webhooks/WebhookContent.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export async function WebhookContent({
5252
breadcrumb={breadcrumb}
5353
title={node.title}
5454
action={action}
55+
slug={node.slug}
5556
/>
5657
}
5758
aside={webhookExample}

packages/fern-docs/bundle/src/components/api-reference/websockets/WebSocket.tsx

+9-8
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ import { AvailabilityBadge } from "@fern-docs/components/badges";
1212
import { PageHeader } from "@/components/PageHeader";
1313
import { FooterLayout } from "@/components/layouts/FooterLayout";
1414
import { ReferenceLayout } from "@/components/layouts/ReferenceLayout";
15+
import { PlaygroundButton } from "@/components/playground/PlaygroundButton";
1516
import { PlaygroundKeyboardTrigger } from "@/components/playground/PlaygroundKeyboardTrigger";
1617
import { MdxServerComponentProseSuspense } from "@/mdx/components/server-component";
1718
import { MdxSerializer } from "@/server/mdx-serializer";
1819

19-
import { PlaygroundButton } from "@/components/playground/PlaygroundButton";
2020
import { PlaygroundButtonTray } from "../../playground/PlaygroundButtonTray";
2121
import { EndpointSection } from "../endpoints/EndpointSection";
2222
import { EndpointUrlWithPlaygroundBaseUrl } from "../endpoints/EndpointUrlWithPlaygroundBaseUrl";
@@ -97,8 +97,9 @@ export async function WebSocketContent({
9797
)
9898
}
9999
action={action}
100+
slug={node.slug}
100101
>
101-
<EndpointUrlWithPlaygroundBaseUrl
102+
<EndpointUrlWithPlaygroundBaseUrl
102103
endpoint={channel}
103104
className="hidden lg:flex"
104105
/>
@@ -147,12 +148,12 @@ export async function WebSocketContent({
147148
strokeWidth={1.5}
148149
/>
149150
</span>
150-
</span>
151-
{node != null && (
152-
<>
153-
<PlaygroundButton state={node} className="md:hidden" />
154-
</>
155-
)}
151+
</span>
152+
{node != null && (
153+
<>
154+
<PlaygroundButton state={node} className="md:hidden" />
155+
</>
156+
)}
156157
</span>
157158
}
158159
slug={node.slug}

packages/fern-docs/bundle/src/components/changelog/ChangelogEntryPage.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export default function ChangelogEntryPage({
5555
</ChangelogContentLayout>
5656
</HideBuiltWithFern>
5757
<FooterLayoutWithEditThisPageUrl
58+
slug={node.slug}
5859
pageId={node.pageId}
5960
loader={loader}
6061
serialize={serialize}
@@ -68,17 +69,20 @@ async function FooterLayoutWithEditThisPageUrl({
6869
pageId,
6970
loader,
7071
serialize,
72+
slug,
7173
bottomNavigation,
7274
}: {
7375
pageId: string;
7476
loader: DocsLoader;
7577
serialize: MdxSerializer;
78+
slug: string;
7679
bottomNavigation: React.ReactNode;
7780
}) {
7881
// all this does is get the edit this page url from the mdx frontmatter, but hopefully the mdx was already serialized and cached
7982
const page = await loader.getPage(pageId);
8083
const mdx = await serialize(page.markdown, {
8184
filename: page.filename,
85+
slug,
8286
});
8387
const editThisPageUrl =
8488
mdx?.frontmatter?.["edit-this-page-url"] ?? page.editThisPageUrl;

packages/fern-docs/bundle/src/components/changelog/ChangelogPage.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export async function ChangelogPageOverview({
114114
: undefined;
115115
const mdx = await serialize(page?.markdown, {
116116
filename: page?.filename,
117-
url: `https://${loader.domain}/${node.slug}`,
117+
slug: node.slug,
118118
});
119119

120120
return (
@@ -125,6 +125,7 @@ export async function ChangelogPageOverview({
125125
titleHref={addLeadingSlash(node.slug)}
126126
subtitle={mdx?.frontmatter?.subtitle ?? mdx?.frontmatter?.excerpt}
127127
breadcrumb={breadcrumb}
128+
slug={node.slug}
128129
/>
129130
<Markdown mdx={mdx} fallback={page?.markdown} />
130131
</>
@@ -143,11 +144,12 @@ export async function ChangelogPageEntry({
143144
const page = await loader.getPage(node.pageId);
144145
const mdx = await serialize(page.markdown, {
145146
filename: page.filename,
146-
url: `https://${loader.domain}/${node.slug}`,
147+
slug: node.slug,
147148
});
148149

149150
const title = await serialize(mdx?.frontmatter?.title, {
150-
url: `https://${loader.domain}/${node.slug}`,
151+
filename: page.filename,
152+
slug: node.slug,
151153
});
152154

153155
return (

packages/fern-docs/bundle/src/components/layouts/LayoutEvaluator.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export async function LayoutEvaluator({
3434
const mdx = await serialize(markdown, {
3535
filename,
3636
toc: true,
37-
url: `https://${loader.domain}/${slug}`,
37+
slug,
3838
});
3939

4040
const exports = getMDXExport(mdx);
@@ -60,6 +60,7 @@ export async function LayoutEvaluator({
6060
) : undefined
6161
}
6262
bottomNavigation={bottomNavigation}
63+
slug={slug}
6364
>
6465
<MdxContent mdx={mdx} fallback={markdown} />
6566
</LayoutEvaluatorContent>

packages/fern-docs/bundle/src/components/layouts/LayoutEvaluatorContent.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export async function LayoutEvaluatorContent({
3030
children,
3131
aside,
3232
bottomNavigation,
33+
slug,
3334
}: {
3435
serialize: MdxSerializer;
3536
frontmatter?: Partial<FernDocs.Frontmatter>;
@@ -40,6 +41,7 @@ export async function LayoutEvaluatorContent({
4041
children: React.ReactNode;
4142
aside?: React.ReactNode;
4243
bottomNavigation?: React.ReactNode;
44+
slug: string;
4345
}) {
4446
let layout = frontmatter?.layout ?? "guide";
4547

@@ -53,6 +55,7 @@ export async function LayoutEvaluatorContent({
5355
title={title}
5456
subtitle={subtitle}
5557
breadcrumb={breadcrumb}
58+
slug={slug}
5659
/>
5760
);
5861

packages/fern-docs/bundle/src/components/shared-page.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,8 @@ async function getNeighbor(
297297
const page = await loader.getPage(pageId);
298298
const mdx = await serialize(page.markdown, {
299299
filename: page.filename,
300+
slug: node.slug,
301+
toc: true, // this is probably already cached with toc: true
300302
});
301303
const excerpt = mdx?.frontmatter?.subtitle ?? mdx?.frontmatter?.excerpt;
302304
return {

packages/fern-docs/bundle/src/mdx/components/server-component.tsx

+14-1
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,20 @@ export async function MdxServerComponent({
1212
serialize,
1313
mdx,
1414
filename,
15+
slug,
1516
}: {
1617
serialize: MdxSerializer;
1718
mdx: string | null | undefined;
1819
filename?: string;
20+
slug?: string;
1921
}) {
2022
if (!mdx) {
2123
return null;
2224
}
2325

2426
const parsed_mdx = await serialize(mdx, {
2527
filename,
28+
slug,
2629
});
2730

2831
return <MdxContent mdx={parsed_mdx} fallback={mdx} />;
@@ -34,13 +37,15 @@ export function MdxServerComponentProse({
3437
size,
3538
className,
3639
filename,
40+
slug,
3741
fallback,
3842
}: {
3943
serialize: MdxSerializer;
4044
mdx: string | null | undefined;
4145
size?: "xs" | "sm" | "base" | "lg";
4246
className?: string;
4347
filename?: string;
48+
slug?: string;
4449
fallback?: React.ReactNode;
4550
}) {
4651
if (!mdx) {
@@ -53,7 +58,12 @@ export function MdxServerComponentProse({
5358

5459
return (
5560
<Prose size={size} className={className}>
56-
<MdxServerComponent mdx={mdx} serialize={serialize} filename={filename} />
61+
<MdxServerComponent
62+
mdx={mdx}
63+
serialize={serialize}
64+
filename={filename}
65+
slug={slug}
66+
/>
5767
</Prose>
5868
);
5969
}
@@ -65,12 +75,14 @@ export function MdxServerComponentProseSuspense({
6575
className,
6676
fallback,
6777
filename,
78+
slug,
6879
}: {
6980
serialize: MdxSerializer;
7081
mdx: string | null | undefined;
7182
size?: "xs" | "sm" | "base" | "lg";
7283
className?: string;
7384
filename?: string;
85+
slug?: string;
7486
fallback?: React.ReactNode;
7587
}) {
7688
return (
@@ -95,6 +107,7 @@ export function MdxServerComponentProseSuspense({
95107
className={className}
96108
fallback={fallback}
97109
filename={filename}
110+
slug={slug}
98111
/>
99112
</React.Suspense>
100113
</ErrorBoundary>

packages/fern-docs/bundle/src/server/mdx-serializer.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ export type MdxSerializerOptions = {
2626
*/
2727
scope?: Record<string, unknown>;
2828
/**
29-
* The URL of the page being serialized.
29+
* The slug of the page being serialized.
3030
*/
31-
url?: string;
31+
slug?: string;
3232
};
3333

3434
export type MdxSerializer = (
@@ -66,7 +66,7 @@ export function createCachedMdxSerializer(
6666

6767
// this lets us key on just
6868
const cachedSerializer = unstable_cache(
69-
async ({ filename, toc, scope, url }: MdxSerializerOptions) => {
69+
async ({ filename, toc, scope, slug }: MdxSerializerOptions) => {
7070
const authState = await loader.getAuthState();
7171

7272
try {
@@ -84,7 +84,7 @@ export function createCachedMdxSerializer(
8484
console.error("Error serializing mdx", error);
8585

8686
postToEngineeringNotifs(
87-
`:rotating_light: [${domain}] \`Serialize MDX\` encountered an error: \`${String(error)}\` (url: \`${url ?? "unknown"}\``,
87+
`:rotating_light: [${domain}] \`Serialize MDX\` encountered an error: \`${String(error)}\` (url: \`https://${domain}/${slug ?? "UNKNOWN"}\`)`,
8888
{
8989
message: content,
9090
mrkdwn: true,

0 commit comments

Comments
 (0)