From 9b420df177e5cbd62f72f4aa88ff387eac08deb4 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Mon, 11 Mar 2024 18:29:49 +0800 Subject: [PATCH] refactor(typescript): decoupled from `@volar/typescript` --- packages/typescript/package.json | 6 ++---- packages/typescript/semantic.ts | 12 +++++++++++- pnpm-lock.yaml | 11 +---------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/packages/typescript/package.json b/packages/typescript/package.json index d677d141..a1a61189 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -25,8 +25,7 @@ }, "devDependencies": { "@types/path-browserify": "latest", - "@types/semver": "latest", - "@volar/typescript": "latest" + "@types/semver": "latest" }, "dependencies": { "path-browserify": "^1.0.1", @@ -36,8 +35,7 @@ "vscode-nls": "^5.2.0" }, "peerDependencies": { - "@volar/language-service": "~2.1.0", - "@volar/typescript": "~2.1.0" + "@volar/language-service": "~2.1.0" }, "peerDependenciesMeta": { "@volar/language-service": { diff --git a/packages/typescript/semantic.ts b/packages/typescript/semantic.ts index 4ad5e0d0..3939d009 100644 --- a/packages/typescript/semantic.ts +++ b/packages/typescript/semantic.ts @@ -15,7 +15,6 @@ import type { VirtualCode, WorkspaceEdit } from '@volar/language-service'; -import { getDocumentRegistry } from '@volar/typescript'; import * as path from 'path-browserify'; import * as semver from 'semver'; import type * as ts from 'typescript'; @@ -67,6 +66,17 @@ export interface CompletionItemData { }; } +const documentRegistries: [boolean, string, ts.DocumentRegistry][] = []; + +function getDocumentRegistry(ts: typeof import('typescript'), useCaseSensitiveFileNames: boolean, currentDirectory: string) { + let documentRegistry = documentRegistries.find(item => item[0] === useCaseSensitiveFileNames && item[1] === currentDirectory)?.[2]; + if (!documentRegistry) { + documentRegistry = ts.createDocumentRegistry(useCaseSensitiveFileNames, currentDirectory); + documentRegistries.push([useCaseSensitiveFileNames, currentDirectory, documentRegistry]); + } + return documentRegistry; +} + export function create( ts: typeof import('typescript'), { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 774ec022..116030c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -217,9 +217,6 @@ importers: '@types/semver': specifier: latest version: 7.5.8 - '@volar/typescript': - specifier: latest - version: 2.1.0 packages/typescript-twoslash-queries: dependencies: @@ -1206,13 +1203,6 @@ packages: dependencies: muggle-string: 0.4.1 - /@volar/typescript@2.1.0: - resolution: {integrity: sha512-2cicVoW4q6eU/omqfOBv+6r9JdrF5bBelujbJhayPNKiOj/xwotSJ/DM8IeMvTZvtkOZkm6suyOCLEokLY0w2w==} - dependencies: - '@volar/language-core': 2.1.0 - path-browserify: 1.0.1 - dev: true - /@vscode/emmet-helper@2.9.2: resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} dependencies: @@ -4123,6 +4113,7 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: false /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}