Skip to content

Commit 9cb7f19

Browse files
committed
refactor: make code cleaner by using only ls and ls host
1 parent 8029595 commit 9cb7f19

5 files changed

Lines changed: 16 additions & 20 deletions

File tree

typescript/src/decorateProxy.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,12 @@ export const overrideRequestPreferences = {
3232
}
3333

3434
export const decorateLanguageService = (
35-
info: ts.server.PluginCreateInfo,
35+
{ languageService, languageServiceHost }: ts.server.PluginCreateInfo,
3636
existingProxy: ts.LanguageService | undefined,
3737
config: { config: any },
3838
{ pluginSpecificSyntaxServerConfigCheck = true }: { pluginSpecificSyntaxServerConfigCheck?: boolean } = {},
3939
) => {
4040
const c: GetConfig = key => lodashGet(config.config, key)
41-
const { languageService, languageServiceHost } = info
4241

4342
// Set up decorator object
4443
const proxy = getInitialProxy(languageService, existingProxy)
@@ -54,7 +53,6 @@ export const decorateLanguageService = (
5453
}
5554
const specialCommandResult = options?.triggerCharacter
5655
? handleSpecialCommand(
57-
info,
5856
fileName,
5957
position,
6058
options.triggerCharacter as TriggerCharacterCommand,
@@ -142,8 +140,8 @@ export const decorateLanguageService = (
142140

143141
decorateCodeActions(proxy, languageService, c)
144142
decorateCodeFixes(proxy, languageService, c, languageServiceHost)
145-
decorateSemanticDiagnostics(proxy, info, c)
146-
decorateDefinitions(proxy, info, c)
143+
decorateSemanticDiagnostics(proxy, languageService, languageServiceHost, c)
144+
decorateDefinitions(proxy, languageService, languageServiceHost, c)
147145
decorateReferences(proxy, languageService, c)
148146
decorateDocumentHighlights(proxy, languageService, c)
149147
decorateWorkspaceSymbolSearch(proxy, languageService, c, languageServiceHost)

typescript/src/definitions.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { findChildContainingExactPosition } from './utils'
33
import { join } from 'path-browserify'
44
import { ModuleDeclaration } from 'typescript'
55

6-
export default (proxy: ts.LanguageService, info: ts.server.PluginCreateInfo, c: GetConfig) => {
6+
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
77
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
8-
const prior = info.languageService.getDefinitionAndBoundSpan(fileName, position)
8+
const prior = languageService.getDefinitionAndBoundSpan(fileName, position)
99
if (!prior) {
10-
const program = info.languageService.getProgram()!
10+
const program = languageService.getProgram()!
1111
const sourceFile = program.getSourceFile(fileName)!
1212
const node = findChildContainingExactPosition(sourceFile, position)
1313
if (node && ts.isStringLiteral(node)) {
@@ -18,7 +18,7 @@ export default (proxy: ts.LanguageService, info: ts.server.PluginCreateInfo, c:
1818
}
1919
if (c('enableFileDefinitions') && ['./', '../'].some(str => node.text.startsWith(str))) {
2020
const file = join(fileName, '..', node.text)
21-
if (info.languageServiceHost.fileExists?.(file)) {
21+
if (languageServiceHost.fileExists?.(file)) {
2222
return {
2323
textSpan,
2424
definitions: [
@@ -115,7 +115,7 @@ export default (proxy: ts.LanguageService, info: ts.server.PluginCreateInfo, c:
115115
firstDef.fileName.endsWith('.d.ts')
116116
) {
117117
const jsFileName = `${firstDef.fileName.slice(0, -'.d.ts'.length)}.js`
118-
const isJsFileExist = info.languageServiceHost.fileExists?.(jsFileName)
118+
const isJsFileExist = languageServiceHost.fileExists?.(jsFileName)
119119
if (isJsFileExist) prior.definitions = [{ ...firstDef, fileName: jsFileName }]
120120
}
121121
if (c('miscDefinitionImprovement') && prior.definitions) {
@@ -126,7 +126,7 @@ export default (proxy: ts.LanguageService, info: ts.server.PluginCreateInfo, c:
126126
// filter out css modules index definition
127127
if (containerName === 'classes' && containerKind === undefined && rest['isAmbient'] && kind === 'index' && name === '__index') {
128128
// ensure we don't filter out something important?
129-
const nodeAtDefinition = findChildContainingExactPosition(info.languageService.getProgram()!.getSourceFile(fileName)!, textSpan.start)
129+
const nodeAtDefinition = findChildContainingExactPosition(languageService.getProgram()!.getSourceFile(fileName)!, textSpan.start)
130130
let moduleDeclaration: ModuleDeclaration | undefined
131131
ts.findAncestor(nodeAtDefinition, node => {
132132
if (ts.isModuleDeclaration(node)) {

typescript/src/semanticDiagnostics.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import type tslib from 'typescript/lib/tsserverlibrary'
21
import { GetConfig } from './types'
32

4-
export default (proxy: ts.LanguageService, info: ts.server.PluginCreateInfo, c: GetConfig) => {
3+
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
54
proxy.getSemanticDiagnostics = fileName => {
6-
let prior = info.languageService.getSemanticDiagnostics(fileName)
5+
let prior = languageService.getSemanticDiagnostics(fileName)
76
if (c('supportTsDiagnosticDisableComment')) {
8-
const scriptSnapshot = info.languageServiceHost.getScriptSnapshot(fileName)!
7+
const scriptSnapshot = languageServiceHost.getScriptSnapshot(fileName)!
98
const firstLine = scriptSnapshot.getText(0, scriptSnapshot.getLength()).split(/\r?\n/)[0]!
109
if (firstLine.startsWith('//')) {
1110
const match = firstLine.match(/@ts-diagnostic-disable ((\d+, )*(\d+))/)

typescript/src/specialCommands/handle.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import getEmmetCompletions from './emmet'
66
import objectIntoArrayConverters from './objectIntoArrayConverters'
77

88
export default (
9-
info: ts.server.PluginCreateInfo,
109
fileName: string,
1110
position: number,
1211
specialCommand: TriggerCharacterCommand,
@@ -24,13 +23,13 @@ export default (
2423
if (triggerCharacterCommands.includes(specialCommand) && !configuration) {
2524
throw new Error('no-ts-essential-plugin-configuration')
2625
}
27-
const sourceFile = info.languageService.getProgram()!.getSourceFile(fileName)!
26+
const sourceFile = languageService.getProgram()!.getSourceFile(fileName)!
2827
if (specialCommand === 'emmet-completions') {
2928
const leftNode = findChildContainingPosition(ts, sourceFile, position - 1)
3029
if (!leftNode) return
3130
return {
3231
entries: [],
33-
typescriptEssentialsResponse: getEmmetCompletions(fileName, leftNode, sourceFile, position, info.languageService),
32+
typescriptEssentialsResponse: getEmmetCompletions(fileName, leftNode, sourceFile, position, languageService),
3433
}
3534
}
3635
if (specialCommand === 'turnArrayIntoObject') {

typescript/src/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,9 @@ export function approveCast<T2 extends Array<(node: ts.Node) => node is ts.Node>
229229
}
230230

231231
export const patchMethod = <T, K extends keyof T>(obj: T, method: K, overriden: (oldMethod: T[K]) => T[K]) => {
232-
const oldValue = obj[method]
232+
const oldValue = obj[method] as (...args: any) => any
233233
Object.defineProperty(obj, method, {
234-
value: overriden(oldValue),
234+
value: overriden(oldValue.bind(obj) as any),
235235
})
236236
return () => {
237237
Object.defineProperty(obj, method, {

0 commit comments

Comments
 (0)