Skip to content

Commit

Permalink
refactor(language-core): rename Project interface to Language
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsoncodehk committed Dec 4, 2023
1 parent 533a39a commit 0eed636
Show file tree
Hide file tree
Showing 27 changed files with 61 additions and 61 deletions.
12 changes: 6 additions & 6 deletions packages/kit/lib/createChecker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import * as ts from 'typescript';
import { TextDocument } from 'vscode-languageserver-textdocument';
import { createServiceEnvironment } from './createServiceEnvironment';
import { asPosix, defaultCompilerOptions, fileNameToUri, uriToFileName } from './utils';
import { createProject, ProjectHost } from '@volar/typescript';
import { createLanguage, ProjectHost } from '@volar/typescript';

export function createTypeScriptChecker(
languages: LanguagePlugin[],
Expand Down Expand Up @@ -72,7 +72,7 @@ function createTypeScriptCheckerWorker(
};

const projectHost = getProjectHost(env);
const project = createProject(
const project = createLanguage(
ts as any,
ts.sys,
languages,
Expand Down Expand Up @@ -129,7 +129,7 @@ function createTypeScriptCheckerWorker(
async function fixErrors(fileName: string, diagnostics: Diagnostic[], only: string[] | undefined, writeFile: (fileName: string, newText: string) => Promise<void>) {
fileName = asPosix(fileName);
const uri = fileNameToUri(fileName);
const sourceFile = service.context.project.files.getSourceFile(uri);
const sourceFile = service.context.language.files.getSourceFile(uri);
if (sourceFile) {
const document = service.context.documents.get(uri, sourceFile.languageId, sourceFile.snapshot);
const range = { start: document.positionAt(0), end: document.positionAt(document.getText().length) };
Expand All @@ -145,7 +145,7 @@ function createTypeScriptCheckerWorker(
for (const uri in rootEdit.changes ?? {}) {
const edits = rootEdit.changes![uri];
if (edits.length) {
const editFile = service.context.project.files.getSourceFile(uri);
const editFile = service.context.language.files.getSourceFile(uri);
if (editFile) {
const editDocument = service.context.documents.get(uri, editFile.languageId, editFile.snapshot);
const newString = TextDocument.applyEdits(editDocument, edits);
Expand All @@ -155,7 +155,7 @@ function createTypeScriptCheckerWorker(
}
for (const change of rootEdit.documentChanges ?? []) {
if ('textDocument' in change) {
const editFile = service.context.project.files.getSourceFile(change.textDocument.uri);
const editFile = service.context.language.files.getSourceFile(change.textDocument.uri);
if (editFile) {
const editDocument = service.context.documents.get(change.textDocument.uri, editFile.languageId, editFile.snapshot);
const newString = TextDocument.applyEdits(editDocument, change.edits);
Expand All @@ -180,7 +180,7 @@ function createTypeScriptCheckerWorker(
function formatErrors(fileName: string, diagnostics: Diagnostic[], rootPath: string) {
fileName = asPosix(fileName);
const uri = fileNameToUri(fileName);
const sourceFile = service.context.project.files.getSourceFile(uri)!;
const sourceFile = service.context.language.files.getSourceFile(uri)!;
const document = service.context.documents.get(uri, sourceFile.languageId, sourceFile.snapshot);
const errors: ts.Diagnostic[] = diagnostics.map<ts.Diagnostic>(diagnostic => ({
category: diagnostic.severity === 1 satisfies typeof DiagnosticSeverity.Error ? ts.DiagnosticCategory.Error : ts.DiagnosticCategory.Warning,
Expand Down
2 changes: 1 addition & 1 deletion packages/language-core/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export interface LanguagePlugin<T extends VirtualFile = VirtualFile> {
};
}

export interface Project {
export interface Language {
files: FileProvider;
typescript?: {
configFileName: string | undefined;
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/lib/project/typescriptProject.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { LanguageService, ServiceEnvironment, createLanguageService, resolveCommonLanguageId } from '@volar/language-service';
import { createProject, createSys, ProjectHost } from '@volar/typescript';
import { createLanguage, createSys, ProjectHost } from '@volar/typescript';
import * as path from 'path-browserify';
import type * as ts from 'typescript/lib/tsserverlibrary';
import * as vscode from 'vscode-languageserver';
Expand Down Expand Up @@ -101,7 +101,7 @@ export async function createTypeScriptServerProject(
}
function getLanguageService() {
if (!languageService) {
const project = createProject(
const project = createLanguage(
ts,
sys,
Object.values(config.languages ?? {}),
Expand Down
16 changes: 8 additions & 8 deletions packages/language-server/lib/register/registerEditorFeatures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,14 @@ export function registerEditorFeatures(
});
connection.onRequest(GetMatchTsConfigRequest.type, async params => {
const languageService = (await projectProvider.getProject(params.uri)).getLanguageService();
const configFileName = languageService.context.project.typescript?.configFileName;
const configFileName = languageService.context.language.typescript?.configFileName;
if (configFileName) {
return { uri: env.fileNameToUri(configFileName) };
}
});
connection.onRequest(GetVirtualFilesRequest.type, async document => {
const languageService = (await projectProvider.getProject(document.uri)).getLanguageService();
const virtualFile = languageService.context.project.files.getSourceFile(document.uri)?.virtualFile;
const virtualFile = languageService.context.language.files.getSourceFile(document.uri)?.virtualFile;
return virtualFile ? prune(virtualFile[0]) : undefined;

function prune(file: VirtualFile): VirtualFile {
Expand All @@ -85,7 +85,7 @@ export function registerEditorFeatures(
let content: string = '';
let codegenStacks: Stack[] = [];
const mappings: Record<string, Mapping<CodeInformation>[]> = {};
const [virtualFile] = languageService.context.project.files.getVirtualFile(env.fileNameToUri(params.virtualFileName));
const [virtualFile] = languageService.context.language.files.getVirtualFile(env.fileNameToUri(params.virtualFileName));
if (virtualFile) {
for (const map of languageService.context.documents.getMaps(virtualFile)) {
content = map.virtualFileDocument.getText();
Expand All @@ -108,10 +108,10 @@ export function registerEditorFeatures(
const fs: typeof import('fs') = await import(fsModeName);
const languageService = (await projectProvider.getProject(params.uri)).getLanguageService();

if (languageService.context.project.typescript?.languageServiceHost) {
if (languageService.context.language.typescript?.languageServiceHost) {

const rootUri = languageService.context.env.workspaceFolder.uri.toString();
const { languageServiceHost } = languageService.context.project.typescript;
const { languageServiceHost } = languageService.context.language.typescript;

for (const fileName of languageServiceHost.getScriptFileNames()) {
if (!fs.existsSync(fileName)) {
Expand All @@ -123,7 +123,7 @@ export function registerEditorFeatures(
}
else {
const uri = languageService.context.env.fileNameToUri(fileName);
const [virtualFile] = languageService.context.project.files.getVirtualFile(uri);
const [virtualFile] = languageService.context.language.files.getVirtualFile(uri);
if (virtualFile?.typescript && virtualFile.id.startsWith(rootUri)) {
const { snapshot } = virtualFile;
fs.writeFile(languageService.context.env.uriToFileName(virtualFile.id), snapshot.getText(0, snapshot.getLength()), () => { });
Expand All @@ -143,8 +143,8 @@ export function registerEditorFeatures(
const languageService = project.getLanguageService();
const tsLanguageService: ts.LanguageService | undefined = languageService.context.inject('typescript/languageService');
const program = tsLanguageService?.getProgram();
if (program && languageService.context.project.typescript) {
const { configFileName, languageServiceHost } = languageService.context.project.typescript;
if (program && languageService.context.language.typescript) {
const { configFileName, languageServiceHost } = languageService.context.language.typescript;
const projectName = configFileName ?? (languageServiceHost.getCurrentDirectory() + '(inferred)');
const sourceFiles = program.getSourceFiles() ?? [];
for (const sourceFile of sourceFiles) {
Expand Down
2 changes: 1 addition & 1 deletion packages/language-service/lib/documentFeatures/format.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export function register(context: ServiceContext) {
token = NoneCancellationToken
) => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);
if (!sourceFile)
return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export function register(context: ServiceContext) {

if (data.virtualDocumentUri) {

const [virtualFile] = context.project.files.getVirtualFile(data.virtualDocumentUri);
const [virtualFile] = context.language.files.getVirtualFile(data.virtualDocumentUri);

if (virtualFile) {

Expand Down Expand Up @@ -127,7 +127,7 @@ export function register(context: ServiceContext) {

if (data.virtualDocumentUri) {

const [virtualFile] = context.project.files.getVirtualFile(data.virtualDocumentUri);
const [virtualFile] = context.language.files.getVirtualFile(data.virtualDocumentUri);

if (virtualFile) {

Expand Down Expand Up @@ -172,7 +172,7 @@ export function register(context: ServiceContext) {

function transformCallHierarchyItem(tsItem: vscode.CallHierarchyItem, tsRanges: vscode.Range[]): [vscode.CallHierarchyItem, vscode.Range[]] | undefined {

const [virtualFile] = context.project.files.getVirtualFile(tsItem.uri);
const [virtualFile] = context.language.files.getVirtualFile(tsItem.uri);

if (!virtualFile)
return [tsItem, tsRanges];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export function register(context: ServiceContext) {

return async (uri: string, range: vscode.Range, codeActionContext: vscode.CodeActionContext, token = NoneCancellationToken) => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);
if (!sourceFile)
return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ export function register(context: ServiceContext) {
const service = context.services[data.serviceIndex];

if (service.resolveReferencesCodeLensLocations) {
const virtualFile = context.project.files.getVirtualFile(data.workerFileUri)[0];
const sourceFile = context.project.files.getSourceFile(data.workerFileUri);
const virtualFile = context.language.files.getVirtualFile(data.workerFileUri)[0];
const sourceFile = context.language.files.getSourceFile(data.workerFileUri);
if (virtualFile) {
const document = context.documents.get(virtualFile.id, virtualFile.languageId, virtualFile.snapshot);
references = await service.resolveReferencesCodeLensLocations(document, data.workerFileRange, references, token);
Expand Down
6 changes: 3 additions & 3 deletions packages/language-service/lib/languageFeatures/complete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export function register(context: ServiceContext) {
token = NoneCancellationToken,
) => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);

if (
completionContext?.triggerKind === 3 satisfies typeof vscode.CompletionTriggerKind.TriggerForIncompleteCompletions
Expand All @@ -47,7 +47,7 @@ export function register(context: ServiceContext) {

if (cacheData.virtualDocumentUri) {

const [virtualFile] = context.project.files.getVirtualFile(cacheData.virtualDocumentUri);
const [virtualFile] = context.language.files.getVirtualFile(cacheData.virtualDocumentUri);
if (!virtualFile)
continue;

Expand Down Expand Up @@ -113,7 +113,7 @@ export function register(context: ServiceContext) {
}
else {

const rootVirtualFile = context.project.files.getSourceFile(uri)?.virtualFile?.[0];
const rootVirtualFile = context.language.files.getSourceFile(uri)?.virtualFile?.[0];

cache = {
uri,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export function register(context: ServiceContext) {

if (data.virtualDocumentUri) {

const [virtualFile] = context.project.files.getVirtualFile(data.virtualDocumentUri);
const [virtualFile] = context.language.files.getVirtualFile(data.virtualDocumentUri);

if (virtualFile) {

Expand Down
4 changes: 2 additions & 2 deletions packages/language-service/lib/languageFeatures/definition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export function register(

recursiveChecker.add({ uri: definition.targetUri, range: { start: definition.targetRange.start, end: definition.targetRange.start } });

const [virtualFile] = context.project.files.getVirtualFile(definition.targetUri);
const [virtualFile] = context.language.files.getVirtualFile(definition.targetUri);
const mirrorMap = virtualFile ? context.documents.getLinkedCodeMap(virtualFile) : undefined;

if (mirrorMap) {
Expand Down Expand Up @@ -97,7 +97,7 @@ export function register(

let foundTargetSelectionRange = false;

const [targetVirtualFile] = context.project.files.getVirtualFile(link.targetUri);
const [targetVirtualFile] = context.language.files.getVirtualFile(link.targetUri);

if (targetVirtualFile) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export function register(context: ServiceContext) {

recursiveChecker.add({ uri: document.uri, range: { start: reference.range.start, end: reference.range.start } });

const [virtualFile] = context.project.files.getVirtualFile(document.uri);
const [virtualFile] = context.language.files.getVirtualFile(document.uri);
const mirrorMap = virtualFile ? context.documents.getLinkedCodeMap(virtualFile) : undefined;

if (mirrorMap) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function transformDocumentLinkTarget(target: string, context: ServiceCont

const targetUri = URI.parse(target);
const clearUri = targetUri.with({ fragment: '' }).toString();
const [virtualFile] = context.project.files.getVirtualFile(clearUri);
const [virtualFile] = context.language.files.getVirtualFile(clearUri);

if (virtualFile) {
for (const map of context.documents.getMaps(virtualFile)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export function register(context: ServiceContext) {
_reportProgress?: (tokens: vscode.SemanticTokens) => void, // TODO
): Promise<vscode.SemanticTokens | undefined> => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);
if (!sourceFile)
return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function register(context: ServiceContext) {
(data) => data
.map(reference => {

const [virtualFile] = context.project.files.getVirtualFile(reference.uri);
const [virtualFile] = context.language.files.getVirtualFile(reference.uri);
if (!virtualFile) {
return reference;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export function register(context: ServiceContext) {

return async (oldUri: string, newUri: string, token = NoneCancellationToken) => {

const sourceFile = context.project.files.getSourceFile(oldUri);
const sourceFile = context.language.files.getSourceFile(oldUri);

if (sourceFile?.virtualFile) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export function register(context: ServiceContext) {

return async (uri: string, range: vscode.Range, token = NoneCancellationToken) => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);
if (!sourceFile)
return;

Expand Down
4 changes: 2 additions & 2 deletions packages/language-service/lib/languageFeatures/references.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export function register(context: ServiceContext) {

recursiveChecker.add({ uri: reference.uri, range: { start: reference.range.start, end: reference.range.start } });

const [virtualFile] = context.project.files.getVirtualFile(reference.uri);
const [virtualFile] = context.language.files.getVirtualFile(reference.uri);
const mirrorMap = virtualFile ? context.documents.getLinkedCodeMap(virtualFile) : undefined;

if (mirrorMap) {
Expand Down Expand Up @@ -73,7 +73,7 @@ export function register(context: ServiceContext) {

for (const reference of data) {

const [virtualFile] = context.project.files.getVirtualFile(reference.uri);
const [virtualFile] = context.language.files.getVirtualFile(reference.uri);

if (virtualFile) {
for (const map of context.documents.getMaps(virtualFile)) {
Expand Down
2 changes: 1 addition & 1 deletion packages/language-service/lib/languageFeatures/rename.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export function register(context: ServiceContext) {

recursiveChecker.add({ uri: editUri, range: { start: textEdit.range.start, end: textEdit.range.start } });

const [virtualFile] = context.project.files.getVirtualFile(editUri);
const [virtualFile] = context.language.files.getVirtualFile(editUri);
const mirrorMap = virtualFile ? context.documents.getLinkedCodeMap(virtualFile) : undefined;

if (mirrorMap) {
Expand Down
4 changes: 2 additions & 2 deletions packages/language-service/lib/languageFeatures/validation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ export function register(context: ServiceContext) {
response?: (result: vscode.Diagnostic[]) => void,
) => {

const sourceFile = context.project.files.getSourceFile(uri);
const sourceFile = context.language.files.getSourceFile(uri);
if (!sourceFile)
return [];

Expand Down Expand Up @@ -318,7 +318,7 @@ export function register(context: ServiceContext) {

for (const info of _error.relatedInformation) {

const [virtualFile] = context.project.files.getVirtualFile(info.location.uri);
const [virtualFile] = context.language.files.getVirtualFile(info.location.uri);

if (virtualFile) {
for (const map of context.documents.getMaps(virtualFile)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function register(context: ServiceContext) {
}
const symbols = embeddedSymbols.map(symbol => transformWorkspaceSymbol(symbol, loc => {

const [virtualFile] = context.project.files.getVirtualFile(loc.uri);
const [virtualFile] = context.language.files.getVirtualFile(loc.uri);

if (virtualFile) {
for (const map of context.documents.getMaps(virtualFile)) {
Expand Down
8 changes: 4 additions & 4 deletions packages/language-service/lib/languageService.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isDefinitionEnabled, isImplementationEnabled, isTypeDefinitionEnabled, type Project } from '@volar/language-core';
import { isDefinitionEnabled, isImplementationEnabled, isTypeDefinitionEnabled, type Language } from '@volar/language-core';
import { createDocumentProvider } from './documents';
import * as autoInsert from './languageFeatures/autoInsert';
import * as callHierarchy from './languageFeatures/callHierarchy';
Expand Down Expand Up @@ -42,7 +42,7 @@ export function createLanguageService(
modules: SharedModules,
services: Service[],
env: ServiceEnvironment,
project: Project,
language: Language,
) {

const context = createServiceContext();
Expand Down Expand Up @@ -95,10 +95,10 @@ export function createLanguageService(

function createServiceContext() {

const documents = createDocumentProvider(project.files);
const documents = createDocumentProvider(language.files);
const context: ServiceContext = {
env,
project,
language: language,
inject: (key, ...args) => {
for (const service of context.services) {
const provide = service.provide?.[key as any];
Expand Down
4 changes: 2 additions & 2 deletions packages/language-service/lib/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Project } from '@volar/language-core';
import type { Language } from '@volar/language-core';
import type * as vscode from 'vscode-languageserver-protocol';
import type { TextDocument } from 'vscode-languageserver-textdocument';
import type { URI } from 'vscode-uri';
Expand Down Expand Up @@ -63,7 +63,7 @@ interface Command<T> {

export interface ServiceContext<Provide = any> {
env: ServiceEnvironment;
project: Project;
language: Language;
inject<K extends keyof Provide>(key: K, ...args: Provide[K] extends (...args: any) => any ? Parameters<Provide[K]> : never): ReturnType<Provide[K] extends (...args: any) => any ? Provide[K] : never>;
commands: {
showReferences: Command<(uri: string, position: vscode.Position, locations: vscode.Location[]) => vscode.Command | undefined>;
Expand Down
Loading

0 comments on commit 0eed636

Please sign in to comment.