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