rqjs_ext/modules/fs/
mod.rs1mod access;
2mod mkdir;
3mod read_dir;
4mod read_file;
5mod rm;
6mod stats;
7mod write_file;
8
9use rquickjs::{
10 module::{Declarations, Exports, ModuleDef},
11 prelude::Func,
12};
13use rquickjs::{Class, Ctx, Object, Result};
14
15use rquickjs::function::Async;
16
17use self::access::access;
20use self::read_dir::{read_dir, read_dir_sync, Dirent};
21use self::read_file::{read_file, read_file_sync};
22use self::rm::{rmdir, rmfile};
23use self::stats::{stat_fn, Stat};
24use self::write_file::write_file;
25
26use crate::modules::fs::{
27 access::access_sync,
28 mkdir::{mkdir, mkdir_sync, mkdtemp, mkdtemp_sync},
29 rm::{rmdir_sync, rmfile_sync},
30 stats::stat_fn_sync,
31 write_file::write_file_sync,
32};
33
34use super::module::export_default;
35
36pub const CONSTANT_F_OK: u32 = 0;
37pub const CONSTANT_R_OK: u32 = 4;
38pub const CONSTANT_W_OK: u32 = 2;
39pub const CONSTANT_X_OK: u32 = 1;
40
41pub struct FsPromisesModule;
42
43impl ModuleDef for FsPromisesModule {
44 fn declare(declare: &Declarations<'_>) -> Result<()> {
45 declare.declare("access")?;
46 declare.declare("open")?;
47 declare.declare("readFile")?;
48 declare.declare("writeFile")?;
49 declare.declare("appendFile")?;
50 declare.declare("copyFile")?;
51 declare.declare("rename")?;
52 declare.declare("readdir")?;
53 declare.declare("mkdir")?;
54 declare.declare("mkdtemp")?;
55 declare.declare("rm")?;
56 declare.declare("rmdir")?;
57 declare.declare("stat")?;
58 declare.declare("constants")?;
59
60 declare.declare("default")?;
61
62 Ok(())
63 }
64
65 fn evaluate<'js>(ctx: &Ctx<'js>, exports: &Exports<'js>) -> Result<()> {
66 Class::<Dirent>::register(ctx)?;
67 Class::<Stat>::register(ctx)?;
68
69 export_default(ctx, exports, |default| {
70 export_promises(ctx, default)?;
71
72 Ok(())
73 })
74 }
75}
76
77pub struct FsModule;
87
88impl ModuleDef for FsModule {
89 fn declare(declare: &Declarations<'_>) -> Result<()> {
90 declare.declare("promises")?;
91 declare.declare("accessSync")?;
92 declare.declare("mkdirSync")?;
93 declare.declare("mkdtempSync")?;
94 declare.declare("readdirSync")?;
95 declare.declare("readFileSync")?;
96 declare.declare("rmdirSync")?;
97 declare.declare("rmSync")?;
98 declare.declare("statSync")?;
99 declare.declare("writeFileSync")?;
100
101 declare.declare("default")?;
102
103 Ok(())
104 }
105
106 fn evaluate<'js>(ctx: &Ctx<'js>, exports: &Exports<'js>) -> Result<()> {
107 Class::<Dirent>::register(ctx)?;
108 Class::<Stat>::register(ctx)?;
109
110 export_default(ctx, exports, |default| {
111 let promises = Object::new(ctx.clone())?;
112 export_promises(ctx, &promises)?;
113
114 default.set("promises", promises)?;
115 default.set("accessSync", Func::from(access_sync))?;
116 default.set("mkdirSync", Func::from(mkdir_sync))?;
117 default.set("mkdtempSync", Func::from(mkdtemp_sync))?;
118 default.set("readdirSync", Func::from(read_dir_sync))?;
119 default.set("readFileSync", Func::from(read_file_sync))?;
120 default.set("rmdirSync", Func::from(rmdir_sync))?;
121 default.set("rmSync", Func::from(rmfile_sync))?;
122 default.set("statSync", Func::from(stat_fn_sync))?;
123 default.set("writeFileSync", Func::from(write_file_sync))?;
124
125 Ok(())
126 })
127 }
128}
129
130fn export_promises<'js>(ctx: &Ctx<'js>, exports: &Object<'js>) -> Result<()> {
131 let constants = Object::new(ctx.clone())?;
132 constants.set("F_OK", CONSTANT_F_OK)?;
133 constants.set("R_OK", CONSTANT_R_OK)?;
134 constants.set("W_OK", CONSTANT_W_OK)?;
135 constants.set("X_OK", CONSTANT_X_OK)?;
136
137 exports.set("readdir", Func::from(Async(read_dir)))?;
138 exports.set("readFile", Func::from(Async(read_file)))?;
139 exports.set("writeFile", Func::from(Async(write_file)))?;
140 exports.set("mkdir", Func::from(Async(mkdir)))?;
141 exports.set("mkdtemp", Func::from(Async(mkdtemp)))?;
142 exports.set("rmdir", Func::from(Async(rmdir)))?;
143 exports.set("rm", Func::from(Async(rmfile)))?;
144 exports.set("stat", Func::from(Async(stat_fn)))?;
145 exports.set("access", Func::from(Async(access)))?;
146
147 exports.set("constants", constants)?;
148
149 Ok(())
150}
151
152