generated from fission-codes/project-template
-
Notifications
You must be signed in to change notification settings - Fork 24
/
metadata.ts
47 lines (39 loc) · 907 Bytes
/
metadata.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import * as versions from "./versions.js"
export type UnixFileMode = number
export enum UnixNodeType {
Raw = "raw",
Directory = "dir",
File = "file",
Metadata = "metadata",
Symlink = "symlink",
HAMTShard = "hamtShard",
}
export type UnixMeta = {
mtime: number
ctime: number
mode: UnixFileMode
_type: string
}
export type Metadata = {
unixMeta: UnixMeta
isFile: boolean
version: versions.SemVer
}
export const emptyUnix = (isFile: boolean): UnixMeta => ({
mtime: Date.now(),
ctime: Date.now(),
mode: isFile ? 644 : 755,
_type: isFile ? UnixNodeType.File : UnixNodeType.Directory,
})
export const empty = (isFile: boolean, version: versions.SemVer): Metadata => ({
isFile,
version,
unixMeta: emptyUnix(isFile)
})
export const updateMtime = (metadata: Metadata): Metadata => ({
...metadata,
unixMeta: {
...metadata.unixMeta,
mtime: Date.now()
}
})