Home / Function/ GET() — astro Function Reference

GET() — astro Function Reference

Architecture documentation for the GET() function in sse.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  595aa9fa_c8bf_d959_c720_47f3d6af1801["GET()"]
  8ee6d526_730d_8006_9ce4_1e28cf68d39c["sse.ts"]
  595aa9fa_c8bf_d959_c720_47f3d6af1801 -->|defined in| 8ee6d526_730d_8006_9ce4_1e28cf68d39c
  style 595aa9fa_c8bf_d959_c720_47f3d6af1801 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/test/fixtures/request-signal/src/pages/sse.ts lines 10–53

export const GET = ({ request }: APIContext) => {
	globalThis.__requestAbortState = { aborted: false, events: ['started'] };

	let heartbeat: ReturnType<typeof setInterval> | undefined;

	const stream = new ReadableStream<Uint8Array>({
		start(controller) {
			const enqueue = (payload: string) => {
				controller.enqueue(encoder.encode(`data: ${payload}\n\n`));
			};

			enqueue('ready');

			heartbeat = setInterval(() => enqueue('ping'), 1000);

			const onAbort = () => {
				if (heartbeat) clearInterval(heartbeat);
				globalThis.__requestAbortState = {
					aborted: true,
					events: [...(globalThis.__requestAbortState?.events ?? []), 'aborted'],
				};
				controller.close();
			};

			if (request.signal.aborted) {
				onAbort();
				return;
			}

			request.signal.addEventListener('abort', onAbort, { once: true });
		},
		cancel() {
			if (heartbeat) clearInterval(heartbeat);
		},
	});

	return new Response(stream, {
		headers: {
			'content-type': 'text/event-stream; charset=utf-8',
			'cache-control': 'no-cache, no-transform',
			connection: 'keep-alive',
		},
	});
};

Subdomains

Frequently Asked Questions

What does GET() do?
GET() is a function in the astro codebase, defined in packages/astro/test/fixtures/request-signal/src/pages/sse.ts.
Where is GET() defined?
GET() is defined in packages/astro/test/fixtures/request-signal/src/pages/sse.ts at line 10.

Analyze Your Own Codebase

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

Try Supermodel Free