Skip to content

Commit

Permalink
remove fern-docs/cache
Browse files Browse the repository at this point in the history
  • Loading branch information
abvthecity committed Feb 13, 2025
1 parent 9a6515a commit 55a0b32
Show file tree
Hide file tree
Showing 55 changed files with 455 additions and 603 deletions.
10 changes: 6 additions & 4 deletions packages/fern-docs/bundle/next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ const nextConfig: NextConfig = {
"@fern-api/template-resolver",
"@fern-api/ui-core-utils",
"@fern-docs/auth",
"@fern-docs/cache",
"@fern-docs/components",
"@fern-docs/edge-config",
"@fern-docs/mdx",
Expand All @@ -64,8 +63,8 @@ const nextConfig: NextConfig = {
"ts-essentials",
"lucide-react",
],
optimizeServerReact: true,
typedEnv: true,
optimizeServerReact: Boolean(process.env.VERCEL),
// typedEnv: true,
newDevOverlay: true,
authInterrupts: true,
swcTraceProfiling: true,
Expand All @@ -74,6 +73,7 @@ const nextConfig: NextConfig = {
parallelServerBuildTraces: true,
webpackMemoryOptimizations: true,
taint: true,
useCache: true,
},

skipMiddlewareUrlNormalize: true,
Expand Down Expand Up @@ -206,7 +206,9 @@ function withVercelEnv(config: NextConfig): NextConfig {
return {
...config,
deploymentId: process.env.VERCEL_DEPLOYMENT_ID, // skew protection
productionBrowserSourceMaps: process.env.VERCEL_ENV === "preview",
productionBrowserSourceMaps:
process.env.VERCEL_ENV === "preview" ||
process.env.NODE_ENV === "development",
reactProductionProfiling: process.env.VERCEL_ENV !== "production",
};
}
Expand Down
1 change: 0 additions & 1 deletion packages/fern-docs/bundle/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
"@fern-api/template-resolver": "workspace:*",
"@fern-api/ui-core-utils": "workspace:*",
"@fern-docs/auth": "workspace:*",
"@fern-docs/cache": "workspace:*",
"@fern-docs/components": "workspace:*",
"@fern-docs/edge-config": "workspace:*",
"@fern-docs/mdx": "workspace:*",
Expand Down
6 changes: 1 addition & 5 deletions packages/fern-docs/bundle/src/app/[domain]/_page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,7 @@ export default async function Page({
}

// TODO: parallelize this with the other edge config calls:
const [launchDarkly, flagPredicate] = await withLaunchDarkly(
loader.domain,
authState,
found
);
const [launchDarkly, flagPredicate] = await withLaunchDarkly(loader, found);

if (
![...found.parents, found.node]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from "next/server";

import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import { getDocsDomainEdge } from "@/server/xfernhost/edge";

export const runtime = "edge";
Expand All @@ -17,7 +17,8 @@ export async function GET(req: NextRequest): Promise<NextResponse> {
return NextResponse.json({ error: "Invalid domain" }, { status: 400 });
}

const metadata = await getOrgMetadataForDomain(domain);
const loader = await createCachedDocsLoader(domain);
const metadata = await loader.getMetadata();

if (metadata) {
return NextResponse.json(metadata, { status: 200 });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { COOKIE_FERN_TOKEN, withoutStaging } from "@fern-docs/utils";

import { track } from "@/server/analytics/posthog";
import { safeVerifyFernJWTConfig } from "@/server/auth/FernJWT";
import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import { openaiApiKey, turbopufferApiKey } from "@/server/env-variables";
import { getDocsDomainEdge } from "@/server/xfernhost/edge";

Expand Down Expand Up @@ -46,12 +46,13 @@ export async function POST(req: NextRequest) {
const namespace = `${withoutStaging(domain)}_${embeddingModel.modelId}`;
const { messages } = await req.json();

const orgMetadata = await getOrgMetadataForDomain(withoutStaging(domain));
if (orgMetadata == null) {
const loader = await createCachedDocsLoader(domain);
const metadata = await loader.getMetadata();
if (metadata == null) {
return NextResponse.json("Not found", { status: 404 });
}

if (orgMetadata.isPreviewUrl) {
if (metadata.isPreview) {
return NextResponse.json({
added: 0,
updated: 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
import { COOKIE_FERN_TOKEN, withoutStaging } from "@fern-docs/utils";

import { safeVerifyFernJWTConfig } from "@/server/auth/FernJWT";
import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import { algoliaAppId, algoliaSearchApikey } from "@/server/env-variables";
import { selectFirst } from "@/server/utils/selectFirst";
import { getDocsDomainEdge } from "@/server/xfernhost/edge";
Expand All @@ -21,12 +21,13 @@ export const maxDuration = 10;
export async function GET(req: NextRequest): Promise<NextResponse> {
const domain = getDocsDomainEdge(req);

const orgMetadata = await getOrgMetadataForDomain(withoutStaging(domain));
if (orgMetadata == null) {
const loader = await createCachedDocsLoader(domain);
const metadata = await loader.getMetadata();
if (metadata == null) {
return NextResponse.json("Not found", { status: 404 });
}

if (orgMetadata.isPreviewUrl) {
if (metadata.isPreview) {
return NextResponse.json("Search is not supported for preview URLs", {
status: 400,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
import { addLeadingSlash, withoutStaging } from "@fern-docs/utils";

import { track } from "@/server/analytics/posthog";
import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import {
algoliaAppId,
algoliaWriteApiKey,
Expand All @@ -25,13 +25,14 @@ export async function GET(req: NextRequest): Promise<NextResponse> {
const domain = getDocsDomainEdge(req);

try {
const orgMetadata = await getOrgMetadataForDomain(withoutStaging(domain));
if (orgMetadata == null) {
const loader = await createCachedDocsLoader(domain);
const metadata = await loader.getMetadata();
if (metadata == null) {
return NextResponse.json("Not found", { status: 404 });
}

// If the domain is a preview URL, we don't want to reindex
if (orgMetadata.isPreviewUrl) {
if (metadata.isPreview) {
return NextResponse.json({
added: 0,
updated: 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { turbopufferUpsertTask } from "@fern-docs/search-server/turbopuffer";
import { addLeadingSlash, withoutStaging } from "@fern-docs/utils";

import { track } from "@/server/analytics/posthog";
import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import {
fdrEnvironment,
fernToken_admin,
Expand All @@ -30,13 +30,14 @@ export async function GET(req: NextRequest): Promise<NextResponse> {
const namespace = `${withoutStaging(domain)}_${embeddingModel.modelId}`;

try {
const orgMetadata = await getOrgMetadataForDomain(withoutStaging(domain));
if (orgMetadata == null) {
const loader = await createCachedDocsLoader(domain);
const metadata = await loader.getMetadata();
if (metadata == null) {
return NextResponse.json("Not found", { status: 404 });
}

// If the domain is a preview URL, we don't want to reindex
if (orgMetadata.isPreviewUrl) {
if (metadata.isPreview) {
return NextResponse.json(
{
added: 0,
Expand Down
6 changes: 4 additions & 2 deletions packages/fern-docs/bundle/src/app/[domain]/dynamic/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { getFernToken } from "@/app/fern-token";
import type { NavbarLink } from "@/components/atoms/types";
import { Header } from "@/components/header/Header";
import { Announcement } from "@/components/header/announcement";
Expand All @@ -19,7 +20,7 @@ export default async function DocsLayout({
}) {
const { domain } = await params;

const loader = await createCachedDocsLoader(domain);
const loader = await createCachedDocsLoader(domain, await getFernToken());
const [{ basePath }, root, config, edgeFlags, files, colors, layout] =
await Promise.all([
loader.getBaseUrl(),
Expand Down Expand Up @@ -111,18 +112,19 @@ export default async function DocsLayout({
header={
<Header
className="max-w-page-width mx-auto"
colors={colors}
logo={
<Logo
logo={withLogo(config, resolveFileSrc, basePath)}
className="w-fit shrink-0"
/>
}
versionSelect={false}
showThemeButton={Boolean(colors.dark && colors.light)}
showSearchBar={layout.searchbarPlacement === "HEADER"}
navbarLinks={navbarLinks}
/>
}
headerHeight={layout.headerHeight}
sidebar={
<Sidebar
logo={
Expand Down
11 changes: 5 additions & 6 deletions packages/fern-docs/bundle/src/app/[domain]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ import { withJsConfig } from "@/components/components/with-js-config";
import { FeatureFlagProvider } from "@/components/feature-flags/FeatureFlagProvider";
import Preload, { type PreloadHref } from "@/components/preload";
import { renderThemeStylesheet } from "@/components/themes/stylesheet/renderThemeStylesheet";
import { getOrgMetadataForDomain } from "@/server/auth/metadata-for-url";
import { createCachedDocsLoader } from "@/server/docs-loader";
import { DocsLoader, createCachedDocsLoader } from "@/server/docs-loader";
import type { RgbaColor } from "@/server/types";
import { DarkCode } from "@/state/dark-code";

Expand Down Expand Up @@ -57,7 +56,7 @@ export default async function Layout(props: {
loader.getFiles(),
loader.getColors(),
deprecated_getCustomerAnalytics(domain),
getLaunchDarklyInfo(domain),
getLaunchDarklyInfo(loader),
]);

const preloadHrefs = generatePreloadHrefs(
Expand Down Expand Up @@ -126,11 +125,11 @@ function mergeCustomerAnalytics(
}

async function getLaunchDarklyInfo(
domain: string
loader: DocsLoader
): Promise<LaunchDarklyInfo | undefined> {
const unstable_launchDarklySettings = await getLaunchDarklySettings(
domain,
getOrgMetadataForDomain(domain).then((metadata) => metadata?.orgId)
loader.domain,
loader.getMetadata().then((metadata) => metadata.org)
);
if (!unstable_launchDarklySettings) {
return undefined;
Expand Down
8 changes: 7 additions & 1 deletion packages/fern-docs/bundle/src/app/[domain]/static/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
"use cache";

import { unstable_cacheTag } from "next/cache";

import type { NavbarLink } from "@/components/atoms/types";
import { Header } from "@/components/header/Header";
import { Announcement } from "@/components/header/announcement";
Expand All @@ -18,6 +22,7 @@ export default async function DocsLayout({
params: Promise<{ domain: string }>;
}) {
const { domain } = await params;
unstable_cacheTag(domain, "static", "layout");

const loader = await createCachedDocsLoader(domain);
const [{ basePath }, root, config, edgeFlags, files, colors, layout] =
Expand Down Expand Up @@ -111,7 +116,6 @@ export default async function DocsLayout({
header={
<Header
className="max-w-page-width mx-auto"
colors={colors}
logo={
<Logo
logo={withLogo(config, resolveFileSrc, basePath)}
Expand All @@ -120,9 +124,11 @@ export default async function DocsLayout({
}
versionSelect={false}
showSearchBar={layout.searchbarPlacement === "HEADER"}
showThemeButton={Boolean(colors.dark && colors.light)}
navbarLinks={navbarLinks}
/>
}
headerHeight={layout.headerHeight}
sidebar={
<Sidebar
logo={
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import type * as FernNavigation from "@fern-api/fdr-sdk/navigation";

import { DocsLoader } from "@/server/docs-loader";

import { ApiPageLayout } from "./api-page-layout";
import { EndpointContent } from "./endpoints/EndpointContent";
import { WebhookContent } from "./webhooks/WebhookContent";
import { WebSocketContent } from "./websockets/WebSocket";
Expand All @@ -25,14 +24,12 @@ export default async function ApiEndpointPage({
const apiDefinition = await loader.getApi(node.apiDefinitionId);

return (
<ApiPageLayout>
<ApiEndpointContent
loader={loader}
node={node}
apiDefinition={apiDefinition}
breadcrumb={breadcrumb}
/>
</ApiPageLayout>
<ApiEndpointContent
loader={loader}
node={node}
apiDefinition={apiDefinition}
breadcrumb={breadcrumb}
/>
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export async function EndpointContent({

return (
<EndpointContextProvider endpoint={endpoint}>
<ApiPageCenter slug={node.slug}>
<ApiPageCenter slug={node.slug} asChild>
<ReferenceLayout
header={
<PageHeader
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ const UnmemoizedEndpointContentCodeSnippets: React.FC<
className={cn(
// note: .fern-endpoint-code-snippets class is used to detect clicks outside of the code snippets
// this is used to clear the selected error when the user clicks outside of the error
"fern-endpoint-code-snippets",
"fern-endpoint-code-snippets w-full",
// this is used to ensure that two long code snippets will take up the same height,
// but if one is shorter the other snippet will take up the remaining space
"grid grid-rows-[repeat(auto-fit,minmax(0,min-content))] gap-6",
Expand Down
Loading

0 comments on commit 55a0b32

Please sign in to comment.