0 | module Node.FS.Stats
  1 |
  2 | import Node.FS.Module
  3 |
  4 | public export
  5 | data StatsReturnType
  6 |   = StatsBigInt
  7 |   | StatsInt
  8 |
  9 | public export
 10 | statsReturnType : StatsReturnType -> Type
 11 | statsReturnType StatsBigInt = Integer
 12 | statsReturnType StatsInt = Int
 13 |
 14 | public export
 15 | isBigInt : StatsReturnType -> Bool
 16 | isBigInt = \case
 17 |   StatsBigInt => True
 18 |   StatsInt => False
 19 |
 20 | public export
 21 | isInt : StatsReturnType -> Bool
 22 | isInt = \case
 23 |   StatsBigInt => False
 24 |   StatsInt => True
 25 |
 26 | export
 27 | data Stats : StatsReturnType -> Type where [external]
 28 |
 29 | %foreign "node:lambda: (ty, s)=>s.isBlockDevice()"
 30 | ffi_isBlockDevice : Stats r -> Int
 31 |
 32 | export
 33 | (.isBlockDevice) : Stats r -> Bool
 34 | (.isBlockDevice) stats = 0 /= ffi_isBlockDevice stats
 35 |
 36 | %foreign "node:lambda: (ty,s)=>s.isCharacterDevice() ? 1 : 0"
 37 | ffi_isCharacterDevice : Stats r -> Int
 38 |
 39 | export
 40 | (.isCharacterDevice) : Stats r -> Bool
 41 | (.isCharacterDevice) stats = 0 /= ffi_isCharacterDevice stats
 42 |
 43 | %foreign "node:lambda: (ty,s)=>s.isDirectory() ? 1 : 0"
 44 | ffi_isDirectory : Stats r -> Int
 45 |
 46 | export
 47 | (.isDirectory) : Stats r -> Bool
 48 | (.isDirectory) stats = 0 /= ffi_isDirectory stats
 49 |
 50 | %foreign "node:lambda: (ty,s)=>s.isFIFO() ? 1 : 0"
 51 | ffi_isFIFO : Stats r -> Int
 52 |
 53 | export
 54 | (.isFIFO) : Stats r -> Bool
 55 | (.isFIFO) stats = 0 /= ffi_isFIFO stats
 56 |
 57 | %foreign "node:lambda: (ty,s)=>s.isFile() ? 1 : 0"
 58 | ffi_isFile : Stats r -> Int
 59 |
 60 | export
 61 | (.isFile) : Stats r -> Bool
 62 | (.isFile) stats = 0 /= ffi_isFile stats
 63 |
 64 | %foreign "node:lambda: (ty,s)=>s.isSocket() ? 1 : 0"
 65 | ffi_isSocket : Stats r -> Int
 66 |
 67 | export
 68 | (.isSocket) : Stats r -> Bool
 69 | (.isSocket) stats = 0 /= ffi_isSocket stats
 70 |
 71 | %foreign "node:lambda: (ty,s)=>s.isSymbolicLink() ? 1 : 0"
 72 | ffi_isSymbolicLink : Stats r -> Int
 73 |
 74 | export
 75 | (.isSymbolicLink) : Stats r -> Bool
 76 | (.isSymbolicLink) stats = 0 /= ffi_isSymbolicLink stats
 77 |
 78 | %foreign "node:lambda: (rty,aty,s)=>s.size"
 79 | ffi_size : Stats r -> a
 80 |
 81 | export
 82 | size : Stats r -> statsReturnType r
 83 | size stats = ffi_size stats { a = statsReturnType r }
 84 |
 85 | %foreign "node:lambda: (rty,aty,s)=>s.dev"
 86 | ffi_dev : Stats r -> a
 87 |
 88 | export
 89 | dev : Stats r -> statsReturnType r
 90 | dev stats = ffi_dev stats { a = statsReturnType r }
 91 |
 92 | %foreign "node:lambda: (rty,aty,s)=>s.ino"
 93 | ffi_ino : Stats r -> a
 94 |
 95 | export
 96 | ino : Stats r -> statsReturnType r
 97 | ino stats = ffi_ino stats { a = statsReturnType r }
 98 |
 99 | %foreign "node:lambda: (rty,aty,s)=>s.mode"
100 | ffi_mode : Stats r -> a
101 |
102 | export
103 | mode : Stats r -> statsReturnType r
104 | mode stats = ffi_mode stats { a = statsReturnType r }
105 |
106 | %foreign "node:lambda: (rty,aty,s)=>s.nlink"
107 | ffi_nlink : Stats r -> a
108 |
109 | export
110 | nlink : Stats r -> statsReturnType r
111 | nlink stats = ffi_nlink stats { a = statsReturnType r }
112 |
113 | %foreign "node:lambda: (rty,aty,s)=>s.uid"
114 | ffi_uid : Stats r -> a
115 |
116 | export
117 | uid : Stats r -> statsReturnType r
118 | uid stats = ffi_uid stats { a = statsReturnType r }
119 |
120 | %foreign "node:lambda: (rty,aty,s)=>s.gid"
121 | ffi_gid : Stats r -> a
122 |
123 | export
124 | gid : Stats r -> statsReturnType r
125 | gid stats = ffi_gid stats { a = statsReturnType r }
126 |
127 | %foreign "node:lambda: (rty,aty,s)=>s.rdev"
128 | ffi_rdev : Stats r -> a
129 |
130 | export
131 | rdev : Stats r -> statsReturnType r
132 | rdev stats = ffi_rdev stats { a = statsReturnType r }
133 |
134 | %foreign "node:lambda: (rty,aty,s)=>s.blksize"
135 | ffi_blksize : Stats r -> a
136 |
137 | export
138 | blksize : Stats r -> statsReturnType r
139 | blksize stats = ffi_blksize stats { a = statsReturnType r }
140 |
141 | %foreign "node:lambda: (rty,aty,s)=>s.blocks"
142 | ffi_blocks : Stats r -> a
143 |
144 | export
145 | blocks : Stats r -> statsReturnType r
146 | blocks stats = ffi_blocks stats { a = statsReturnType r }
147 |
148 | %foreign "node:lambda: (rty,aty,s)=>s.atimeMs"
149 | ffi_atimeMs : Stats r -> a
150 |
151 | export
152 | atimeMs : Stats r -> statsReturnType r
153 | atimeMs stats = ffi_atimeMs stats { a = statsReturnType r }
154 |
155 | %foreign "node:lambda: (rty,aty,s)=>s.ctimeMs"
156 | ffi_ctimeMs : Stats r -> a
157 |
158 | %foreign "node:lambda: (rty,aty,s)=>s.mtimeMs"
159 | ffi_mtimeMs : Stats r -> a
160 |
161 | export
162 | mtimeMs : Stats r -> statsReturnType r
163 | mtimeMs stats = ffi_mtimeMs stats { a = statsReturnType r }
164 |
165 | export
166 | ctimeMs : Stats r -> statsReturnType r
167 | ctimeMs stats = ffi_ctimeMs stats { a = statsReturnType r }
168 |
169 | %foreign "node:lambda: (rty,aty,s)=>s.birthtimeMs"
170 | ffi_birthtimeMs : Stats r -> a
171 |
172 | export
173 | birthtimeMs : Stats r -> statsReturnType r
174 | birthtimeMs stats = ffi_birthtimeMs stats { a = statsReturnType r }
175 |
176 | %foreign "node:lambda: (rty,aty,s)=>s.atimeNs"
177 | ffi_atimeNs : Stats r -> a
178 |
179 | export
180 | atimeNs : Stats r -> statsReturnType r
181 | atimeNs stats = ffi_atimeNs stats { a = statsReturnType r }
182 |
183 | %foreign "node:lambda: (rty,aty,s)=>s.mtimeNs"
184 | ffi_mtimeNs : Stats r -> a
185 |
186 | export
187 | mtimeNs : Stats r -> statsReturnType r
188 | mtimeNs stats = ffi_mtimeNs stats { a = statsReturnType r }
189 |
190 | %foreign "node:lambda: (rty,aty,s)=>s.ctimeNs"
191 | ffi_ctimeNs : Stats r -> a
192 |
193 | export
194 | ctimeNs : Stats r -> statsReturnType r
195 | ctimeNs stats = ffi_ctimeNs stats { a = statsReturnType r }
196 |
197 | %foreign "node:lambda: (rty,aty,s)=>s.birthtimeNs"
198 | ffi_birthtimeNs : Stats r -> a
199 |
200 | export
201 | birthtimeNs : Stats r -> statsReturnType r
202 | birthtimeNs stats = ffi_birthtimeNs stats { a = statsReturnType r }
203 |
204 | {-
205 | Missing implementations for:
206 | - atime
207 | - mtime
208 | - ctime
209 | - birthtime
210 | -}
211 |