diff --git a/docs/site/lib/md-tracking.ts b/docs/site/lib/md-tracking.ts index 3a59c431151b2..6dd3ff7a05ab4 100644 --- a/docs/site/lib/md-tracking.ts +++ b/docs/site/lib/md-tracking.ts @@ -6,6 +6,12 @@ interface TrackMdRequestParams { userAgent: string | null; referer: string | null; acceptHeader: string | null; + /** + * How the markdown was requested: + * - 'md-url' for direct .md URLs + * - 'header-negotiated' for Accept header + */ + requestType?: "md-url" | "header-negotiated"; } /** @@ -16,7 +22,8 @@ export async function trackMdRequest({ path, userAgent, referer, - acceptHeader + acceptHeader, + requestType }: TrackMdRequestParams): Promise { if (!MD_TRACKING_URL || !MD_TRACKING_API_KEY) { // Tracking not configured, skip silently @@ -35,7 +42,8 @@ export async function trackMdRequest({ source: "turborepo", userAgent, referer, - acceptHeader + acceptHeader, + requestType }) }); diff --git a/docs/site/proxy.ts b/docs/site/proxy.ts index 86a159329bd2f..148fa48d3b6f0 100644 --- a/docs/site/proxy.ts +++ b/docs/site/proxy.ts @@ -18,14 +18,16 @@ const internationalizer = createI18nMiddleware(i18n); function trackMd( request: NextRequest, context: NextFetchEvent, - path: string + path: string, + requestType?: "md-url" | "header-negotiated" ): void { context.waitUntil( trackMdRequest({ path, userAgent: request.headers.get("user-agent"), referer: request.headers.get("referer"), - acceptHeader: request.headers.get("accept") + acceptHeader: request.headers.get("accept"), + requestType }) ); } @@ -54,7 +56,7 @@ const proxy = (request: NextRequest, context: NextFetchEvent) => { if (result) { // Track with path without lang prefix (e.g., /llms.md/getting-started) const trackingPath = result.replace(/^\/[a-z]{2}\//, "/"); - trackMd(request, context, trackingPath); + trackMd(request, context, trackingPath, "header-negotiated"); return NextResponse.rewrite(new URL(result, request.nextUrl)); } }