diff --git a/packages/core/src/fs-util.ts b/packages/core/src/fs-util.ts index 666396fe32c9..6e74f01647cf 100644 --- a/packages/core/src/fs-util.ts +++ b/packages/core/src/fs-util.ts @@ -71,10 +71,24 @@ export namespace FSUtil { return yield* Effect.tryPromise({ try: async () => { const entries = await NFS.readdir(dirPath, { withFileTypes: true }) - return entries.map( - (e): DirEntry => ({ - name: e.name, - type: e.isDirectory() ? "directory" : e.isSymbolicLink() ? "symlink" : e.isFile() ? "file" : "other", + return await Promise.all( + entries.map(async (e): Promise => { + let type: DirEntry["type"] + if (e.isDirectory()) { + type = "directory" + } else if (e.isSymbolicLink()) { + try { + const target = await NFS.stat(join(dirPath, e.name)) + type = target.isDirectory() ? "directory" : "symlink" + } catch { + type = "symlink" + } + } else if (e.isFile()) { + type = "file" + } else { + type = "other" + } + return { name: e.name, type } }), ) },