Home / File/ server.ts — astro Source File

server.ts — astro Source File

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

File typescript CoreAstro CoreMiddleware 7 imports 10 functions

Entity Profile

Dependency Diagram

graph LR
  88d29d84_fc17_43e9_f02f_9b64acf73dd5["server.ts"]
  1c4a5f6b_4be0_5bef_0fc7_8439f7c73106["./context.js"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> 1c4a5f6b_4be0_5bef_0fc7_8439f7c73106
  5d6f4037_5bea_5d26_d23c_0c9bcb7db079["./static-html.js"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> 5d6f4037_5bea_5d26_d23c_0c9bcb7db079
  df5f3381_d28d_f520_0dbe_bb088893ef11["./types.js"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> df5f3381_d28d_f520_0dbe_bb088893ef11
  f67bc8aa_309f_a15b_0d5b_327e8fb9afe1["astro:react:opts"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> f67bc8aa_309f_a15b_0d5b_327e8fb9afe1
  f16d8c76_2866_6150_bd14_0347b59abfe9["astro"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> f16d8c76_2866_6150_bd14_0347b59abfe9
  d9988dd0_c044_f9d2_85cd_a31a0a2bdf80["react"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> d9988dd0_c044_f9d2_85cd_a31a0a2bdf80
  72c29c28_0c5e_16fd_13f7_f42c45a83f93["server"]
  88d29d84_fc17_43e9_f02f_9b64acf73dd5 --> 72c29c28_0c5e_16fd_13f7_f42c45a83f93
  style 88d29d84_fc17_43e9_f02f_9b64acf73dd5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import opts from 'astro:react:opts';
import type { AstroComponentMetadata, NamedSSRLoadedRendererValue } from 'astro';
import React from 'react';
import ReactDOM from 'react-dom/server';
import { incrementId } from './context.js';
import StaticHtml from './static-html.js';
import type { RendererContext } from './types.js';

const slotName = (str: string) => str.trim().replace(/[-_]([a-z])/g, (_, w) => w.toUpperCase());
const reactTypeof = Symbol.for('react.element');
const reactTransitionalTypeof = Symbol.for('react.transitional.element');

async function check(
	this: RendererContext,
	Component: any,
	props: Record<string, any>,
	children: any,
) {
	// Note: there are packages that do some unholy things to create "components".
	// Checking the $$typeof property catches most of these patterns.
	if (typeof Component === 'object') {
		return Component['$$typeof'].toString().slice('Symbol('.length).startsWith('react');
	}
	if (typeof Component !== 'function') return false;
	if (Component.name === 'QwikComponent') return false;

	// Preact forwarded-ref components can be functions, which React does not support
	if (typeof Component === 'function' && Component['$$typeof'] === Symbol.for('react.forward_ref'))
		return false;

	if (Component.prototype != null && typeof Component.prototype.render === 'function') {
		return React.Component.isPrototypeOf(Component) || React.PureComponent.isPrototypeOf(Component);
	}

	let isReactComponent = false;
	function Tester(...args: Array<any>) {
		try {
			const vnode = Component(...args);
			if (
				vnode &&
				(vnode['$$typeof'] === reactTypeof || vnode['$$typeof'] === reactTransitionalTypeof)
			) {
				isReactComponent = true;
			}
		} catch {}

		return React.createElement('div');
	}

	await renderToStaticMarkup.call(this, Tester, props, children);

	return isReactComponent;
}

async function getNodeWritable(): Promise<typeof import('node:stream').Writable> {
	let nodeStreamBuiltinModuleName = 'node:stream';
	let { Writable } = await import(/* @vite-ignore */ nodeStreamBuiltinModuleName);
	return Writable;
}

// ... (170 more lines)

Domain

Subdomains

Dependencies

  • ./context.js
  • ./static-html.js
  • ./types.js
  • astro
  • astro:react:opts
  • react
  • server

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, CoreMiddleware subdomain.
What functions are defined in server.ts?
server.ts defines 10 function(s): check, getFormState, getNodeWritable, isFormRequest, needsHydration, readResult, renderToPipeableStreamAsync, renderToReadableStreamAsync, renderToStaticMarkup, slotName.
What does server.ts depend on?
server.ts imports 7 module(s): ./context.js, ./static-html.js, ./types.js, astro, astro:react:opts, react, server.
Where is server.ts in the architecture?
server.ts is located at packages/integrations/react/src/server.ts (domain: CoreAstro, subdomain: CoreMiddleware, directory: packages/integrations/react/src).

Analyze Your Own Codebase

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

Try Supermodel Free