aboutsummaryrefslogtreecommitdiff
path: root/website/src/docs-path.ts
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-09-01 14:48:45 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-09-01 14:48:45 +0300
commit8a6d697308162874a236c84aac0b0f8c7ac01f83 (patch)
treeed7dc7e8c6f50d66bde721fae78576aede929f66 /website/src/docs-path.ts
parentb54a78aa510b87d1e3b56c619b72eaeb59e4a2a1 (diff)
refactor: separate website presentation from runtime
Diffstat (limited to 'website/src/docs-path.ts')
-rw-r--r--website/src/docs-path.ts87
1 files changed, 0 insertions, 87 deletions
diff --git a/website/src/docs-path.ts b/website/src/docs-path.ts
deleted file mode 100644
index 53ace41d..00000000
--- a/website/src/docs-path.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-const docsLocales = new Set(['ja', 'zh-cn']);
-const docsVersionPattern = /^\d+\.\d+\.\d+$/;
-
-export type DocsTarget = 'stable' | 'preview' | string;
-
-export interface DocsRoute {
- isDocs: boolean;
- locale: string | undefined;
- target: DocsTarget;
- page: string;
-}
-
-export interface DocsScope {
- locales: Record<string, string[]>;
-}
-
-export function docsRoute(pathname: string): DocsRoute {
- const segments = pathname.split('/').filter(Boolean);
- let locale: string | undefined;
-
- if (segments[0] && docsLocales.has(segments[0])) {
- locale = segments.shift();
- }
-
- if (segments.shift() !== 'docs') {
- return { isDocs: false, locale, target: 'stable', page: '' };
- }
-
- let target: DocsTarget = 'stable';
- if (segments[0] === 'preview') {
- target = 'preview';
- segments.shift();
- } else if (segments[0] && docsVersionPattern.test(segments[0])) {
- target = segments.shift()!;
- }
-
- return {
- isDocs: true,
- locale,
- target,
- page: segments.join('/'),
- };
-}
-
-export function docsVersion(pathname: string) {
- return docsRoute(pathname).target;
-}
-
-export function docsTargetHref(
- route: DocsRoute,
- target: DocsTarget,
- scopes?: Record<string, DocsScope>,
-) {
- if (!route.isDocs) throw new Error('cannot build a documentation target from a non-docs route');
-
- const localeKey = route.locale ?? 'root';
- const availablePages = scopes?.[target]?.locales[localeKey];
- const page = availablePages?.includes(route.page) === false ? '' : route.page;
- const prefix = route.locale ? `/${route.locale}` : '';
- const targetSegment = target === 'stable' ? '' : `/${target}`;
- return `${prefix}/docs${targetSegment}${page ? `/${page}` : ''}/`;
-}
-
-export function docsPath({ entry }: { entry: string }) {
- const slug = entry.replace(/\.(md|mdx|markdown|mdown|mkdn|mkd|mdwn)$/i, '');
- const normalized = slug.replace(/\/index$/, '');
- const segments = normalized.split('/');
-
- let targetSegment = '';
- if (segments[0] === 'preview') {
- targetSegment = 'preview';
- segments.shift();
- } else if (segments[0] === '_versions' && segments[1] && docsVersionPattern.test(segments[1])) {
- segments.shift();
- targetSegment = segments.shift()!;
- }
-
- let locale: string | undefined;
- if (segments[0] && docsLocales.has(segments[0])) {
- locale = segments.shift();
- }
-
- const page = segments.join('/');
- const prefix = locale ? `${locale}/` : '';
- const target = targetSegment ? `/${targetSegment}` : '';
- return `${prefix}docs${target}${page && page !== 'index' ? `/${page}` : ''}`;
-}