Files

621 lines
25 KiB
TypeScript

// AUTO-GENERATED by `wrnexus dev` - do not edit.
// Typed routes support required, optional, and catch-all parameters.
export interface Routes {
"/": Record<string, never>;
"/404": Record<string, never>;
"/access": Record<string, never>;
"/architecture": Record<string, never>;
"/benchmarks": Record<string, never>;
"/changelog": Record<string, never>;
"/examples": Record<string, never>;
"/getting-started": Record<string, never>;
"/guides/api-routes": Record<string, never>;
"/guides/authentication": Record<string, never>;
"/guides/authorization": Record<string, never>;
"/guides/configuration-and-profiles": Record<string, never>;
"/guides/database": Record<string, never>;
"/guides/deployment": Record<string, never>;
"/guides/forms-and-validation": Record<string, never>;
"/guides/full-stack-auth-demo": Record<string, never>;
"/guides/i18n-and-themes": Record<string, never>;
"/guides/middleware": Record<string, never>;
"/guides/mobile": Record<string, never>;
"/guides/observability": Record<string, never>;
"/guides/pages-and-components": Record<string, never>;
"/guides/project-structure": Record<string, never>;
"/guides/pubsub": Record<string, never>;
"/guides/queues": Record<string, never>;
"/guides/realtime": Record<string, never>;
"/guides/routing": Record<string, never>;
"/guides/security": Record<string, never>;
"/guides/server-data": Record<string, never>;
"/guides/testing": Record<string, never>;
"/guides/troubleshooting": Record<string, never>;
"/guides/upgrading": Record<string, never>;
"/guides/uploads": Record<string, never>;
"/guides/workspaces-and-gateway": Record<string, never>;
"/language": Record<string, never>;
"/license": Record<string, never>;
"/packages": Record<string, never>;
"/packages/ai": Record<string, never>;
"/packages/auth": Record<string, never>;
"/packages/authz": Record<string, never>;
"/packages/benchmark": Record<string, never>;
"/packages/cache": Record<string, never>;
"/packages/captcha": Record<string, never>;
"/packages/cli": Record<string, never>;
"/packages/compiler": Record<string, never>;
"/packages/content": Record<string, never>;
"/packages/core": Record<string, never>;
"/packages/csr": Record<string, never>;
"/packages/db": Record<string, never>;
"/packages/dev-server": Record<string, never>;
"/packages/dev-toolbar": Record<string, never>;
"/packages/encryption": Record<string, never>;
"/packages/graphql": Record<string, never>;
"/packages/helpers": Record<string, never>;
"/packages/i18n": Record<string, never>;
"/packages/identity": Record<string, never>;
"/packages/image": Record<string, never>;
"/packages/jwt": Record<string, never>;
"/packages/language-server": Record<string, never>;
"/packages/mcp": Record<string, never>;
"/packages/mobile": Record<string, never>;
"/packages/native": Record<string, never>;
"/packages/oauth": Record<string, never>;
"/packages/observability": Record<string, never>;
"/packages/playground": Record<string, never>;
"/packages/plugin": Record<string, never>;
"/packages/pubsub": Record<string, never>;
"/packages/pwa": Record<string, never>;
"/packages/queue": Record<string, never>;
"/packages/reactive": Record<string, never>;
"/packages/realtime": Record<string, never>;
"/packages/router": Record<string, never>;
"/packages/security": Record<string, never>;
"/packages/ssr": Record<string, never>;
"/packages/store": Record<string, never>;
"/packages/styles": Record<string, never>;
"/packages/syntax": Record<string, never>;
"/packages/test": Record<string, never>;
"/packages/tracking": Record<string, never>;
"/packages/typecheck": Record<string, never>;
"/packages/ui": Record<string, never>;
"/packages/uploader": Record<string, never>;
"/packages/validation": Record<string, never>;
"/releases/0.2.15": Record<string, never>;
"/releases/0.2.17": Record<string, never>;
"/releases/0.2.18": Record<string, never>;
"/releases/0.2.19": Record<string, never>;
"/releases/0.2.20": Record<string, never>;
"/releases/0.2.21": Record<string, never>;
"/releases/0.2.22": Record<string, never>;
"/releases/0.2.23": Record<string, never>;
"/releases/0.2.24": Record<string, never>;
"/releases/0.2.25": Record<string, never>;
"/releases/0.2.26": Record<string, never>;
"/releases/0.2.27": Record<string, never>;
"/releases/0.2.28": Record<string, never>;
"/releases/0.2.29": Record<string, never>;
"/releases/0.2.30": Record<string, never>;
"/releases/0.2.31": Record<string, never>;
"/releases/0.2.32": Record<string, never>;
"/releases/0.2.33": Record<string, never>;
"/releases/0.2.34": Record<string, never>;
"/releases/0.2.35": Record<string, never>;
"/releases/0.2.36": Record<string, never>;
"/releases/0.2.37": Record<string, never>;
"/releases/0.2.38": Record<string, never>;
"/releases/0.2.39": Record<string, never>;
"/releases/0.2.40": Record<string, never>;
"/releases/0.2.41": Record<string, never>;
"/releases/0.2.42": Record<string, never>;
"/releases/0.2.43": Record<string, never>;
"/releases/0.2.44": Record<string, never>;
"/releases/0.2.45": Record<string, never>;
"/releases/0.2.46": Record<string, never>;
"/releases/0.2.47": Record<string, never>;
"/releases/0.2.48": Record<string, never>;
"/releases/0.2.49": Record<string, never>;
"/releases/0.2.50": Record<string, never>;
"/releases/0.2.51": Record<string, never>;
"/releases/0.2.52": Record<string, never>;
"/releases/0.2.53": Record<string, never>;
"/releases/0.2.54": Record<string, never>;
"/releases/0.2.55": Record<string, never>;
"/releases/0.2.56": Record<string, never>;
"/releases/0.2.57": Record<string, never>;
"/releases/0.2.58": Record<string, never>;
"/releases/0.2.59": Record<string, never>;
"/releases/0.2.60": Record<string, never>;
"/releases/0.2.61": Record<string, never>;
"/releases/0.2.62": Record<string, never>;
"/releases/0.2.63": Record<string, never>;
"/releases/0.2.64": Record<string, never>;
"/releases/0.2.65": Record<string, never>;
"/releases/0.2.66": Record<string, never>;
"/releases/0.2.67": Record<string, never>;
"/releases/0.2.68": Record<string, never>;
"/releases/0.2.69": Record<string, never>;
"/releases/0.2.70": Record<string, never>;
"/releases/0.2.71": Record<string, never>;
"/releases/0.2.72": Record<string, never>;
"/releases/0.2.73": Record<string, never>;
"/releases/0.2.74": Record<string, never>;
"/releases/0.2.75": Record<string, never>;
"/releases/0.2.76": Record<string, never>;
"/releases/0.2.77": Record<string, never>;
"/releases/0.2.78": Record<string, never>;
"/releases/0.2.79": Record<string, never>;
"/releases/0.3.0": Record<string, never>;
"/releases/0.3.1": Record<string, never>;
"/releases/0.3.2": Record<string, never>;
"/releases/0.3.3": Record<string, never>;
"/releases/0.3.4": Record<string, never>;
"/releases/0.3.5": Record<string, never>;
"/releases/0.3.6": Record<string, never>;
"/releases/0.4.0": Record<string, never>;
"/releases/0.5.0": Record<string, never>;
"/releases/0.5.1": Record<string, never>;
"/releases/0.5.10": Record<string, never>;
"/releases/0.5.11": Record<string, never>;
"/releases/0.5.12": Record<string, never>;
"/releases/0.5.13": Record<string, never>;
"/releases/0.6.0": Record<string, never>;
"/releases/0.7.0": Record<string, never>;
"/releases/0.8.0": Record<string, never>;
"/releases/0.8.1": Record<string, never>;
"/releases/0.8.2": Record<string, never>;
"/releases/0.8.3": Record<string, never>;
"/releases/0.8.4": Record<string, never>;
"/releases/0.8.5": Record<string, never>;
"/releases/0.8.6": Record<string, never>;
"/releases/0.8.7": Record<string, never>;
"/releases/0.8.8": Record<string, never>;
"/roadmap": Record<string, never>;
"/search": Record<string, never>;
"/security": Record<string, never>;
"/showcase": Record<string, never>;
"/support": Record<string, never>;
"/tutorial": Record<string, never>;
}
export interface RouteNames {
"index": "/";
"404": "/404";
"access": "/access";
"architecture": "/architecture";
"benchmarks": "/benchmarks";
"changelog": "/changelog";
"examples": "/examples";
"getting.started": "/getting-started";
"guides.api.routes": "/guides/api-routes";
"guides.authentication": "/guides/authentication";
"guides.authorization": "/guides/authorization";
"guides.configuration.and.profiles": "/guides/configuration-and-profiles";
"guides.database": "/guides/database";
"guides.deployment": "/guides/deployment";
"guides.forms.and.validation": "/guides/forms-and-validation";
"guides.full.stack.auth.demo": "/guides/full-stack-auth-demo";
"guides.i18n.and.themes": "/guides/i18n-and-themes";
"guides.middleware": "/guides/middleware";
"guides.mobile": "/guides/mobile";
"guides.observability": "/guides/observability";
"guides.pages.and.components": "/guides/pages-and-components";
"guides.project.structure": "/guides/project-structure";
"guides.pubsub": "/guides/pubsub";
"guides.queues": "/guides/queues";
"guides.realtime": "/guides/realtime";
"guides.routing": "/guides/routing";
"guides.security": "/guides/security";
"guides.server.data": "/guides/server-data";
"guides.testing": "/guides/testing";
"guides.troubleshooting": "/guides/troubleshooting";
"guides.upgrading": "/guides/upgrading";
"guides.uploads": "/guides/uploads";
"guides.workspaces.and.gateway": "/guides/workspaces-and-gateway";
"language": "/language";
"license": "/license";
"packages": "/packages";
"packages.ai": "/packages/ai";
"packages.auth": "/packages/auth";
"packages.authz": "/packages/authz";
"packages.benchmark": "/packages/benchmark";
"packages.cache": "/packages/cache";
"packages.captcha": "/packages/captcha";
"packages.cli": "/packages/cli";
"packages.compiler": "/packages/compiler";
"packages.content": "/packages/content";
"packages.core": "/packages/core";
"packages.csr": "/packages/csr";
"packages.db": "/packages/db";
"packages.dev.server": "/packages/dev-server";
"packages.dev.toolbar": "/packages/dev-toolbar";
"packages.encryption": "/packages/encryption";
"packages.graphql": "/packages/graphql";
"packages.helpers": "/packages/helpers";
"packages.i18n": "/packages/i18n";
"packages.identity": "/packages/identity";
"packages.image": "/packages/image";
"packages.jwt": "/packages/jwt";
"packages.language.server": "/packages/language-server";
"packages.mcp": "/packages/mcp";
"packages.mobile": "/packages/mobile";
"packages.native": "/packages/native";
"packages.oauth": "/packages/oauth";
"packages.observability": "/packages/observability";
"packages.playground": "/packages/playground";
"packages.plugin": "/packages/plugin";
"packages.pubsub": "/packages/pubsub";
"packages.pwa": "/packages/pwa";
"packages.queue": "/packages/queue";
"packages.reactive": "/packages/reactive";
"packages.realtime": "/packages/realtime";
"packages.router": "/packages/router";
"packages.security": "/packages/security";
"packages.ssr": "/packages/ssr";
"packages.store": "/packages/store";
"packages.styles": "/packages/styles";
"packages.syntax": "/packages/syntax";
"packages.test": "/packages/test";
"packages.tracking": "/packages/tracking";
"packages.typecheck": "/packages/typecheck";
"packages.ui": "/packages/ui";
"packages.uploader": "/packages/uploader";
"packages.validation": "/packages/validation";
"releases.0.2.15": "/releases/0.2.15";
"releases.0.2.17": "/releases/0.2.17";
"releases.0.2.18": "/releases/0.2.18";
"releases.0.2.19": "/releases/0.2.19";
"releases.0.2.20": "/releases/0.2.20";
"releases.0.2.21": "/releases/0.2.21";
"releases.0.2.22": "/releases/0.2.22";
"releases.0.2.23": "/releases/0.2.23";
"releases.0.2.24": "/releases/0.2.24";
"releases.0.2.25": "/releases/0.2.25";
"releases.0.2.26": "/releases/0.2.26";
"releases.0.2.27": "/releases/0.2.27";
"releases.0.2.28": "/releases/0.2.28";
"releases.0.2.29": "/releases/0.2.29";
"releases.0.2.30": "/releases/0.2.30";
"releases.0.2.31": "/releases/0.2.31";
"releases.0.2.32": "/releases/0.2.32";
"releases.0.2.33": "/releases/0.2.33";
"releases.0.2.34": "/releases/0.2.34";
"releases.0.2.35": "/releases/0.2.35";
"releases.0.2.36": "/releases/0.2.36";
"releases.0.2.37": "/releases/0.2.37";
"releases.0.2.38": "/releases/0.2.38";
"releases.0.2.39": "/releases/0.2.39";
"releases.0.2.40": "/releases/0.2.40";
"releases.0.2.41": "/releases/0.2.41";
"releases.0.2.42": "/releases/0.2.42";
"releases.0.2.43": "/releases/0.2.43";
"releases.0.2.44": "/releases/0.2.44";
"releases.0.2.45": "/releases/0.2.45";
"releases.0.2.46": "/releases/0.2.46";
"releases.0.2.47": "/releases/0.2.47";
"releases.0.2.48": "/releases/0.2.48";
"releases.0.2.49": "/releases/0.2.49";
"releases.0.2.50": "/releases/0.2.50";
"releases.0.2.51": "/releases/0.2.51";
"releases.0.2.52": "/releases/0.2.52";
"releases.0.2.53": "/releases/0.2.53";
"releases.0.2.54": "/releases/0.2.54";
"releases.0.2.55": "/releases/0.2.55";
"releases.0.2.56": "/releases/0.2.56";
"releases.0.2.57": "/releases/0.2.57";
"releases.0.2.58": "/releases/0.2.58";
"releases.0.2.59": "/releases/0.2.59";
"releases.0.2.60": "/releases/0.2.60";
"releases.0.2.61": "/releases/0.2.61";
"releases.0.2.62": "/releases/0.2.62";
"releases.0.2.63": "/releases/0.2.63";
"releases.0.2.64": "/releases/0.2.64";
"releases.0.2.65": "/releases/0.2.65";
"releases.0.2.66": "/releases/0.2.66";
"releases.0.2.67": "/releases/0.2.67";
"releases.0.2.68": "/releases/0.2.68";
"releases.0.2.69": "/releases/0.2.69";
"releases.0.2.70": "/releases/0.2.70";
"releases.0.2.71": "/releases/0.2.71";
"releases.0.2.72": "/releases/0.2.72";
"releases.0.2.73": "/releases/0.2.73";
"releases.0.2.74": "/releases/0.2.74";
"releases.0.2.75": "/releases/0.2.75";
"releases.0.2.76": "/releases/0.2.76";
"releases.0.2.77": "/releases/0.2.77";
"releases.0.2.78": "/releases/0.2.78";
"releases.0.2.79": "/releases/0.2.79";
"releases.0.3.0": "/releases/0.3.0";
"releases.0.3.1": "/releases/0.3.1";
"releases.0.3.2": "/releases/0.3.2";
"releases.0.3.3": "/releases/0.3.3";
"releases.0.3.4": "/releases/0.3.4";
"releases.0.3.5": "/releases/0.3.5";
"releases.0.3.6": "/releases/0.3.6";
"releases.0.4.0": "/releases/0.4.0";
"releases.0.5.0": "/releases/0.5.0";
"releases.0.5.1": "/releases/0.5.1";
"releases.0.5.10": "/releases/0.5.10";
"releases.0.5.11": "/releases/0.5.11";
"releases.0.5.12": "/releases/0.5.12";
"releases.0.5.13": "/releases/0.5.13";
"releases.0.6.0": "/releases/0.6.0";
"releases.0.7.0": "/releases/0.7.0";
"releases.0.8.0": "/releases/0.8.0";
"releases.0.8.1": "/releases/0.8.1";
"releases.0.8.2": "/releases/0.8.2";
"releases.0.8.3": "/releases/0.8.3";
"releases.0.8.4": "/releases/0.8.4";
"releases.0.8.5": "/releases/0.8.5";
"releases.0.8.6": "/releases/0.8.6";
"releases.0.8.7": "/releases/0.8.7";
"releases.0.8.8": "/releases/0.8.8";
"roadmap": "/roadmap";
"search": "/search";
"security": "/security";
"showcase": "/showcase";
"support": "/support";
"tutorial": "/tutorial";
}
export interface RouteQueries {
[path: string]: Record<string, string | number | boolean | null | undefined>;
}
export type RoutePath = keyof Routes;
export type RouteName = keyof RouteNames;
export type RouteQuery<P extends RoutePath> = P extends keyof RouteQueries
? RouteQueries[P]
: Record<string, string | number | boolean | null | undefined>;
type RouteValue = string | readonly string[] | undefined;
function encodeRouteValue(value: RouteValue, catchAll: boolean): string {
if (value === undefined) return "";
const values = Array.isArray(value) ? value : catchAll ? String(value).split("/") : [String(value)];
return values.map((part) => encodeURIComponent(part)).join("/");
}
function buildHref(path: string, params: Record<string, RouteValue> = {}): string {
const output: string[] = [];
for (const segment of path.split("/").filter(Boolean)) {
let name: string | undefined;
let optional = false;
let catchAll = false;
if (segment.startsWith("[[") && segment.endsWith("]]")) {
optional = true;
name = segment.slice(2, -2);
} else if (segment.startsWith("[") && segment.endsWith("]")) {
name = segment.slice(1, -1);
if (name.endsWith("?")) {
optional = true;
name = name.slice(0, -1);
}
}
if (!name) {
output.push(segment);
continue;
}
if (name.startsWith("...")) {
catchAll = true;
name = name.slice(3);
}
const value = params[name];
if (value === undefined && optional) continue;
if (value === undefined) throw new Error(`WRN-ROUTE-MISSING-PARAM: Missing route parameter '${name}'.`);
output.push(encodeRouteValue(value, catchAll));
}
return "/" + output.filter(Boolean).join("/");
}
export function href<P extends RoutePath>(
path: P,
...args: keyof Routes[P] extends never
? []
: Record<string, never> extends Routes[P]
? [params?: Routes[P]]
: [params: Routes[P]]
): string {
const params = (args[0] ?? {}) as Record<string, RouteValue>;
return buildHref(String(path), params);
}
export function route<N extends RouteName>(
name: N,
...args: keyof Routes[RouteNames[N]] extends never
? [params?: Routes[RouteNames[N]], query?: RouteQuery<RouteNames[N]>]
: Record<string, never> extends Routes[RouteNames[N]]
? [params?: Routes[RouteNames[N]], query?: RouteQuery<RouteNames[N]>]
: [params: Routes[RouteNames[N]], query?: RouteQuery<RouteNames[N]>]
): string {
const paths: Record<RouteName, RoutePath> = {
"404": "/404",
"index": "/",
"access": "/access",
"architecture": "/architecture",
"benchmarks": "/benchmarks",
"changelog": "/changelog",
"examples": "/examples",
"getting.started": "/getting-started",
"guides.api.routes": "/guides/api-routes",
"guides.authentication": "/guides/authentication",
"guides.authorization": "/guides/authorization",
"guides.configuration.and.profiles": "/guides/configuration-and-profiles",
"guides.database": "/guides/database",
"guides.deployment": "/guides/deployment",
"guides.forms.and.validation": "/guides/forms-and-validation",
"guides.full.stack.auth.demo": "/guides/full-stack-auth-demo",
"guides.i18n.and.themes": "/guides/i18n-and-themes",
"guides.middleware": "/guides/middleware",
"guides.mobile": "/guides/mobile",
"guides.observability": "/guides/observability",
"guides.pages.and.components": "/guides/pages-and-components",
"guides.project.structure": "/guides/project-structure",
"guides.pubsub": "/guides/pubsub",
"guides.queues": "/guides/queues",
"guides.realtime": "/guides/realtime",
"guides.routing": "/guides/routing",
"guides.security": "/guides/security",
"guides.server.data": "/guides/server-data",
"guides.testing": "/guides/testing",
"guides.troubleshooting": "/guides/troubleshooting",
"guides.upgrading": "/guides/upgrading",
"guides.uploads": "/guides/uploads",
"guides.workspaces.and.gateway": "/guides/workspaces-and-gateway",
"language": "/language",
"license": "/license",
"packages": "/packages",
"packages.ai": "/packages/ai",
"packages.auth": "/packages/auth",
"packages.authz": "/packages/authz",
"packages.benchmark": "/packages/benchmark",
"packages.cache": "/packages/cache",
"packages.captcha": "/packages/captcha",
"packages.cli": "/packages/cli",
"packages.compiler": "/packages/compiler",
"packages.content": "/packages/content",
"packages.core": "/packages/core",
"packages.csr": "/packages/csr",
"packages.db": "/packages/db",
"packages.dev.server": "/packages/dev-server",
"packages.dev.toolbar": "/packages/dev-toolbar",
"packages.encryption": "/packages/encryption",
"packages.graphql": "/packages/graphql",
"packages.helpers": "/packages/helpers",
"packages.i18n": "/packages/i18n",
"packages.identity": "/packages/identity",
"packages.image": "/packages/image",
"packages.jwt": "/packages/jwt",
"packages.language.server": "/packages/language-server",
"packages.mcp": "/packages/mcp",
"packages.mobile": "/packages/mobile",
"packages.native": "/packages/native",
"packages.oauth": "/packages/oauth",
"packages.observability": "/packages/observability",
"packages.playground": "/packages/playground",
"packages.plugin": "/packages/plugin",
"packages.pubsub": "/packages/pubsub",
"packages.pwa": "/packages/pwa",
"packages.queue": "/packages/queue",
"packages.reactive": "/packages/reactive",
"packages.realtime": "/packages/realtime",
"packages.router": "/packages/router",
"packages.security": "/packages/security",
"packages.ssr": "/packages/ssr",
"packages.store": "/packages/store",
"packages.styles": "/packages/styles",
"packages.syntax": "/packages/syntax",
"packages.test": "/packages/test",
"packages.tracking": "/packages/tracking",
"packages.typecheck": "/packages/typecheck",
"packages.ui": "/packages/ui",
"packages.uploader": "/packages/uploader",
"packages.validation": "/packages/validation",
"releases.0.2.15": "/releases/0.2.15",
"releases.0.2.17": "/releases/0.2.17",
"releases.0.2.18": "/releases/0.2.18",
"releases.0.2.19": "/releases/0.2.19",
"releases.0.2.20": "/releases/0.2.20",
"releases.0.2.21": "/releases/0.2.21",
"releases.0.2.22": "/releases/0.2.22",
"releases.0.2.23": "/releases/0.2.23",
"releases.0.2.24": "/releases/0.2.24",
"releases.0.2.25": "/releases/0.2.25",
"releases.0.2.26": "/releases/0.2.26",
"releases.0.2.27": "/releases/0.2.27",
"releases.0.2.28": "/releases/0.2.28",
"releases.0.2.29": "/releases/0.2.29",
"releases.0.2.30": "/releases/0.2.30",
"releases.0.2.31": "/releases/0.2.31",
"releases.0.2.32": "/releases/0.2.32",
"releases.0.2.33": "/releases/0.2.33",
"releases.0.2.34": "/releases/0.2.34",
"releases.0.2.35": "/releases/0.2.35",
"releases.0.2.36": "/releases/0.2.36",
"releases.0.2.37": "/releases/0.2.37",
"releases.0.2.38": "/releases/0.2.38",
"releases.0.2.39": "/releases/0.2.39",
"releases.0.2.40": "/releases/0.2.40",
"releases.0.2.41": "/releases/0.2.41",
"releases.0.2.42": "/releases/0.2.42",
"releases.0.2.43": "/releases/0.2.43",
"releases.0.2.44": "/releases/0.2.44",
"releases.0.2.45": "/releases/0.2.45",
"releases.0.2.46": "/releases/0.2.46",
"releases.0.2.47": "/releases/0.2.47",
"releases.0.2.48": "/releases/0.2.48",
"releases.0.2.49": "/releases/0.2.49",
"releases.0.2.50": "/releases/0.2.50",
"releases.0.2.51": "/releases/0.2.51",
"releases.0.2.52": "/releases/0.2.52",
"releases.0.2.53": "/releases/0.2.53",
"releases.0.2.54": "/releases/0.2.54",
"releases.0.2.55": "/releases/0.2.55",
"releases.0.2.56": "/releases/0.2.56",
"releases.0.2.57": "/releases/0.2.57",
"releases.0.2.58": "/releases/0.2.58",
"releases.0.2.59": "/releases/0.2.59",
"releases.0.2.60": "/releases/0.2.60",
"releases.0.2.61": "/releases/0.2.61",
"releases.0.2.62": "/releases/0.2.62",
"releases.0.2.63": "/releases/0.2.63",
"releases.0.2.64": "/releases/0.2.64",
"releases.0.2.65": "/releases/0.2.65",
"releases.0.2.66": "/releases/0.2.66",
"releases.0.2.67": "/releases/0.2.67",
"releases.0.2.68": "/releases/0.2.68",
"releases.0.2.69": "/releases/0.2.69",
"releases.0.2.70": "/releases/0.2.70",
"releases.0.2.71": "/releases/0.2.71",
"releases.0.2.72": "/releases/0.2.72",
"releases.0.2.73": "/releases/0.2.73",
"releases.0.2.74": "/releases/0.2.74",
"releases.0.2.75": "/releases/0.2.75",
"releases.0.2.76": "/releases/0.2.76",
"releases.0.2.77": "/releases/0.2.77",
"releases.0.2.78": "/releases/0.2.78",
"releases.0.2.79": "/releases/0.2.79",
"releases.0.3.0": "/releases/0.3.0",
"releases.0.3.1": "/releases/0.3.1",
"releases.0.3.2": "/releases/0.3.2",
"releases.0.3.3": "/releases/0.3.3",
"releases.0.3.4": "/releases/0.3.4",
"releases.0.3.5": "/releases/0.3.5",
"releases.0.3.6": "/releases/0.3.6",
"releases.0.4.0": "/releases/0.4.0",
"releases.0.5.0": "/releases/0.5.0",
"releases.0.5.1": "/releases/0.5.1",
"releases.0.5.10": "/releases/0.5.10",
"releases.0.5.11": "/releases/0.5.11",
"releases.0.5.12": "/releases/0.5.12",
"releases.0.5.13": "/releases/0.5.13",
"releases.0.6.0": "/releases/0.6.0",
"releases.0.7.0": "/releases/0.7.0",
"releases.0.8.0": "/releases/0.8.0",
"releases.0.8.1": "/releases/0.8.1",
"releases.0.8.2": "/releases/0.8.2",
"releases.0.8.3": "/releases/0.8.3",
"releases.0.8.4": "/releases/0.8.4",
"releases.0.8.5": "/releases/0.8.5",
"releases.0.8.6": "/releases/0.8.6",
"releases.0.8.7": "/releases/0.8.7",
"releases.0.8.8": "/releases/0.8.8",
"roadmap": "/roadmap",
"search": "/search",
"security": "/security",
"showcase": "/showcase",
"support": "/support",
"tutorial": "/tutorial"
} as Record<RouteName, RoutePath>;
const output = buildHref(paths[name], (args[0] ?? {}) as Record<string, RouteValue>);
const query = args[1];
if (!query) return output;
const search = new URLSearchParams();
for (const [key, value] of Object.entries(query))
if (value !== undefined && value !== null) search.set(key, String(value));
const text = search.toString();
return text ? `${output}?${text}` : output;
}