summaryrefslogtreecommitdiff
path: root/core/modules.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules.rs')
-rw-r--r--core/modules.rs32
1 files changed, 23 insertions, 9 deletions
diff --git a/core/modules.rs b/core/modules.rs
index 294bcfb05..235bfeb4e 100644
--- a/core/modules.rs
+++ b/core/modules.rs
@@ -65,6 +65,7 @@ pub trait ModuleLoader {
/// apply import map for child imports.
fn resolve(
&self,
+ op_state: Rc<RefCell<OpState>>,
specifier: &str,
referrer: &str,
_is_main: bool,
@@ -109,6 +110,7 @@ pub(crate) struct NoopModuleLoader;
impl ModuleLoader for NoopModuleLoader {
fn resolve(
&self,
+ _op_state: Rc<RefCell<OpState>>,
_specifier: &str,
_referrer: &str,
_is_main: bool,
@@ -207,14 +209,23 @@ impl RecursiveModuleLoad {
pub async fn prepare(self) -> (ModuleLoadId, Result<Self, AnyError>) {
let (module_specifier, maybe_referrer) = match self.state {
LoadState::ResolveMain(ref specifier, _) => {
- let spec = match self.loader.resolve(specifier, ".", true) {
- Ok(spec) => spec,
- Err(e) => return (self.id, Err(e)),
- };
+ let spec =
+ match self
+ .loader
+ .resolve(self.op_state.clone(), specifier, ".", true)
+ {
+ Ok(spec) => spec,
+ Err(e) => return (self.id, Err(e)),
+ };
(spec, None)
}
LoadState::ResolveImport(ref specifier, ref referrer) => {
- let spec = match self.loader.resolve(specifier, referrer, false) {
+ let spec = match self.loader.resolve(
+ self.op_state.clone(),
+ specifier,
+ referrer,
+ false,
+ ) {
Ok(spec) => spec,
Err(e) => return (self.id, Err(e)),
};
@@ -243,11 +254,13 @@ impl RecursiveModuleLoad {
fn add_root(&mut self) -> Result<(), AnyError> {
let module_specifier = match self.state {
LoadState::ResolveMain(ref specifier, _) => {
- self.loader.resolve(specifier, ".", true)?
- }
- LoadState::ResolveImport(ref specifier, ref referrer) => {
- self.loader.resolve(specifier, referrer, false)?
+ self
+ .loader
+ .resolve(self.op_state.clone(), specifier, ".", true)?
}
+ LoadState::ResolveImport(ref specifier, ref referrer) => self
+ .loader
+ .resolve(self.op_state.clone(), specifier, referrer, false)?,
_ => unreachable!(),
};
@@ -571,6 +584,7 @@ mod tests {
impl ModuleLoader for MockLoader {
fn resolve(
&self,
+ _op_state: Rc<RefCell<OpState>>,
specifier: &str,
referrer: &str,
_is_root: bool,