rqjs_ext/modules/
util.rs

1use rquickjs::{
2    cstr,
3    module::{Declarations, Exports, ModuleDef},
4    Ctx, Function, Result,
5};
6
7use super::module::export_default;
8
9// use crate::{module_builder::ModuleInfo, modules::module::export_default};
10
11// use super::console::format_plain;
12
13pub struct UtilModule;
14
15impl ModuleDef for UtilModule {
16    fn declare(declare: &Declarations<'_>) -> Result<()> {
17        declare.declare(stringify!(TextDecoder))?;
18        declare.declare(stringify!(TextEncoder))?;
19        // declare.declare(stringify!(format))?;
20        declare.declare(cstr!("default").to_bytes())?;
21        Ok(())
22    }
23
24    fn evaluate<'js>(ctx: &Ctx<'js>, exports: &Exports<'js>) -> Result<()> {
25        export_default(ctx, exports, |default| {
26            let globals = ctx.globals();
27
28            let encoder: Function = globals.get(stringify!(TextEncoder))?;
29            let decoder: Function = globals.get(stringify!(TextDecoder))?;
30
31            default.set(stringify!(TextEncoder), encoder)?;
32            default.set(stringify!(TextDecoder), decoder)?;
33            // default.set("format", Func::from(format_plain))?;
34
35            Ok(())
36        })
37    }
38}
39
40// impl From<UtilModule> for ModuleInfo<UtilModule> {
41//     fn from(val: UtilModule) -> Self {
42//         ModuleInfo {
43//             name: "util",
44//             module: val,
45//         }
46//     }
47// }