quickjs_runtime/jsutils/
modules.rs

1use 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}