0 | module Node.FS.Static
 1 |
 2 | import Node.Error
 3 | import Node.FS.ReadStream
 4 | import Node.FS.Stats
 5 | import Node.FS.Module
 6 | import Node.Internal.Support
 7 |
 8 | %foreign "node:lambda: (fs,path)=>fs.createReadStream(path)"
 9 | ffi_createReadStream : FSModule -> String -> PrimIO ReadStream
10 |
11 | export
12 | (.createReadStream) : HasIO io => (fs : FSModule) -> String -> io ReadStream
13 | (.createReadStream) fs path = primIO $ ffi_createReadStream fs path
14 |
15 | %foreign """
16 |   node:lambda:
17 |   (fs,rty,bigint,path) => {
18 |     try {
19 |       const result = fs.statSync(path, {
20 |         bigint,
21 |         throwIfNoEntry: true
22 |       });
23 |
24 |       return _right(result);
25 |     } catch(e) {
26 |       return _left(e);
27 |     }
28 |   }
29 |   """
30 | ffi_statSync : FSModule -> {r: StatsReturnType} -> (bigint : Bool) -> String -> PrimIO (Either Error $ Stats r)
31 |
32 | export
33 | (.statSync) : HasIO io => (fs : FSModule) -> (r : StatsReturnType) -> String -> io (Either Error $ Stats r)
34 | (.statSync) fs r path = primIO $ ffi_statSync fs (isBigInt r) path
35 |
36 | %foreign """
37 |   node:lambda:
38 |   (fs,rty,bigint,path,cb) => {
39 |     fs.stat(
40 |       path,
41 |       { bigint },
42 |       (err, value) => cb()(err ? _left(err) : _right(value))
43 |     )
44 |   }
45 |   """
46 | ffi_stat : FSModule -> {r: StatsReturnType} -> (bigint : Bool) -> String -> (Either Error (Stats r) -> PrimIO()) -> PrimIO ()
47 |
48 | export
49 | (.stat) : HasIO io => (fs : FSModule) -> (r: StatsReturnType) -> String -> (Either Error (Stats r) -> IO ()) -> io ()
50 | (.stat) fs r path cb = primIO $ ffi_stat fs (isBigInt r) path $ \either => toPrim $ cb either
51 |
52 |