Home / File/ astro.ts — astro Source File

astro.ts — astro Source File

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

File typescript CoreAstro RenderingEngine 5 imports 2 functions

Entity Profile

Dependency Diagram

graph LR
  a943f832_bfb7_8516_7216_c38c26db96ff["astro.ts"]
  38342bd4_11df_7a37_2e70_333185fe2db2["../../core/index.js"]
  a943f832_bfb7_8516_7216_c38c26db96ff --> 38342bd4_11df_7a37_2e70_333185fe2db2
  81a20ac1_6143_16be_33ec_872bb8d3a54b["types"]
  a943f832_bfb7_8516_7216_c38c26db96ff --> 81a20ac1_6143_16be_33ec_872bb8d3a54b
  6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56["language-server"]
  a943f832_bfb7_8516_7216_c38c26db96ff --> 6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56
  4e2ee814_ff7b_a348_0e3a_6e6d7b34afb6["vscode-html-languageservice"]
  a943f832_bfb7_8516_7216_c38c26db96ff --> 4e2ee814_ff7b_a348_0e3a_6e6d7b34afb6
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  a943f832_bfb7_8516_7216_c38c26db96ff --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  style a943f832_bfb7_8516_7216_c38c26db96ff fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { DiagnosticMessage } from '@astrojs/compiler/types';
import type {
	CompletionItem,
	Diagnostic,
	LanguageServicePlugin,
	LanguageServicePluginInstance,
} from '@volar/language-server';
import {
	CompletionItemKind,
	InsertTextFormat,
	Position,
	Range,
	TextEdit,
} from '@volar/language-server';
import type { TextDocument } from 'vscode-html-languageservice';
import { URI } from 'vscode-uri';
import { AstroVirtualCode } from '../core/index.js';

export const create = (): LanguageServicePlugin => {
	return {
		capabilities: {
			completionProvider: {
				triggerCharacters: ['-'],
			},
			diagnosticProvider: {
				interFileDependencies: false,
				workspaceDiagnostics: false,
			},
		},
		create(context): LanguageServicePluginInstance {
			return {
				provideCompletionItems(document, position, completionContext, token) {
					if (token.isCancellationRequested) return null;
					let items: CompletionItem[] = [];

					const decoded = context.decodeEmbeddedDocumentUri(URI.parse(document.uri));
					const sourceScript = decoded && context.language.scripts.get(decoded[0]);
					const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
					if (!(virtualCode instanceof AstroVirtualCode)) return;

					if (completionContext.triggerCharacter === '-') {
						const frontmatterCompletion = getFrontmatterCompletion(virtualCode, document, position);
						if (frontmatterCompletion) items.push(frontmatterCompletion);
					}

					return {
						isIncomplete: false,
						items: items,
					};
				},
				provideDiagnostics(document, token) {
					if (token.isCancellationRequested) return [];

					const decoded = context.decodeEmbeddedDocumentUri(URI.parse(document.uri));
					const sourceScript = decoded && context.language.scripts.get(decoded[0]);
					const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
					if (!(virtualCode instanceof AstroVirtualCode)) return;

					return virtualCode.compilerDiagnostics.map(compilerMessageToDiagnostic);

// ... (69 more lines)

Domain

Subdomains

Dependencies

  • ../../core/index.js
  • language-server
  • types
  • vscode-html-languageservice
  • vscode-uri

Frequently Asked Questions

What does astro.ts do?
astro.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 astro.ts?
astro.ts defines 2 function(s): create, getFrontmatterCompletion.
What does astro.ts depend on?
astro.ts imports 5 module(s): ../../core/index.js, language-server, types, vscode-html-languageservice, vscode-uri.
Where is astro.ts in the architecture?
astro.ts is located at packages/language-tools/language-server/src/plugins/astro.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/language-tools/language-server/src/plugins).

Analyze Your Own Codebase

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

Try Supermodel Free