/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; export interface TSConfig { readonly uri: vscode.Uri; readonly fsPath: string; readonly posixPath: string; readonly workspaceFolder?: vscode.WorkspaceFolder; } export class TsConfigProvider { public async getConfigsForWorkspace(token: vscode.CancellationToken): Promise> { if (!vscode.workspace.workspaceFolders) { return []; } const configs = new Map(); for (const config of await this.findConfigFiles(token)) { const root = vscode.workspace.getWorkspaceFolder(config); if (root) { configs.set(config.fsPath, { uri: config, fsPath: config.fsPath, posixPath: config.path, workspaceFolder: root }); } } return configs.values(); } private async findConfigFiles(token: vscode.CancellationToken): Promise { return await vscode.workspace.findFiles('**/tsconfig*.json', '**/{node_modules,.*}/**', undefined, token); } }