Home / File/ createAstroServerApp.ts — astro Source File

createAstroServerApp.ts — astro Source File

Architecture documentation for createAstroServerApp.ts, a typescript file in the astro codebase. 19 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 19 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  bb92c296_4c53_ed2f_70a9_0de46c7e9931["createAstroServerApp.ts"]
  7a95a834_be65_14a5_8ce1_cd957c134b42["../cli/info/core/get-package-manager.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 7a95a834_be65_14a5_8ce1_cd957c134b42
  fb667e8e_f92a_30a3_59d5_2e1fdbaaac67["../cli/info/infra/dev-debug-info-provider.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> fb667e8e_f92a_30a3_59d5_2e1fdbaaac67
  c2eb9716_3d83_f777_69ad_8a388ec0ad3f["../cli/info/infra/process-node-version-provider.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> c2eb9716_3d83_f777_69ad_8a388ec0ad3f
  2b0b44fa_b784_ac0d_6cba_acca74e7c118["../cli/info/infra/process-package-manager-user-agent-provider.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 2b0b44fa_b784_ac0d_6cba_acca74e7c118
  0ddbd7e6_70a8_01dc_ab1e_fed8bec55815["../cli/info/infra/styled-debug-info-formatter.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 0ddbd7e6_70a8_01dc_ab1e_fed8bec55815
  44d37a54_3d88_37b0_5d0a_cdd1328c5c90["../cli/infra/build-time-astro-version-provider.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 44d37a54_3d88_37b0_5d0a_cdd1328c5c90
  6b91fba4_dd20_32a2_ba3a_c25712a7567c["../cli/infra/passthrough-text-styler.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 6b91fba4_dd20_32a2_ba3a_c25712a7567c
  21aaf5fd_6bc2_64c9_8611_b0ec949fd99f["../cli/infra/process-operating-system-provider.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 21aaf5fd_6bc2_64c9_8611_b0ec949fd99f
  d3021efe_c17b_f1db_5c81_031209006ee9["../cli/infra/tinyexec-command-executor.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> d3021efe_c17b_f1db_5c81_031209006ee9
  a4f2698c_5256_262a_ba7c_f72b51878d10["../core/app/types.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> a4f2698c_5256_262a_ba7c_f72b51878d10
  d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> d3861967_b647_84d2_ff48_15013353bd56
  23f7d7cd_59bf_0643_9f11_6d90ab431fb7["../core/logger/node.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 23f7d7cd_59bf_0643_9f11_6d90ab431fb7
  32f8c7d4_d66e_e0cf_b019_46ec3f2fea31["../core/module-loader/index.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> 32f8c7d4_d66e_e0cf_b019_46ec3f2fea31
  e9b74c5a_8d34_34a7_e196_5e41b87214aa["../types/astro.js"]
  bb92c296_4c53_ed2f_70a9_0de46c7e9931 --> e9b74c5a_8d34_34a7_e196_5e41b87214aa
  style bb92c296_4c53_ed2f_70a9_0de46c7e9931 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type http from 'node:http';
import { manifest } from 'virtual:astro:manifest';
import { routes } from 'virtual:astro:routes';
import { getPackageManager } from '../cli/info/core/get-package-manager.js';
import { DevDebugInfoProvider } from '../cli/info/infra/dev-debug-info-provider.js';
import { ProcessNodeVersionProvider } from '../cli/info/infra/process-node-version-provider.js';
import { ProcessPackageManagerUserAgentProvider } from '../cli/info/infra/process-package-manager-user-agent-provider.js';
import { StyledDebugInfoFormatter } from '../cli/info/infra/styled-debug-info-formatter.js';
import { BuildTimeAstroVersionProvider } from '../cli/infra/build-time-astro-version-provider.js';
import { PassthroughTextStyler } from '../cli/infra/passthrough-text-styler.js';
import { ProcessOperatingSystemProvider } from '../cli/infra/process-operating-system-provider.js';
import { TinyexecCommandExecutor } from '../cli/infra/tinyexec-command-executor.js';
import type { RouteInfo } from '../core/app/types.js';
import { Logger } from '../core/logger/core.js';
import { nodeLogDestination } from '../core/logger/node.js';
import type { ModuleLoader } from '../core/module-loader/index.js';
import type { AstroSettings, RoutesList } from '../types/astro.js';
import type { DevServerController } from '../vite-plugin-astro-server/controller.js';
import { AstroServerApp } from './app.js';

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

Dependencies

  • ../cli/info/core/get-package-manager.js
  • ../cli/info/infra/dev-debug-info-provider.js
  • ../cli/info/infra/process-node-version-provider.js
  • ../cli/info/infra/process-package-manager-user-agent-provider.js
  • ../cli/info/infra/styled-debug-info-formatter.js
  • ../cli/infra/build-time-astro-version-provider.js
  • ../cli/infra/passthrough-text-styler.js
  • ../cli/infra/process-operating-system-provider.js
  • ../cli/infra/tinyexec-command-executor.js
  • ../core/app/types.js
  • ../core/logger/core.js
  • ../core/logger/node.js
  • ../core/module-loader/index.js
  • ../types/astro.js
  • ./app.js
  • ./controller.js
  • node:http
  • virtual:astro:manifest
  • virtual:astro:routes

Frequently Asked Questions

What does createAstroServerApp.ts do?
createAstroServerApp.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 createAstroServerApp.ts?
createAstroServerApp.ts defines 1 function(s): createAstroServerApp.
What does createAstroServerApp.ts depend on?
createAstroServerApp.ts imports 19 module(s): ../cli/info/core/get-package-manager.js, ../cli/info/infra/dev-debug-info-provider.js, ../cli/info/infra/process-node-version-provider.js, ../cli/info/infra/process-package-manager-user-agent-provider.js, ../cli/info/infra/styled-debug-info-formatter.js, ../cli/infra/build-time-astro-version-provider.js, ../cli/infra/passthrough-text-styler.js, ../cli/infra/process-operating-system-provider.js, and 11 more.
Where is createAstroServerApp.ts in the architecture?
createAstroServerApp.ts is located at packages/astro/src/vite-plugin-app/createAstroServerApp.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/vite-plugin-app).

Analyze Your Own Codebase

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

Try Supermodel Free