Home / File/ svelte.ts — astro Source File

svelte.ts — astro Source File

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

File typescript CoreAstro CoreMiddleware 4 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac["svelte.ts"]
  93e56c2d_f370_b182_229b_84d794b9c282["./utils.js"]
  7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac --> 93e56c2d_f370_b182_229b_84d794b9c282
  040ca79b_dadf_4383_efd2_c0b13744e9f1["language-core"]
  7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac --> 040ca79b_dadf_4383_efd2_c0b13744e9f1
  41525615_7e06_b0e8_f601_674c57b118ee["typescript"]
  7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac --> 41525615_7e06_b0e8_f601_674c57b118ee
  abeb339e_cdba_0d7f_6b7f_3696c1eb86f9["vscode-uri"]
  7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac --> abeb339e_cdba_0d7f_6b7f_3696c1eb86f9
  style 7d8cdb8c_4f2e_234f_0ac9_5e55b15f9dac fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import {
	type CodeInformation,
	forEachEmbeddedCode,
	type LanguagePlugin,
	type Mapping,
	type VirtualCode,
} from '@volar/language-core';
import type ts from 'typescript';
import type { URI } from 'vscode-uri';
import { framework2tsx } from './utils.js';

export function getSvelteLanguagePlugin(): LanguagePlugin<URI, SvelteVirtualCode> {
	return {
		getLanguageId(uri) {
			if (uri.path.endsWith('.svelte')) {
				return 'svelte';
			}
		},
		createVirtualCode(uri, languageId, snapshot) {
			if (languageId === 'svelte') {
				const fileName = uri.fsPath.replace(/\\/g, '/');
				return new SvelteVirtualCode(fileName, snapshot);
			}
		},
		typescript: {
			extraFileExtensions: [{ extension: 'svelte', isMixedContent: true, scriptKind: 7 }],
			getServiceScript(svelteCode) {
				for (const code of forEachEmbeddedCode(svelteCode)) {
					if (code.id === 'tsx') {
						return {
							code,
							extension: '.tsx',
							scriptKind: 4 satisfies ts.ScriptKind.TSX,
						};
					}
				}
			},
		},
	};
}

class SvelteVirtualCode implements VirtualCode {
	id = 'root';
	languageId = 'svelte';
	mappings!: Mapping<CodeInformation>[];
	embeddedCodes!: VirtualCode[];
	codegenStacks = [];

	constructor(
		public fileName: string,
		public snapshot: ts.IScriptSnapshot,
	) {
		this.mappings = [];

		this.embeddedCodes = [];
		this.embeddedCodes.push(
			framework2tsx(this.fileName, this.snapshot.getText(0, this.snapshot.getLength()), 'svelte'),
		);
	}
}

Domain

Subdomains

Dependencies

  • ./utils.js
  • language-core
  • typescript
  • vscode-uri

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free