Skip to main content

ResolverImpl

Struct ResolverImpl 

Source
pub struct ResolverImpl { /* private fields */ }
Expand description

Non-generic core of the resolver holding the heavy resolution algorithm.

The filesystem is type-erased to Arc<dyn FileSystem> here so that the resolver algorithm compiles exactly once, regardless of the concrete Fs type used by ResolverGeneric. All public resolution methods live on this struct and are reachable through ResolverGeneric’s Deref implementation.

Implementations§

Source§

impl ResolverImpl

Source

pub fn resolve_dts<P: AsRef<Path>>( &self, containing_file: P, specifier: &str, ) -> Result<Resolution, ResolveError>

Resolve a module specifier for TypeScript declaration files.

Matches ts.resolveModuleName with moduleResolution: "bundler".

containing_file is the absolute path of the file containing the import. specifier is the module specifier string.

The resolver uses the existing ResolveOptions for:

  • condition_names (used for exports resolution; "types" is always added)
  • tsconfig (for paths mapping)
  • symlinks (for realpath resolution)
§Errors
Source§

impl ResolverImpl

Source

pub fn find_tsconfig<P: AsRef<Path>>( &self, path: P, ) -> Result<Option<Arc<TsConfig>>, ResolveError>

Finds the tsconfig to which this path belongs.

If the path is inside node_modules, this function always returns None.

Algorithm:

  1. Search for tsconfig.json in ancestor directories.
  2. If the path is not included in this tsconfig.json through the files, include, or exclude fields: 2.1. Search through project references until a referenced tsconfig includes this file. 2.2. If none of the references include this path, return the tsconfig.json found in step 1.
§Errors
  • Returns an error if the tsconfig is invalid, including any extended or referenced tsconfigs.
Source

pub fn resolve_tsconfig<P: AsRef<Path>>( &self, path: P, ) -> Result<Arc<TsConfig>, ResolveError>

Resolve tsconfig.

The path can be:

  • Path to a file with .json extension.
  • Path to a file without .json extension, .json will be appended to filename.
  • Path to a directory, where the filename is defaulted to tsconfig.json
§Errors
Source§

impl ResolverImpl

Source

pub const fn options(&self) -> &ResolveOptions

Returns the options.

Source

pub fn clear_cache(&self)

Clear the underlying cache.

Warning: The caller must ensure that there’re no ongoing resolution operations when calling this method. Otherwise, it may cause those operations to return an incorrect result.

Source

pub fn resolve<P: AsRef<Path>>( &self, directory: P, specifier: &str, ) -> Result<Resolution, ResolveError>

Resolve specifier at an absolute path to a directory.

A specifier is the string passed to require or import, i.e. require("specifier") or import "specifier".

directory must be an absolute path to a directory where the specifier is resolved against. For CommonJS modules, it is the __dirname variable that contains the absolute path to the folder containing current module. For ECMAScript modules, it is the value of import.meta.url.

NOTE: TsconfigDiscovery::Auto does not work for this API, use ResolverImpl::resolve_file instead.

§Errors
Source

pub fn resolve_file<P: AsRef<Path>>( &self, file: P, specifier: &str, ) -> Result<Resolution, ResolveError>

Resolve specifier for an absolute path to a file.

NOTE: TsconfigDiscovery::Auto only work for this API.

§Errors
  • See ResolveError
  • Returns an invalid input error if the provided path has no parent.
Source

pub fn resolve_with_context<P: AsRef<Path>>( &self, directory: P, specifier: &str, tsconfig: Option<&TsConfig>, resolve_context: &mut ResolveContext, ) -> Result<Resolution, ResolveError>

Resolve specifier at absolute path with ResolveContext

§Errors

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more