Home / File/ node.ts — astro Source File

node.ts — astro Source File

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

File typescript CoreAstro RenderingEngine 11 imports 8 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6["node.ts"]
  c32d12e2_d85e_28c0_eea7_9b29629857e0["../types/public/config.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> c32d12e2_d85e_28c0_eea7_9b29629857e0
  7216d952_4e4a_2d18_a85b_74b4ace79e2b["../core/constants.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> 7216d952_4e4a_2d18_a85b_74b4ace79e2b
  778b8261_2ad6_430a_46bf_ed0d67bb11bf["./manifest.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> 778b8261_2ad6_430a_46bf_ed0d67bb11bf
  a518ede1_e646_aa65_d30e_9dacfb9d2424["./createOutgoingHttpHeaders.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> a518ede1_e646_aa65_d30e_9dacfb9d2424
  97dbad4f_4a90_206c_6e29_6a54c12480f2["../core/app/index.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> 97dbad4f_4a90_206c_6e29_6a54c12480f2
  a4f2698c_5256_262a_ba7c_f72b51878d10["../core/app/types.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> a4f2698c_5256_262a_ba7c_f72b51878d10
  f5fa5977_19a9_c234_3a3d_e1d94261a9a7["./validate-forwarded-headers.js"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> f5fa5977_19a9_c234_3a3d_e1d94261a9a7
  e16a223b_37f3_6b25_1ee1_2b7bcb9d9415["node:fs"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> e16a223b_37f3_6b25_1ee1_2b7bcb9d9415
  c2f6615e_96e9_c4eb_5f71_cf120e271705["node:http"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> c2f6615e_96e9_c4eb_5f71_cf120e271705
  214989f1_72ea_fe85_4487_8b170a9188c5["node:http2"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> 214989f1_72ea_fe85_4487_8b170a9188c5
  155bd823_ceeb_ca16_2d83_f5ec72c22720["node:net"]
  81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 --> 155bd823_ceeb_ca16_2d83_f5ec72c22720
  style 81a03fae_a2bc_f6d1_94ef_f29ffefe8af6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import fs from 'node:fs';
import type { IncomingMessage, ServerResponse } from 'node:http';
import { Http2ServerResponse } from 'node:http2';
import type { Socket } from 'node:net';
import type { RemotePattern } from '../../types/public/config.js';
import { clientAddressSymbol, nodeRequestAbortControllerCleanupSymbol } from '../constants.js';
import { deserializeManifest } from './manifest.js';
import { createOutgoingHttpHeaders } from './createOutgoingHttpHeaders.js';
import type { RenderOptions } from './index.js';
import { App } from './index.js';
import type { NodeAppHeadersJson, SerializedSSRManifest, SSRManifest } from './types.js';
import { sanitizeHost, validateForwardedHeaders } from './validate-forwarded-headers.js';

/**
 * Allow the request body to be explicitly overridden. For example, this
 * is used by the Express JSON middleware.
 */
interface NodeRequest extends IncomingMessage {
	body?: unknown;
}

export class NodeApp extends App {
	headersMap: NodeAppHeadersJson | undefined = undefined;

	public setHeadersMap(headers: NodeAppHeadersJson) {
		this.headersMap = headers;
	}

	match(req: NodeRequest | Request, allowPrerenderedRoutes = false) {
		if (!(req instanceof Request)) {
			req = NodeApp.createRequest(req, {
				skipBody: true,
				allowedDomains: this.manifest.allowedDomains,
			});
		}
		return super.match(req, allowPrerenderedRoutes);
	}

	render(request: NodeRequest | Request, options?: RenderOptions): Promise<Response> {
		if (!(request instanceof Request)) {
			request = NodeApp.createRequest(request, {
				allowedDomains: this.manifest.allowedDomains,
			});
		}
		return super.render(request, options);
	}

	/**
	 * Converts a NodeJS IncomingMessage into a web standard Request.
	 * ```js
	 * import { NodeApp } from 'astro/app/node';
	 * import { createServer } from 'node:http';
	 *
	 * const server = createServer(async (req, res) => {
	 *     const request = NodeApp.createRequest(req);
	 *     const response = await app.render(request);
	 *     await NodeApp.writeResponse(response, res);
	 * })
	 * ```
	 */
// ... (271 more lines)

Domain

Subdomains

Classes

Types

Dependencies

  • ../core/app/index.js
  • ../core/app/types.js
  • ../core/constants.js
  • ../types/public/config.js
  • ./createOutgoingHttpHeaders.js
  • ./manifest.js
  • ./validate-forwarded-headers.js
  • node:fs
  • node:http
  • node:http2
  • node:net

Frequently Asked Questions

What does node.ts do?
node.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 node.ts?
node.ts defines 8 function(s): asyncIterableToBodyProps, getAbortControllerCleanup, getHostnamePort, getRequestSocket, loadApp, loadManifest, makeRequestBody, makeRequestHeaders.
What does node.ts depend on?
node.ts imports 11 module(s): ../core/app/index.js, ../core/app/types.js, ../core/constants.js, ../types/public/config.js, ./createOutgoingHttpHeaders.js, ./manifest.js, ./validate-forwarded-headers.js, node:fs, and 3 more.
Where is node.ts in the architecture?
node.ts is located at packages/astro/src/core/app/node.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/app).

Analyze Your Own Codebase

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

Try Supermodel Free