use url::Url; use crate::types::{ CompiledModuleSnapshot, FetchedModuleSource, ModuleAttributesKey, ModuleDependencyEdge, ModuleDependencySnapshot, ModuleEntryId, ModuleFetchRequest, ModuleGraphHandle, ModuleLoadError, ModuleMapKey, ResolvedModuleRequest, SingleModuleClientToken, SingleModuleFetchDisposition, }; pub trait ModuleScriptTreeHost { fn resolve_module_request( &mut self, specifier: &str, base_url: &Url, attributes: &ModuleAttributesKey, requested_phase: crate::ModuleImportPhase, ) -> Result; fn start_or_join_single_module_fetch( &mut self, request: ModuleFetchRequest, client: SingleModuleClientToken, ) -> SingleModuleFetchDisposition; fn compile_module_source( &mut self, fetched_source: FetchedModuleSource, phase: crate::ModuleImportPhase, ) -> Result; fn module_dependencies( &self, entry: ModuleEntryId, ) -> Result; fn link_module_graph( &mut self, root: ModuleEntryId, entries: &[ModuleEntryId], dependency_edges: &[ModuleDependencyEdge], ) -> Result; fn mark_module_failed(&mut self, key: ModuleMapKey, error: ModuleLoadError) -> ModuleEntryId; }