From 29021531d78f42ae010c196b1b27da0fdcdb0060 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Thu, 4 Jun 2026 21:33:48 -0700 Subject: [PATCH] fix(vscode-extension): inspect tsdk configurations correctly Inspect both 'js/ts.tsdk.path' and 'typescript.tsdk' configurations separately, as the inspect method always returns a truthy object. fixes #69145 --- .../client/src/client.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/vscode-ng-language-service/client/src/client.ts b/vscode-ng-language-service/client/src/client.ts index bf526bd43e4a..2f34f0ef7619 100644 --- a/vscode-ng-language-service/client/src/client.ts +++ b/vscode-ng-language-service/client/src/client.ts @@ -630,19 +630,20 @@ export class AngularLanguageClient implements vscode.Disposable { private async getTsdkPath(): Promise { const config = vscode.workspace.getConfiguration(); - const tsdkInspect = - config.inspect('js/ts.tsdk.path') ?? config.inspect('typescript.tsdk'); - - if (!tsdkInspect) { - return ''; - } + const jsTsTsdkInspect = config.inspect('js/ts.tsdk.path'); + const tsTsdkInspect = config.inspect('typescript.tsdk'); // 1. Check workspace/folder settings first (highest priority) // ONLY check or load workspace-level settings if the workspace is trusted if (vscode.workspace.isTrusted) { - const workspaceTsdk = ( - tsdkInspect.workspaceValue ?? tsdkInspect.workspaceFolderValue + const jsTsWorkspaceTsdk = ( + jsTsTsdkInspect?.workspaceValue ?? jsTsTsdkInspect?.workspaceFolderValue )?.trim(); + const tsWorkspaceTsdk = ( + tsTsdkInspect?.workspaceValue ?? tsTsdkInspect?.workspaceFolderValue + )?.trim(); + const workspaceTsdk = jsTsWorkspaceTsdk || tsWorkspaceTsdk; + if (workspaceTsdk) { const stateKey = `approvedTsdk:${workspaceTsdk}`; const isApproved = this.context.workspaceState.get(stateKey); @@ -660,7 +661,7 @@ export class AngularLanguageClient implements vscode.Disposable { } } - return tsdkInspect.globalValue?.trim() ?? ''; + return jsTsTsdkInspect?.globalValue?.trim() ?? tsTsdkInspect?.globalValue?.trim() ?? ''; } private async promptForTsdkApproval(workspaceTsdk: string, stateKey: string): Promise {