From 3da9f36645d70bb35da19b4667ed0d2a285ff5cf Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Thu, 18 Mar 2021 12:00:20 +0100 Subject: [PATCH] Cancel packagejson search in npm after 1 second --- extensions/npm/src/tasks.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/extensions/npm/src/tasks.ts b/extensions/npm/src/tasks.ts index dee763ae1b7..5a3d1a53f24 100644 --- a/extensions/npm/src/tasks.ts +++ b/extensions/npm/src/tasks.ts @@ -6,7 +6,7 @@ import { TaskDefinition, Task, TaskGroup, WorkspaceFolder, RelativePattern, ShellExecution, Uri, workspace, TaskProvider, TextDocument, tasks, TaskScope, QuickPickItem, window, Position, ExtensionContext, env, - ShellQuotedString, ShellQuoting, commands, Location + ShellQuotedString, ShellQuoting, commands, Location, CancellationTokenSource } from 'vscode'; import * as path from 'path'; import * as fs from 'fs'; @@ -365,7 +365,11 @@ export function getPackageJsonUriFromTask(task: Task): Uri | null { } export async function hasPackageJson(): Promise { - const files = await workspace.findFiles('**/package.json', undefined, 1); + const token = new CancellationTokenSource(); + // Search for files for max 1 second. + const timeout = setTimeout(() => token.cancel(), 1000); + const files = await workspace.findFiles('**/package.json', undefined, 1, token.token); + clearTimeout(timeout); return files.length > 0; }