routing.ts — astro Source File
Architecture documentation for routing.ts, a typescript file in the astro codebase. 4 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 023064dd_a580_49f4_740a_68db4b2f69c1["routing.ts"] c923dac6_4ccb_a783_dee2_4bc95f0ebcf1["../core/routing/index.js"] 023064dd_a580_49f4_740a_68db4b2f69c1 --> c923dac6_4ccb_a783_dee2_4bc95f0ebcf1 e0205085_880d_1a58_2ee7_5e674a68b052["../core/routing/priority.js"] 023064dd_a580_49f4_740a_68db4b2f69c1 --> e0205085_880d_1a58_2ee7_5e674a68b052 10d4e39f_edb6_3e34_aa93_ae1211e7da05["../types/public/internal.js"] 023064dd_a580_49f4_740a_68db4b2f69c1 --> 10d4e39f_edb6_3e34_aa93_ae1211e7da05 0a7232f9_1027_cf2d_cc88_6e09a54bf913["./pipeline.js"] 023064dd_a580_49f4_740a_68db4b2f69c1 --> 0a7232f9_1027_cf2d_cc88_6e09a54bf913 style 023064dd_a580_49f4_740a_68db4b2f69c1 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { routeIsRedirect } from '../core/routing/index.js';
import { routeComparator } from '../core/routing/priority.js';
import type { RouteData, SSRManifest } from '../types/public/internal.js';
import type { RunnablePipeline } from '../vite-plugin-app/pipeline.js';
type GetSortedPreloadedMatchesParams = {
pipeline: RunnablePipeline;
matches: RouteData[];
manifest: SSRManifest;
};
export function getSortedPreloadedMatches({
pipeline,
matches,
manifest,
}: GetSortedPreloadedMatchesParams) {
return preloadAndSetPrerenderStatus({
pipeline,
matches,
manifest,
})
.sort((a, b) => routeComparator(a.route, b.route))
.sort((a, b) => prioritizePrerenderedMatchesComparator(a.route, b.route));
}
type PreloadAndSetPrerenderStatusParams = {
pipeline: RunnablePipeline;
matches: RouteData[];
manifest: SSRManifest;
};
type PreloadAndSetPrerenderStatusResult = {
filePath: URL;
route: RouteData;
};
function preloadAndSetPrerenderStatus({
matches,
manifest,
}: PreloadAndSetPrerenderStatusParams): PreloadAndSetPrerenderStatusResult[] {
const preloaded = new Array<PreloadAndSetPrerenderStatusResult>();
for (const route of matches) {
const filePath = new URL(`./${route.component}`, manifest.rootDir);
if (routeIsRedirect(route)) {
preloaded.push({
route,
filePath,
});
continue;
}
preloaded.push({ route, filePath });
}
return preloaded;
}
function prioritizePrerenderedMatchesComparator(a: RouteData, b: RouteData): number {
if (areRegexesEqual(a.pattern, b.pattern)) {
if (a.prerender !== b.prerender) {
return a.prerender ? -1 : 1;
}
return a.component < b.component ? -1 : 1;
}
return 0;
}
function areRegexesEqual(regexp1: RegExp, regexp2: RegExp) {
return regexp1.source === regexp2.source && regexp1.global === regexp2.global;
}
Domain
Subdomains
Functions
Types
Dependencies
- ../core/routing/index.js
- ../core/routing/priority.js
- ../types/public/internal.js
- ./pipeline.js
Source
Frequently Asked Questions
What does routing.ts do?
routing.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in routing.ts?
routing.ts defines 4 function(s): areRegexesEqual, getSortedPreloadedMatches, preloadAndSetPrerenderStatus, prioritizePrerenderedMatchesComparator.
What does routing.ts depend on?
routing.ts imports 4 module(s): ../core/routing/index.js, ../core/routing/priority.js, ../types/public/internal.js, ./pipeline.js.
Where is routing.ts in the architecture?
routing.ts is located at packages/astro/src/prerender/routing.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/prerender).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free