summaryrefslogtreecommitdiff
path: root/packages/core/src
diff options
context:
space:
mode:
authorDeWitt Clinton <[email protected]>2025-06-12 07:09:38 -0700
committerGitHub <[email protected]>2025-06-12 07:09:38 -0700
commitf2ab6d08c4cd0ca9a5b3900a6bb66a083c0577ee (patch)
treedb2083848fc070f0de6ac4fe385f59e71a04fc46 /packages/core/src
parent9072a4e5ee5d6a8b524be40b0465b66e5d3dceba (diff)
Improve the performance of filename completion over large repositories. (#938)
Diffstat (limited to 'packages/core/src')
-rw-r--r--packages/core/src/services/fileDiscoveryService.ts12
-rw-r--r--packages/core/src/utils/gitIgnoreParser.ts2
2 files changed, 13 insertions, 1 deletions
diff --git a/packages/core/src/services/fileDiscoveryService.ts b/packages/core/src/services/fileDiscoveryService.ts
index 3874e752..f117813d 100644
--- a/packages/core/src/services/fileDiscoveryService.ts
+++ b/packages/core/src/services/fileDiscoveryService.ts
@@ -7,6 +7,7 @@
import { GitIgnoreParser, GitIgnoreFilter } from '../utils/gitIgnoreParser.js';
import { isGitRepository } from '../utils/gitUtils.js';
import * as path from 'path';
+import fg from 'fast-glob';
export interface FileDiscoveryOptions {
respectGitIgnore?: boolean;
@@ -32,6 +33,17 @@ export class FileDiscoveryService {
}
}
+ async glob(
+ pattern: string | string[],
+ options: fg.Options = {},
+ ): Promise<string[]> {
+ const files = await fg(pattern, {
+ ...options,
+ caseSensitiveMatch: false,
+ });
+ return this.filterFiles(files);
+ }
+
/**
* Filters a list of file paths based on git ignore rules
*/
diff --git a/packages/core/src/utils/gitIgnoreParser.ts b/packages/core/src/utils/gitIgnoreParser.ts
index ae1a7a01..d5d013a8 100644
--- a/packages/core/src/utils/gitIgnoreParser.ts
+++ b/packages/core/src/utils/gitIgnoreParser.ts
@@ -6,7 +6,7 @@
import * as fs from 'fs/promises';
import * as path from 'path';
-import ignore, { Ignore } from 'ignore';
+import ignore, { type Ignore } from 'ignore';
import { isGitRepository } from './gitUtils.js';
export interface GitIgnoreFilter {