createAstroServerApp.ts — astro Source File
Architecture documentation for createAstroServerApp.ts, a typescript file in the astro codebase. 19 imports, 0 dependents.
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
Functions
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
Source
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