pub mod core_loader;
pub mod fs_loader;
#[cfg(test)]
mod fs_loader_tests;
use crate::js::module::ModulePath;
use crate::js::module::ModuleSource;
use crate::prelude::*;
use async_trait::async_trait;
pub use core_loader::CoreModuleLoader;
pub use fs_loader::AsyncFsModuleLoader;
pub use fs_loader::FsModuleLoader;
pub trait ModuleLoader {
fn resolve(&self, base: &str, specifier: &str) -> TheResult<ModulePath>;
fn load(&self, module_path: &str) -> TheResult<ModuleSource>;
}
#[async_trait]
pub trait AsyncModuleLoader {
async fn load(&self, module_path: &str) -> TheResult<ModuleSource>;
}