vfs: rename file in source folder
Massimo Melina committed
Dec 15, 2021 at 00:16 UTC
eb2dcb130d87ffbd3af3e76390ff5f03f7974478
3 files changed
+12
-5
dev-notes.md
-1
@@ -8,7 +8,6 @@
8
- https://www.tutorialspoint.com/koajs/koajs_quick_guide.htm
9
10
# To do
11
-- vfs: rename file in source folder
11
- vfs: serve an html for a folder?
12
- "default" property for vfsNode?
13
- sticky breadcrumbs
src/apis.ts
+2
-1
@@ -44,7 +44,8 @@ export const frontEndApis: ApiHandlers = {
44
onlyFiles: false,
45
ignore: wantArray(node.hide).map(x => path+x),
46
})
47
- list.push( ...res.map(x => statToFile(x.name, x.stats!)) )
47
+ const { rename } = node
48
+ list.push( ...res.map(x => statToFile(rename?.[x.name] || x.name, x.stats!)) )
49
}
50
return { list }
51
}
src/vfs.ts
+10
-3
@@ -14,6 +14,7 @@ export interface VfsNode {
14
source?: string,
15
children?: VfsNode[],
16
hide?: string | string[],
17
+ rename?: Record<string,string>,
18
}
19
20
export class Vfs {
@@ -60,13 +61,19 @@ export class Vfs {
61
let run = this.root
62
const rest = url.split('/').filter(Boolean)
63
while (rest.length) {
63
- const piece = rest[0]
64
+ let piece = rest.shift()
65
+ const { rename } = run
66
+ if (rename)
67
+ for (const k in rename)
68
+ if (rename[k] === piece) {
69
+ piece = k
70
+ break
71
+ }
72
// @ts-ignore
73
const find = run?.children?.find(x => x.name === piece)
74
if (!find)
67
- return run.source ? { source:run.source + '/' + rest.join('/') } : null
75
+ return run.source ? { source:run.source + '/' + piece + '/' + rest.join('/') } : null
76
run = find
69
- rest.shift()
77
}
78
return run
79
}