Home / File/ nodeServer.ts — astro Source File

nodeServer.ts — astro Source File

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

Entity Profile

Dependency Diagram

graph LR
  d2e36883_bbdf_9943_5480_e8268c65805d["nodeServer.ts"]
  0e94d234_63d6_9e3a_18cc_17c52f493c38["../core/frontmatterHolders.js"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> 0e94d234_63d6_9e3a_18cc_17c52f493c38
  38342bd4_11df_7a37_2e70_333185fe2db2["../../core/index.js"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> 38342bd4_11df_7a37_2e70_333185fe2db2
  367a2539_25e9_8b92_26be_f9296f51cfaf["./languageServerPlugin.js"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> 367a2539_25e9_8b92_26be_f9296f51cfaf
  fcea7c61_8834_bcc8_0062_ff8308eb913e["./utils.js"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> fcea7c61_8834_bcc8_0062_ff8308eb913e
  3d47248d_11e4_5795_cc2a_a866f94df7d9["node"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> 3d47248d_11e4_5795_cc2a_a866f94df7d9
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  d2e36883_bbdf_9943_5480_e8268c65805d --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  style d2e36883_bbdf_9943_5480_e8268c65805d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import {
	createConnection,
	createServer,
	createTypeScriptProject,
	loadTsdkByPath,
	MessageType,
	ShowMessageNotification,
	type WorkspaceFolder,
} from '@volar/language-server/node';
import { URI, Utils } from 'vscode-uri';
import {
	type CollectionConfig,
	type CollectionConfigInstance,
	SUPPORTED_FRONTMATTER_EXTENSIONS_KEYS,
} from './core/frontmatterHolders.js';
import { addAstroTypes } from './core/index.js';
import { getLanguagePlugins, getLanguageServicePlugins } from './languageServerPlugin.js';
import { getAstroInstall } from './utils.js';

const connection = createConnection();
const server = createServer(connection);

let contentIntellisenseEnabled = false;

connection.listen();

connection.onInitialize((params) => {
	const tsdk = params.initializationOptions?.typescript?.tsdk;

	if (!tsdk) {
		throw new Error(
			'The `typescript.tsdk` init option is required. It should point to a directory containing a `typescript.js` or `tsserverlibrary.js` file, such as `node_modules/typescript/lib`.',
		);
	}

	const { typescript, diagnosticMessages } = loadTsdkByPath(tsdk, params.locale);

	contentIntellisenseEnabled = params.initializationOptions?.contentIntellisense ?? false;
	const collectionConfig = {
		reload(folders) {
			this.configs = loadCollectionConfig(folders);
		},
		configs: contentIntellisenseEnabled
			? loadCollectionConfig(
					// The vast majority of clients support workspaceFolders, but sometimes some unusual environments like tests don't
					// @ts-expect-error - Just deprecated types, it's fine
					params.workspaceFolders ?? (params.rootUri ? [{ uri: params.rootUri }] : []) ?? [],
				)
			: [],
	} satisfies CollectionConfig;

	function loadCollectionConfig(folders: WorkspaceFolder[] | { uri: string }[]) {
		return folders.flatMap((folder) => {
			try {
				const folderUri = URI.parse(folder.uri);
				let config = server.fileSystem.readFile(
					Utils.joinPath(folderUri, '.astro/collections/collections.json'),
				);

				if (!config) {
// ... (91 more lines)

Domain

Dependencies

  • ../../core/index.js
  • ../core/frontmatterHolders.js
  • ./languageServerPlugin.js
  • ./utils.js
  • node
  • vscode-uri

Frequently Asked Questions

What does nodeServer.ts do?
nodeServer.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain.
What does nodeServer.ts depend on?
nodeServer.ts imports 6 module(s): ../../core/index.js, ../core/frontmatterHolders.js, ./languageServerPlugin.js, ./utils.js, node, vscode-uri.
Where is nodeServer.ts in the architecture?
nodeServer.ts is located at packages/language-tools/language-server/src/nodeServer.ts (domain: CoreAstro, directory: packages/language-tools/language-server/src).

Analyze Your Own Codebase

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

Try Supermodel Free