[][src]Trait deno_core::ModuleLoader

pub trait ModuleLoader {
    fn resolve(
        &self,
        specifier: &str,
        referrer: &str,
        is_main: bool
    ) -> Result<ModuleSpecifier, ErrBox>;
fn load(
        &self,
        module_specifier: &ModuleSpecifier,
        maybe_referrer: Option<ModuleSpecifier>,
        is_dyn_import: bool
    ) -> Pin<Box<ModuleSourceFuture>>; fn prepare_load(
        &self,
        _load_id: ModuleLoadId,
        _module_specifier: &ModuleSpecifier,
        _maybe_referrer: Option<String>,
        _is_dyn_import: bool
    ) -> Pin<Box<dyn Future<Output = Result<(), ErrBox>>>> { ... } }

Required methods

fn resolve(
    &self,
    specifier: &str,
    referrer: &str,
    is_main: bool
) -> Result<ModuleSpecifier, ErrBox>

Returns an absolute URL. When implementing an spec-complaint VM, this should be exactly the algorithm described here: https://html.spec.whatwg.org/multipage/webappapis.html#resolve-a-module-specifier

is_main can be used to resolve from current working directory or apply import map for child imports.

fn load(
    &self,
    module_specifier: &ModuleSpecifier,
    maybe_referrer: Option<ModuleSpecifier>,
    is_dyn_import: bool
) -> Pin<Box<ModuleSourceFuture>>

Given ModuleSpecifier, load its source code.

is_dyn_import can be used to check permissions or deny dynamic imports altogether.

Loading content...

Provided methods

fn prepare_load(
    &self,
    _load_id: ModuleLoadId,
    _module_specifier: &ModuleSpecifier,
    _maybe_referrer: Option<String>,
    _is_dyn_import: bool
) -> Pin<Box<dyn Future<Output = Result<(), ErrBox>>>>

This hook can be used by implementors to do some preparation work before starting loading of modules.

For example implementor might download multiple modules in parallel and transpile them to final JS sources before yielding control back to Isolate.

It's not required to implement this method.

Loading content...

Implementors

Loading content...