Home / File/ index.ts — astro Source File

index.ts — astro Source File

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

File typescript CoreAstro CoreMiddleware 5 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  6294fa88_eb1f_7295_351b_f03f29337b81["index.ts"]
  38342bd4_11df_7a37_2e70_333185fe2db2["../../core/index.js"]
  6294fa88_eb1f_7295_351b_f03f29337b81 --> 38342bd4_11df_7a37_2e70_333185fe2db2
  89de2635_6169_bc8a_5f3b_51a713363774["../utils.js"]
  6294fa88_eb1f_7295_351b_f03f29337b81 --> 89de2635_6169_bc8a_5f3b_51a713363774
  719c9132_9d60_ca44_1865_b8c93edd291c["./snippets.js"]
  6294fa88_eb1f_7295_351b_f03f29337b81 --> 719c9132_9d60_ca44_1865_b8c93edd291c
  6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56["language-server"]
  6294fa88_eb1f_7295_351b_f03f29337b81 --> 6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  6294fa88_eb1f_7295_351b_f03f29337b81 --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  style 6294fa88_eb1f_7295_351b_f03f29337b81 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type {
	CompletionList,
	LanguageServicePlugin,
	LanguageServicePluginInstance,
} from '@volar/language-server';
import { URI } from 'vscode-uri';
import { AstroVirtualCode } from '../../core/index.js';
import { isInsideFrontmatter, isJSDocument } from '../utils.js';
import { getSnippetCompletions } from './snippets.js';

export const create = (): LanguageServicePlugin => {
	return {
		capabilities: {
			completionProvider: {
				resolveProvider: true,
			},
		},
		create(context): LanguageServicePluginInstance {
			return {
				isAdditionalCompletion: true,
				// Q: Why the empty transform and resolve functions?
				// A: Volar will skip mapping the completion items if those functions are defined, as such we can return the snippets
				// completions as-is, this is notably useful for snippets that insert to the frontmatter, since we don't need to map anything.
				transformCompletionItem(item) {
					return item;
				},
				provideCompletionItems(document, position, completionContext, token) {
					if (
						!context ||
						!isJSDocument ||
						token.isCancellationRequested ||
						completionContext.triggerKind === 2
					)
						return null;

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

					if (!isInsideFrontmatter(document.offsetAt(position), root.astroMeta.frontmatter))
						return null;

					const completionList: CompletionList = {
						items: [],
						isIncomplete: false,
					};

					completionList.items.push(...getSnippetCompletions(root.astroMeta.frontmatter));

					return completionList;
				},
				resolveCompletionItem(item) {
					return item;
				},
			};
		},
	};
};

Domain

Subdomains

Functions

Dependencies

  • ../../core/index.js
  • ../utils.js
  • ./snippets.js
  • language-server
  • vscode-uri

Frequently Asked Questions

What does index.ts do?
index.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 index.ts?
index.ts defines 1 function(s): create.
What does index.ts depend on?
index.ts imports 5 module(s): ../../core/index.js, ../utils.js, ./snippets.js, language-server, vscode-uri.
Where is index.ts in the architecture?
index.ts is located at packages/language-tools/language-server/src/plugins/typescript-addons/index.ts (domain: CoreAstro, subdomain: CoreMiddleware, directory: packages/language-tools/language-server/src/plugins/typescript-addons).

Analyze Your Own Codebase

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

Try Supermodel Free