quickjs_runtime/jsutils/
modules.rs1use crate::quickjsrealmadapter::QuickJsRealmAdapter;
2use crate::quickjsvalueadapter::QuickJsValueAdapter;
3use std::sync::Arc;
4
5pub trait ScriptModuleLoader {
6 fn normalize_path(
7 &self,
8 realm: &QuickJsRealmAdapter,
9 ref_path: &str,
10 path: &str,
11 ) -> Option<String>;
12 fn load_module(&self, realm: &QuickJsRealmAdapter, absolute_path: &str) -> String;
13}
14
15pub trait CompiledModuleLoader {
16 fn normalize_path(
17 &self,
18 realm: &QuickJsRealmAdapter,
19 ref_path: &str,
20 path: &str,
21 ) -> Option<String>;
22 fn load_module(&self, realm: &QuickJsRealmAdapter, absolute_path: &str) -> Arc<Vec<u8>>;
23}
24
25pub trait NativeModuleLoader {
26 fn has_module(&self, realm: &QuickJsRealmAdapter, module_name: &str) -> bool;
27 fn get_module_export_names(&self, realm: &QuickJsRealmAdapter, module_name: &str) -> Vec<&str>;
28 fn get_module_exports(
29 &self,
30 realm: &QuickJsRealmAdapter,
31 module_name: &str,
32 ) -> Vec<(&str, QuickJsValueAdapter)>;
33}