Struct deno_graph::ModuleGraph
source · pub struct ModuleGraph {
pub roots: Vec<ModuleSpecifier>,
pub imports: IndexMap<ModuleSpecifier, GraphImport>,
pub redirects: BTreeMap<ModuleSpecifier, ModuleSpecifier>,
pub npm_packages: Vec<PackageNv>,
pub has_node_specifier: bool,
pub packages: PackageSpecifiers,
/* private fields */
}
Expand description
The structure which represents a module graph, which can be serialized as well as “printed”. The roots of the graph represent the “starting” point which can be located in the module “slots” in the graph. The graph also contains any redirects where the requested module specifier was redirected to another module specifier when being loaded.
Fields§
§roots: Vec<ModuleSpecifier>
§imports: IndexMap<ModuleSpecifier, GraphImport>
§redirects: BTreeMap<ModuleSpecifier, ModuleSpecifier>
§npm_packages: Vec<PackageNv>
§has_node_specifier: bool
§packages: PackageSpecifiers
Implementations§
source§impl ModuleGraph
impl ModuleGraph
pub fn new(graph_kind: GraphKind) -> Self
pub fn graph_kind(&self) -> GraphKind
pub async fn build<'a>( &mut self, roots: Vec<ModuleSpecifier>, loader: &dyn Loader, options: BuildOptions<'a> ) -> Vec<BuildDiagnostic>
pub fn build_fast_check_type_graph( &mut self, options: BuildFastCheckTypeGraphOptions<'_> )
sourcepub fn segment(&self, roots: &[ModuleSpecifier]) -> Self
pub fn segment(&self, roots: &[ModuleSpecifier]) -> Self
Creates a new cloned module graph from the provided roots.
sourcepub fn walk<'a>(
&'a self,
roots: &'a [ModuleSpecifier],
options: WalkOptions
) -> ModuleEntryIterator<'a>
pub fn walk<'a>( &'a self, roots: &'a [ModuleSpecifier], options: WalkOptions ) -> ModuleEntryIterator<'a>
Iterates over all the module entries in the module graph searching from the provided roots.
sourcepub fn contains(&self, specifier: &ModuleSpecifier) -> bool
pub fn contains(&self, specifier: &ModuleSpecifier) -> bool
Returns true
if the specifier resolves to a module within a graph,
otherwise returns false
.
sourcepub fn module_errors(&self) -> impl Iterator<Item = &ModuleError>
pub fn module_errors(&self) -> impl Iterator<Item = &ModuleError>
Returns any module errors found in the graph.
NOTE: This does not return any resolution errors.
sourcepub fn get(&self, specifier: &ModuleSpecifier) -> Option<&Module>
pub fn get(&self, specifier: &ModuleSpecifier) -> Option<&Module>
Get a module from the module graph, returning None
if the module is not
part of the graph, or if when loading the module it errored. If any module
resolution error is needed, then use the try_get()
method which will
return any resolution error as the error in the result.
sourcepub fn modules(&self) -> impl Iterator<Item = &Module>
pub fn modules(&self) -> impl Iterator<Item = &Module>
Return a vector of references to module objects in the graph. Only modules
that were fully resolved are present, as “errors” are omitted. If
you need to know what errors are in the graph, walk the graph via .walk
or if you just need to check if everything is “ok” with the graph, use the
.valid()
method.
sourcepub fn resolve(&self, specifier: &ModuleSpecifier) -> ModuleSpecifier
pub fn resolve(&self, specifier: &ModuleSpecifier) -> ModuleSpecifier
Resolve a specifier from the module graph following any possible redirects returning the “final” module.
sourcepub fn resolve_dependency(
&self,
specifier: &str,
referrer: &ModuleSpecifier,
prefer_types: bool
) -> Option<ModuleSpecifier>
pub fn resolve_dependency( &self, specifier: &str, referrer: &ModuleSpecifier, prefer_types: bool ) -> Option<ModuleSpecifier>
Resolve a dependency of a referring module providing the string specifier of the dependency and returning an optional fully qualified module specifier.
The prefer_types
flags indicates if a type dependency is preferred over
a code dependency. If true
, a type dependency will be returned in favor
of a code dependency. If false
a code dependency will be returned in
favor of a type dependency. The value should be set to true
when
resolving specifiers for type checking, or otherwise false
.
pub fn resolve_dependency_from_module( &self, specifier: &str, referring_module: &Module, prefer_types: bool ) -> Option<ModuleSpecifier>
pub fn resolve_dependency_from_dep( &self, dependency: &Dependency, prefer_types: bool ) -> Option<ModuleSpecifier>
sourcepub fn specifiers(
&self
) -> impl Iterator<Item = (&ModuleSpecifier, Result<&Module, &ModuleError>)>
pub fn specifiers( &self ) -> impl Iterator<Item = (&ModuleSpecifier, Result<&Module, &ModuleError>)>
Return the entries of the specifiers in the graph, where the first value is a module specifier and the second value is a result that contains a tuple of the module specifier, module kind, and media type, or the module graph error.
sourcepub fn try_get(
&self,
specifier: &ModuleSpecifier
) -> Result<Option<&Module>, &ModuleError>
pub fn try_get( &self, specifier: &ModuleSpecifier ) -> Result<Option<&Module>, &ModuleError>
Retrieve a module from the module graph. If the module identified as a
dependency of the graph, but resolving or loading that module resulted in
an error, the error will be returned as the Err
of the result. If the
module is not part of the graph, or the module is missing from the graph,
the result will be Ok
with the option of the module.
sourcepub fn try_get_prefer_types(
&self,
specifier: &ModuleSpecifier
) -> Result<Option<&Module>, &ModuleError>
pub fn try_get_prefer_types( &self, specifier: &ModuleSpecifier ) -> Result<Option<&Module>, &ModuleError>
Similar to try_get
, but will prefer resolving to the types dependency if
the module has one.
sourcepub fn valid(&self) -> Result<(), ModuleGraphError>
pub fn valid(&self) -> Result<(), ModuleGraphError>
Walk the graph from the root, checking to see if there are any module graph errors on non-type only, non-dynamic imports. The first error is returned as as error result, otherwise ok if there are no errors.
sourcepub fn specifiers_count(&self) -> usize
pub fn specifiers_count(&self) -> usize
Gets the approximate number of specifiers in the graph.
This is useful for pre-allocating actions that will take place on the graph.
Trait Implementations§
source§impl Clone for ModuleGraph
impl Clone for ModuleGraph
source§fn clone(&self) -> ModuleGraph
fn clone(&self) -> ModuleGraph
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ModuleGraph
impl Debug for ModuleGraph
Auto Trait Implementations§
impl Freeze for ModuleGraph
impl RefUnwindSafe for ModuleGraph
impl Send for ModuleGraph
impl Sync for ModuleGraph
impl Unpin for ModuleGraph
impl UnwindSafe for ModuleGraph
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.