Home / File/ codeActions.ts — astro Source File

codeActions.ts — astro Source File

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

File typescript CoreAstro RoutingSystem 5 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  7dad0fbf_f2ca_9794_de17_4761c6009c25["codeActions.ts"]
  38342bd4_11df_7a37_2e70_333185fe2db2["../../core/index.js"]
  7dad0fbf_f2ca_9794_de17_4761c6009c25 --> 38342bd4_11df_7a37_2e70_333185fe2db2
  0a26fa81_9fee_4874_879c_ce0b5dc3c998["./utils.js"]
  7dad0fbf_f2ca_9794_de17_4761c6009c25 --> 0a26fa81_9fee_4874_879c_ce0b5dc3c998
  6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56["language-server"]
  7dad0fbf_f2ca_9794_de17_4761c6009c25 --> 6857b6b2_4d48_bfb0_0a0e_8e2e52fabb56
  1b7f3f22_7c1e_f584_78bf_c28212c711a6["language-service"]
  7dad0fbf_f2ca_9794_de17_4761c6009c25 --> 1b7f3f22_7c1e_f584_78bf_c28212c711a6
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  7dad0fbf_f2ca_9794_de17_4761c6009c25 --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  style 7dad0fbf_f2ca_9794_de17_4761c6009c25 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { TextDocumentEdit } from '@volar/language-server';
import type { CodeAction, LanguageServiceContext } from '@volar/language-service';
import { URI } from 'vscode-uri';
import { AstroVirtualCode } from '../../core/index.js';
import { mapEdit } from './utils.js';

export function enhancedProvideCodeActions(
	codeActions: CodeAction[],
	context: LanguageServiceContext,
) {
	return codeActions.map((codeAction) => mapCodeAction(codeAction, context));
}

export function enhancedResolveCodeAction(codeAction: CodeAction, context: LanguageServiceContext) {
	/**
	 * TypeScript code actions don't come through here, as they're considered to be already fully resolved
	 * A lot of the code actions we'll encounter here are more tricky ones, such as fixAll or refactor
	 * For now, it seems like we don't need to do anything special here, but we'll keep this function around
	 */
	return mapCodeAction(codeAction, context);
}

function mapCodeAction(codeAction: CodeAction, context: LanguageServiceContext) {
	if (!codeAction.edit || !codeAction.edit.documentChanges) return codeAction;

	codeAction.edit.documentChanges = codeAction.edit.documentChanges.map((change) => {
		if (TextDocumentEdit.is(change)) {
			const decoded = context.decodeEmbeddedDocumentUri(URI.parse(change.textDocument.uri));
			const sourceScript = decoded && context.language.scripts.get(decoded[0]);
			const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
			const root = sourceScript?.generated?.root;
			if (!virtualCode || !(root instanceof AstroVirtualCode)) return change;

			change.edits = change.edits.map((edit) => mapEdit(edit, root, virtualCode.languageId));
		}

		return change;
	});

	return codeAction;
}

Domain

Subdomains

Dependencies

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

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free