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, 20 dependents.

File typescript CoreAstro RoutingSystem 7 imports 20 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  923db4e1_01a0_98ab_9c38_dfe16dd4bada["server.ts"]
  349a6247_7703_ff13_e2b6_d319130ff2f9["node:crypto"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> 349a6247_7703_ff13_e2b6_d319130ff2f9
  c52a5f83_66e3_37d7_9ebb_767f7129bc62["node:path"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> c52a5f83_66e3_37d7_9ebb_767f7129bc62
  d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> d9a92db9_c95e_9165_13ac_24b3d859d946
  26192125_b6ed_271b_07a8_88803009cd6b["test-utils"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> 26192125_b6ed_271b_07a8_88803009cd6b
  6e765aa6_fd52_dae5_82dc_1b4b5e92a527["node.js"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> 6e765aa6_fd52_dae5_82dc_1b4b5e92a527
  2accdca4_fb80_ff68_515c_f646abc72243["vscode-languageserver-textdocument"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> 2accdca4_fb80_ff68_515c_f646abc72243
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  923db4e1_01a0_98ab_9c38_dfe16dd4bada --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  38eb43bb_eb3b_a13c_c79f_a35b90ae04ef["caching.test.ts"]
  38eb43bb_eb3b_a13c_c79f_a35b90ae04ef --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  4c7e91a1_f86d_6b8e_b0f0_4a15ccae8a23["completions.test.ts"]
  4c7e91a1_f86d_6b8e_b0f0_4a15ccae8a23 --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  b47c660d_464d_f6b4_cbf1_a369558fa472["definitions.test.ts"]
  b47c660d_464d_f6b4_cbf1_a369558fa472 --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  93e35a50_6bb5_f8d8_542c_bf8226444c1c["diagnostics.test.ts"]
  93e35a50_6bb5_f8d8_542c_bf8226444c1c --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  2b5cae3f_5d71_9efa_3b70_0869ac653520["hover.test.ts"]
  2b5cae3f_5d71_9efa_3b70_0869ac653520 --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  bfeaa1d4_2b1c_7a2f_d4cf_493c45ab804c["completions.test.ts"]
  bfeaa1d4_2b1c_7a2f_d4cf_493c45ab804c --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  8417bd9c_0fe1_3e38_0582_22df592195a3["hover.test.ts"]
  8417bd9c_0fe1_3e38_0582_22df592195a3 --> 923db4e1_01a0_98ab_9c38_dfe16dd4bada
  style 923db4e1_01a0_98ab_9c38_dfe16dd4bada fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { createHash } from 'node:crypto';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import type { LanguageServerHandle } from '@volar/test-utils';
import { startLanguageServer } from '@volar/test-utils';
import * as protocol from 'vscode-languageserver-protocol/node.js';
import type { TextDocument } from 'vscode-languageserver-textdocument';
import { URI } from 'vscode-uri';

let serverHandle: LanguageServerHandle | undefined;
let initializeResult: protocol.InitializeResult | undefined;

export type LanguageServer = {
	handle: LanguageServerHandle;
	initializeResult: protocol.InitializeResult;
	openFakeDocument: (content: string, languageId: string) => Promise<TextDocument>;
};

export async function getLanguageServer(): Promise<LanguageServer> {
	if (!serverHandle) {
		serverHandle = startLanguageServer(
			path.resolve('./bin/nodeServer.js'),
			fileURLToPath(new URL('./fixture', import.meta.url)),
		);

		initializeResult = await serverHandle.initialize(
			URI.file(fileURLToPath(new URL('./fixture', import.meta.url))).toString(),
			{
				typescript: {
					tsdk: path.join(
						path.dirname(fileURLToPath(import.meta.url)),
						'../',
						'node_modules',
						'typescript',
						'lib',
					),
				},
				contentIntellisense: true,
			},
			{
				textDocument: {
					definition: {
						linkSupport: true,
					},
				},
				workspace: {
					// Needed for tests that use didChangeWatchedFiles
					didChangeWatchedFiles: {},
					configuration: true,
				},
			},
		);
		// Ensure that our first test does not suffer from a TypeScript overhead
		await serverHandle.sendCompletionRequest(
			'file://doesnt-exists',
			protocol.Position.create(0, 0),
		);
	}

	if (!initializeResult || !serverHandle) {
		throw new Error('Server not initialized');
	}

	return {
		handle: serverHandle,
		initializeResult: initializeResult,
		openFakeDocument: async (content: string, languageId: string) => {
			const hash = createHash('sha256').update(content).digest('base64url');
			const uri = URI.file(`does-not-exists-${hash}-.astro`).toString();
			const textDocument = await serverHandle!.openInMemoryDocument(uri, languageId, content);

			return textDocument;
		},
	};
}

Domain

Subdomains

Dependencies

  • node.js
  • node:crypto
  • node:path
  • node:url
  • test-utils
  • vscode-languageserver-textdocument
  • vscode-uri

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 2 function(s): content, getLanguageServer.
What does server.ts depend on?
server.ts imports 7 module(s): node.js, node:crypto, node:path, node:url, test-utils, vscode-languageserver-textdocument, vscode-uri.
What files import server.ts?
server.ts is imported by 20 file(s): caching.test.ts, caching.test.ts, completions.test.ts, completions.test.ts, completions.test.ts, completions.test.ts, completions.test.ts, custom-data.test.ts, and 12 more.
Where is server.ts in the architecture?
server.ts is located at packages/language-tools/language-server/test/server.ts (domain: CoreAstro, subdomain: RoutingSystem, directory: packages/language-tools/language-server/test).

Analyze Your Own Codebase

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

Try Supermodel Free