Home / Class/ AstroServerApp Class — astro Architecture

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

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