log stat errors while listing dirs
Massimo Melina committed
Dec 15, 2021 at 16:58 UTC
3f1e051f080aecf9dd521a90a00a48aa5df75707
1 file changed
+15
-7
src/apis.ts
+15
-7
@@ -28,13 +28,8 @@ export const frontEndApis: ApiHandlers = {
28
let node = vfs.urlToNode(params.path || '/')
29
if (!node)
30
return
31
- const list = await Promise.all((node.children ||[]).map(async (node:VfsNode) =>
32
- node.hidden ? null
33
- : node.source?.includes('//') ? { n:node.name }
34
- : node.source ? stat(node.source).then(res => statToFile(node.name, res), () => null)
35
- : node.name ? { n: node.name + '/' }
36
- : null
37
- ))
31
+ const list = await Promise.all((node.children ||[]).map(node =>
32
+ !node.hidden && nodeToFile(node) ))
33
_.remove(list, x => !x)
34
let path = node.source
35
if (path) {
@@ -54,6 +49,19 @@ export const frontEndApis: ApiHandlers = {
49
}
50
}
51
52
+async function nodeToFile(node: VfsNode) {
53
+ try {
54
+ return node.source?.includes('//') ? { n:node.name }
55
+ : node.source ? statToFile(node.name, await stat(node.source))
56
+ : node.name ? { n: node.name + '/' }
57
+ : null
58
+ }
59
+ catch (err:any) {
60
+ console.error('ERR', node.source, err?.code || err)
61
+ return null
62
+ }
63
+}
64
+
65
function statToFile(name: string | undefined, stat:Stats) {
66
const folder = stat.isDirectory()
67
return {