AstroServerApp Class — astro Architecture
Architecture documentation for the AstroServerApp class in app.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD df0b0a04_8315_c9cf_d541_013f247434eb["AstroServerApp"] 6ca59778_1689_2eea_61cd_dfe5334eb243["app.ts"] df0b0a04_8315_c9cf_d541_013f247434eb -->|defined in| 6ca59778_1689_2eea_61cd_dfe5334eb243 4c18863f_f0f6_864c_a329_c0c8b5d7795d["constructor()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 4c18863f_f0f6_864c_a329_c0c8b5d7795d f4427cc8_cb32_6801_a1eb_5f7c0f54d0e7["isDev()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| f4427cc8_cb32_6801_a1eb_5f7c0f54d0e7 3785e295_bc3e_d054_2e0e_cd33b9c28482["updateRoutes()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 3785e295_bc3e_d054_2e0e_cd33b9c28482 2bb6776f_f585_35a0_c0da_3d9cf1f798df["devMatch()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 2bb6776f_f585_35a0_c0da_3d9cf1f798df adab8050_f333_2d0b_3e71_e38618af5aa2["create()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| adab8050_f333_2d0b_3e71_e38618af5aa2 725bdea1_372a_62fb_b727_677950608ff7["createPipeline()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 725bdea1_372a_62fb_b727_677950608ff7 665f578e_0fb9_ef8e_c5d0_8499da416b76["createRenderContext()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 665f578e_0fb9_ef8e_c5d0_8499da416b76 752a8772_d13c_3672_c3b6_a2fcc170d976["handleRequest()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 752a8772_d13c_3672_c3b6_a2fcc170d976 dd54daed_eb3b_0fbf_40a8_8a2bcb7e5281["match()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| dd54daed_eb3b_0fbf_40a8_8a2bcb7e5281 5d858b84_f88b_316b_3874_cf1a5d8a7829["renderError()"] df0b0a04_8315_c9cf_d541_013f247434eb -->|method| 5d858b84_f88b_316b_3874_cf1a5d8a7829
Relationship Graph
Source Code
packages/astro/src/vite-plugin-app/app.ts lines 27–292
export class AstroServerApp extends BaseApp<RunnablePipeline> {
settings: AstroSettings;
logger: Logger;
loader: ModuleLoader;
manifestData: RoutesList;
currentRenderContext: RenderContext | undefined = undefined;
resolvedPathname: string | undefined = undefined;
constructor(
manifest: SSRManifest,
streaming = true,
logger: Logger,
manifestData: RoutesList,
loader: ModuleLoader,
settings: AstroSettings,
getDebugInfo: () => Promise<string>,
) {
super(manifest, streaming, settings, logger, loader, manifestData, getDebugInfo);
this.settings = settings;
this.logger = logger;
this.loader = loader;
this.manifestData = manifestData;
}
isDev(): boolean {
return true;
}
/**
* Updates the routes list when files change during development.
* Called via HMR when new pages are added/removed.
*/
updateRoutes(newRoutesList: RoutesList): void {
this.manifestData = newRoutesList;
this.pipeline.setManifestData(newRoutesList);
ensure404Route(this.manifestData);
}
async devMatch(pathname: string): Promise<DevMatch | undefined> {
const matchedRoute = await matchRoute(
pathname,
this.manifestData,
this.pipeline as unknown as RunnablePipeline,
this.manifest,
);
if (!matchedRoute) {
return undefined;
}
return {
routeData: matchedRoute.route,
resolvedPathname: matchedRoute.resolvedPathname,
};
}
static async create(
manifest: SSRManifest,
routesList: RoutesList,
logger: Logger,
loader: ModuleLoader,
settings: AstroSettings,
getDebugInfo: () => Promise<string>,
): Promise<AstroServerApp> {
return new AstroServerApp(manifest, true, logger, routesList, loader, settings, getDebugInfo);
}
createPipeline(
_streaming: boolean,
manifest: SSRManifest,
settings: AstroSettings,
logger: Logger,
loader: ModuleLoader,
manifestData: RoutesList,
getDebugInfo: () => Promise<string>,
): RunnablePipeline {
const pipeline = RunnablePipeline.create(manifestData, {
loader,
logger,
manifest,
settings,
getDebugInfo,
});
Domain
Defined In
Source
Frequently Asked Questions
What is the AstroServerApp class?
AstroServerApp is a class in the astro codebase, defined in packages/astro/src/vite-plugin-app/app.ts.
Where is AstroServerApp defined?
AstroServerApp is defined in packages/astro/src/vite-plugin-app/app.ts at line 27.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free