From 871945d4aa6c94fdfa1bac808930741d3a06c79e Mon Sep 17 00:00:00 2001 From: luka Date: Sun, 30 Aug 2026 08:54:40 +0400 Subject: [PATCH] fix(markdown): serve bundle size report --- src/components/Doc.tsx | 20 ++--- src/routeTree.gen.ts | 23 ++++++ .../markdown.$version.reports.sizes.tsx | 73 +++++++++++++++++++ tests/docs-route-smoke.test.ts | 5 ++ 4 files changed, 112 insertions(+), 9 deletions(-) create mode 100644 src/routes/_library/markdown.$version.reports.sizes.tsx diff --git a/src/components/Doc.tsx b/src/components/Doc.tsx index a58a2df54..721ed4663 100644 --- a/src/components/Doc.tsx +++ b/src/components/Doc.tsx @@ -141,15 +141,17 @@ export function Doc({ return (
- + {pagePath ? ( + + ) : null}
rootRouteImport, } as any) +const LibraryMarkdownVersionReportsSizesRoute = + LibraryMarkdownVersionReportsSizesRouteImport.update({ + id: '/markdown/$version/reports/sizes', + path: '/markdown/$version/reports/sizes', + getParentRoute: () => LibraryRoute, + } as any) const LibraryChartsCatalogCollectionsCollectionIdRoute = LibraryChartsCatalogCollectionsCollectionIdRouteImport.update({ id: '/collections/$collectionId', @@ -1501,6 +1508,7 @@ export interface FileRoutesByFullPath { '/$libraryId/$version/docs/{$}.md': typeof LibraryLibraryIdVersionDocsChar123Char125DotmdRoute '/charts/catalog/charts/$caseId': typeof LibraryChartsCatalogChartsCaseIdRoute '/charts/catalog/collections/$collectionId': typeof LibraryChartsCatalogCollectionsCollectionIdRoute + '/markdown/$version/reports/sizes': typeof LibraryMarkdownVersionReportsSizesRoute '/api/auth/cli/status/$ticketId': typeof ApiAuthCliStatusTicketIdRoute '/api/builder/project-snapshots/$hash/quarantine': typeof ApiBuilderProjectSnapshotsHashQuarantineRoute '/api/builder/projects/$id/sync': typeof ApiBuilderProjectsIdSyncRoute @@ -1695,6 +1703,7 @@ export interface FileRoutesByTo { '/$libraryId/$version/docs/{$}.md': typeof LibraryLibraryIdVersionDocsChar123Char125DotmdRoute '/charts/catalog/charts/$caseId': typeof LibraryChartsCatalogChartsCaseIdRoute '/charts/catalog/collections/$collectionId': typeof LibraryChartsCatalogCollectionsCollectionIdRoute + '/markdown/$version/reports/sizes': typeof LibraryMarkdownVersionReportsSizesRoute '/api/auth/cli/status/$ticketId': typeof ApiAuthCliStatusTicketIdRoute '/api/builder/project-snapshots/$hash/quarantine': typeof ApiBuilderProjectSnapshotsHashQuarantineRoute '/api/builder/projects/$id/sync': typeof ApiBuilderProjectsIdSyncRoute @@ -1903,6 +1912,7 @@ export interface FileRoutesById { '/_library/$libraryId/$version/docs/{$}.md': typeof LibraryLibraryIdVersionDocsChar123Char125DotmdRoute '/_library/charts/catalog/charts/$caseId': typeof LibraryChartsCatalogChartsCaseIdRoute '/_library/charts/catalog/collections/$collectionId': typeof LibraryChartsCatalogCollectionsCollectionIdRoute + '/_library/markdown/$version/reports/sizes': typeof LibraryMarkdownVersionReportsSizesRoute '/api/auth/cli/status/$ticketId': typeof ApiAuthCliStatusTicketIdRoute '/api/builder/project-snapshots/$hash/quarantine': typeof ApiBuilderProjectSnapshotsHashQuarantineRoute '/api/builder/projects/$id/sync': typeof ApiBuilderProjectsIdSyncRoute @@ -2111,6 +2121,7 @@ export interface FileRouteTypes { | '/$libraryId/$version/docs/{$}.md' | '/charts/catalog/charts/$caseId' | '/charts/catalog/collections/$collectionId' + | '/markdown/$version/reports/sizes' | '/api/auth/cli/status/$ticketId' | '/api/builder/project-snapshots/$hash/quarantine' | '/api/builder/projects/$id/sync' @@ -2305,6 +2316,7 @@ export interface FileRouteTypes { | '/$libraryId/$version/docs/{$}.md' | '/charts/catalog/charts/$caseId' | '/charts/catalog/collections/$collectionId' + | '/markdown/$version/reports/sizes' | '/api/auth/cli/status/$ticketId' | '/api/builder/project-snapshots/$hash/quarantine' | '/api/builder/projects/$id/sync' @@ -2512,6 +2524,7 @@ export interface FileRouteTypes { | '/_library/$libraryId/$version/docs/{$}.md' | '/_library/charts/catalog/charts/$caseId' | '/_library/charts/catalog/collections/$collectionId' + | '/_library/markdown/$version/reports/sizes' | '/api/auth/cli/status/$ticketId' | '/api/builder/project-snapshots/$hash/quarantine' | '/api/builder/projects/$id/sync' @@ -3958,6 +3971,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ApiAuthCliStatusTicketIdRouteImport parentRoute: typeof rootRouteImport } + '/_library/markdown/$version/reports/sizes': { + id: '/_library/markdown/$version/reports/sizes' + path: '/markdown/$version/reports/sizes' + fullPath: '/markdown/$version/reports/sizes' + preLoaderRoute: typeof LibraryMarkdownVersionReportsSizesRouteImport + parentRoute: typeof LibraryRoute + } '/_library/charts/catalog/collections/$collectionId': { id: '/_library/charts/catalog/collections/$collectionId' path: '/collections/$collectionId' @@ -4237,6 +4257,7 @@ interface LibraryRouteChildren { LibraryTableVersionIndexRoute: typeof LibraryTableVersionIndexRoute LibraryVirtualVersionIndexRoute: typeof LibraryVirtualVersionIndexRoute LibraryWorkflowVersionIndexRoute: typeof LibraryWorkflowVersionIndexRoute + LibraryMarkdownVersionReportsSizesRoute: typeof LibraryMarkdownVersionReportsSizesRoute } const LibraryRouteChildren: LibraryRouteChildren = { @@ -4262,6 +4283,8 @@ const LibraryRouteChildren: LibraryRouteChildren = { LibraryTableVersionIndexRoute: LibraryTableVersionIndexRoute, LibraryVirtualVersionIndexRoute: LibraryVirtualVersionIndexRoute, LibraryWorkflowVersionIndexRoute: LibraryWorkflowVersionIndexRoute, + LibraryMarkdownVersionReportsSizesRoute: + LibraryMarkdownVersionReportsSizesRoute, } const LibraryRouteWithChildren = diff --git a/src/routes/_library/markdown.$version.reports.sizes.tsx b/src/routes/_library/markdown.$version.reports.sizes.tsx new file mode 100644 index 000000000..2cbdcdcb4 --- /dev/null +++ b/src/routes/_library/markdown.$version.reports.sizes.tsx @@ -0,0 +1,73 @@ +import { createFileRoute } from '@tanstack/react-router' +import { Doc } from '~/components/Doc' +import { DocContainer } from '~/components/DocContainer' +import { getBranch, getLibrary } from '~/libraries' +import { docsConfigQueryOptions } from '~/queries/docsConfig' +import { getDocsCacheHeaders } from '~/utils/docs-cache-headers' +import { fetchDocs } from '~/utils/docs.functions' +import { ogImageUrl } from '~/utils/og' +import { seo } from '~/utils/seo' +import { beforeLoadLibraryLanding } from '../-library-landing-route' + +const library = getLibrary('markdown') +const filePath = 'reports/sizes.md' + +export const Route = createFileRoute( + '/_library/markdown/$version/reports/sizes', +)({ + staleTime: 1000 * 60 * 5, + beforeLoad: ({ params, location }) => { + beforeLoadLibraryLanding('markdown', params.version, location.href) + }, + loader: async ({ params, context: { queryClient } }) => { + const branch = getBranch(library, params.version) + const [config, report] = await Promise.all([ + queryClient.ensureQueryData( + docsConfigQueryOptions('markdown', params.version), + ), + fetchDocs({ + data: { + repo: library.repo, + branch, + filePath, + }, + }), + ]) + + return { + ...report, + branch, + config, + } + }, + head: ({ loaderData }) => ({ + meta: seo({ + title: `Bundle Size Results | ${library.name}`, + description: loaderData?.description, + image: ogImageUrl(library.id), + noindex: library.visible === false, + }), + }), + headers: ({ params }) => + getDocsCacheHeaders({ libraryId: library.id, version: params.version }), + component: MarkdownBundleSizeReport, +}) + +function MarkdownBundleSizeReport() { + const { branch, content } = Route.useLoaderData() + + return ( + + + + ) +} diff --git a/tests/docs-route-smoke.test.ts b/tests/docs-route-smoke.test.ts index 0f0806c21..18ae53464 100644 --- a/tests/docs-route-smoke.test.ts +++ b/tests/docs-route-smoke.test.ts @@ -70,6 +70,11 @@ test( return paths }) + cases.push({ + path: '/markdown/latest/reports/sizes', + expected: 'ok', + }) + for (const smokeCase of cases) { const result = await fetchWithRedirects(new URL(smokeCase.path, baseUrl))