diff --git a/packages/core/src/filesystem/search.ts b/packages/core/src/filesystem/search.ts index 23473381e543..281d127ce999 100644 --- a/packages/core/src/filesystem/search.ts +++ b/packages/core/src/filesystem/search.ts @@ -31,10 +31,7 @@ export const ripgrepLayer = Layer.effect( const location = yield* Location.Service const ripgrep = yield* Ripgrep.Service const scope = yield* Scope.Scope - const state = { - files: [] as string[], - directories: [] as string[], - } + const files: string[] = [] const directories = new Set() yield* ripgrep .find({ @@ -43,10 +40,9 @@ export const ripgrepLayer = Layer.effect( limit: location.vcs ? Number.MAX_SAFE_INTEGER : 100_000, onEntry: (entry) => Effect.sync(() => { - state.files.push(entry.path) + files.push(entry.path) const parts = entry.path.split("/") parts.slice(0, -1).forEach((_, index) => directories.add(parts.slice(0, index + 1).join("/") + path.sep)) - state.directories = Array.from(directories) }), }) .pipe(Effect.orDie, Effect.asVoid, Effect.forkIn(scope)) @@ -106,10 +102,10 @@ export const ripgrepLayer = Layer.effect( Effect.gen(function* () { const items = input.type === "file" - ? state.files + ? files : input.type === "directory" - ? state.directories - : [...state.files, ...state.directories] + ? Array.from(directories) + : [...files, ...directories] return fuzzysort.go(input.query, items, { limit: input.limit ?? 50 }).map((item) => { const relative = item.target const type = relative.endsWith(path.sep) ? ("directory" as const) : ("file" as const)