mirror of
https://github.com/lexmount/moli.git
synced 2026-09-26 16:01:30 +00:00
Carry realm-owned exception tokens through the module tree, preserve V8 compile exceptions, and cache static dependency validation failures without caching direct import resolution or network errors. Keep values GC-traced and isolated across WindowProxy reuse. Add identity, shared-dependency, realm, GC, and pending-sibling regressions. Validated with fmt, full workspace Clippy, 17647 nextest passes, and a matched 148-case CLI/CDP WPT slice. The target now passes 11/11 subtests; smoke is 42/43 with the baseline missing-node Puppeteer failure.
54 lines
1.8 KiB
Rust
54 lines
1.8 KiB
Rust
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<ResolvedModuleRequest, ModuleLoadError>;
|
|
|
|
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<CompiledModuleSnapshot, ModuleLoadError>;
|
|
|
|
fn module_dependencies(
|
|
&self,
|
|
entry: ModuleEntryId,
|
|
) -> Result<ModuleDependencySnapshot, ModuleLoadError>;
|
|
|
|
fn link_module_graph(
|
|
&mut self,
|
|
root: ModuleEntryId,
|
|
entries: &[ModuleEntryId],
|
|
dependency_edges: &[ModuleDependencyEdge],
|
|
) -> Result<ModuleGraphHandle, ModuleLoadError>;
|
|
|
|
fn mark_module_failed(&mut self, key: ModuleMapKey, error: ModuleLoadError) -> ModuleEntryId;
|
|
|
|
/// Static requested-module validation errors belong to the module script,
|
|
/// unlike failures to resolve the specifier passed directly to import().
|
|
/// Retain the actual exception and cache it for subsequent graph loads.
|
|
fn cache_module_request_error(
|
|
&mut self,
|
|
key: ModuleMapKey,
|
|
error: ModuleLoadError,
|
|
) -> ModuleLoadError;
|
|
}
|