Home / Function/ createAstroServerApp() — astro Function Reference

createAstroServerApp() — astro Function Reference

Architecture documentation for the createAstroServerApp() function in createAstroServerApp.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  b5e5d59b_0e34_a5aa_9ff9_1e2941c15529["createAstroServerApp()"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931["createAstroServerApp.ts"]
  b5e5d59b_0e34_a5aa_9ff9_1e2941c15529 -->|defined in| bb92c296_4c53_ed2f_70a9_0de46c7e9931
  style b5e5d59b_0e34_a5aa_9ff9_1e2941c15529 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/src/vite-plugin-app/createAstroServerApp.ts lines 21–86

export default async function createAstroServerApp(
	controller: DevServerController,
	settings: AstroSettings,
	loader: ModuleLoader,
	logger?: Logger,
) {
	const actualLogger =
		logger ??
		new Logger({
			dest: nodeLogDestination,
			level: settings.logLevel,
		});
	const routesList: RoutesList = { routes: routes.map((r: RouteInfo) => r.routeData) };

	const debugInfoProvider = new DevDebugInfoProvider({
		config: settings.config,
		astroVersionProvider: new BuildTimeAstroVersionProvider(),
		operatingSystemProvider: new ProcessOperatingSystemProvider(),
		packageManager: await getPackageManager({
			packageManagerUserAgentProvider: new ProcessPackageManagerUserAgentProvider(),
			commandExecutor: new TinyexecCommandExecutor(),
		}),
		nodeVersionProvider: new ProcessNodeVersionProvider(),
	});
	const debugInfoFormatter = new StyledDebugInfoFormatter({
		textStyler: new PassthroughTextStyler(),
	});
	const debugInfo = debugInfoFormatter.format(await debugInfoProvider.get());

	const app = await AstroServerApp.create(
		manifest,
		routesList,
		actualLogger,
		loader,
		settings,
		async () => debugInfo,
	);

	// Listen for route updates via HMR
	if (import.meta.hot) {
		import.meta.hot.on('astro:routes-updated', async () => {
			try {
				// Re-import the routes module to get fresh routes
				const { routes: newRoutes } = await import('virtual:astro:routes');
				const newRoutesList: RoutesList = {
					routes: newRoutes.map((r: RouteInfo) => r.routeData),
				};
				app.updateRoutes(newRoutesList);
				actualLogger.debug('router', 'Routes updated via HMR');
			} catch (e: any) {
				actualLogger.error('router', `Failed to update routes via HMR:\n ${e}`);
			}
		});
	}

	return {
		handler(incomingRequest: http.IncomingMessage, incomingResponse: http.ServerResponse) {
			app.handleRequest({
				controller,
				incomingRequest,
				incomingResponse,
				isHttps: loader?.isHttps() ?? false,
			});
		},
	};
}

Domain

Subdomains

Frequently Asked Questions

What does createAstroServerApp() do?
createAstroServerApp() is a function in the astro codebase, defined in packages/astro/src/vite-plugin-app/createAstroServerApp.ts.
Where is createAstroServerApp() defined?
createAstroServerApp() is defined in packages/astro/src/vite-plugin-app/createAstroServerApp.ts at line 21.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free