Compare commits

...

2 Commits

Author SHA1 Message Date
Kit Langton dd86e47762 test(core): remove directory search regression test 2026-08-04 21:42:55 -04:00
Kit Langton cdb51c6c29 fix(core): avoid eager directory snapshots 2026-08-04 21:38:16 -04:00
+5 -9
View File
@@ -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<string>()
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)