Home / File/ server.ts — astro Source File

server.ts — astro Source File

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

File typescript CoreAstro RoutingSystem 8 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2["server.ts"]
  0bbe90c3_6285_de58_27ec_10e87cc9c96f["./middleware.js"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> 0bbe90c3_6285_de58_27ec_10e87cc9c96f
  48658eda_5bcd_d93a_6692_f7e186da9cbf["./shared.js"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> 48658eda_5bcd_d93a_6692_f7e186da9cbf
  4e577f48_d294_df8f_eaf1_6cca3c36eaf3["./standalone.js"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> 4e577f48_d294_df8f_eaf1_6cca3c36eaf3
  b384cf30_390d_6db6_4724_be96d46e50ef["./types.js"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> b384cf30_390d_6db6_4724_be96d46e50ef
  e16a223b_37f3_6b25_1ee1_2b7bcb9d9415["node:fs"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> e16a223b_37f3_6b25_1ee1_2b7bcb9d9415
  f16d8c76_2866_6150_bd14_0347b59abfe9["astro"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> f16d8c76_2866_6150_bd14_0347b59abfe9
  8d666858_ab9a_2697_4536_5cb6ce038643["node"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> 8d666858_ab9a_2697_4536_5cb6ce038643
  cb36772b_5ea4_3a79_49fa_b1570632623e["setup"]
  3d1ffe9b_acaf_0628_7657_d34856e4c8a2 --> cb36772b_5ea4_3a79_49fa_b1570632623e
  style 3d1ffe9b_acaf_0628_7657_d34856e4c8a2 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { existsSync, readFileSync } from 'node:fs';
import type { NodeAppHeadersJson, SSRManifest } from 'astro';
import { NodeApp } from 'astro/app/node';
import { setGetEnv } from 'astro/env/setup';
import createMiddleware from './middleware.js';
import { STATIC_HEADERS_FILE } from './shared.js';
import startServer, { createStandaloneHandler } from './standalone.js';
import type { Options } from './types.js';

setGetEnv((key) => process.env[key]);

export function createExports(manifest: SSRManifest, options: Options) {
	const app = new NodeApp(manifest, !options.experimentalDisableStreaming);
	let headersMap: NodeAppHeadersJson | undefined = undefined;
	if (options.staticHeaders) {
		headersMap = readHeadersJson(manifest.outDir);
	}

	if (headersMap) {
		app.setHeadersMap(headersMap);
	}
	options.trailingSlash = manifest.trailingSlash;
	return {
		options: options,
		handler:
			options.mode === 'middleware'
				? createMiddleware(app, options)
				: createStandaloneHandler(app, options),
		startServer: () => startServer(app, options),
	};
}

export function start(manifest: SSRManifest, options: Options) {
	if (options.mode !== 'standalone' || process.env.ASTRO_NODE_AUTOSTART === 'disabled') {
		return;
	}

	let headersMap: NodeAppHeadersJson | undefined = undefined;
	if (options.staticHeaders) {
		headersMap = readHeadersJson(manifest.outDir);
	}

	const app = new NodeApp(manifest, !options.experimentalDisableStreaming);
	if (headersMap) {
		app.setHeadersMap(headersMap);
	}
	startServer(app, options);
}

function readHeadersJson(outDir: string | URL): NodeAppHeadersJson | undefined {
	let headersMap: NodeAppHeadersJson | undefined = undefined;

	const headersUrl = new URL(STATIC_HEADERS_FILE, outDir);
	if (existsSync(headersUrl)) {
		const content = readFileSync(headersUrl, 'utf-8');
		try {
			headersMap = JSON.parse(content) as NodeAppHeadersJson;
		} catch (e: any) {
			console.error('[@astrojs/node] Error parsing _headers.json: ' + e.message);
			console.error('[@astrojs/node] Please make sure your _headers.json is valid JSON.');
		}
	}
	return headersMap;
}

Domain

Subdomains

Dependencies

  • ./middleware.js
  • ./shared.js
  • ./standalone.js
  • ./types.js
  • astro
  • node
  • node:fs
  • setup

Frequently Asked Questions

What does server.ts do?
server.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RoutingSystem subdomain.
What functions are defined in server.ts?
server.ts defines 3 function(s): createExports, readHeadersJson, start.
What does server.ts depend on?
server.ts imports 8 module(s): ./middleware.js, ./shared.js, ./standalone.js, ./types.js, astro, node, node:fs, setup.
Where is server.ts in the architecture?
server.ts is located at packages/integrations/node/src/server.ts (domain: CoreAstro, subdomain: RoutingSystem, directory: packages/integrations/node/src).

Analyze Your Own Codebase

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

Try Supermodel Free