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 {