nodejs_resolver/plugin/
prefer_relative.rs

1use crate::{kind::PathKind, log::depth, Context, Info, Resolver, State};
2
3#[derive(Default)]
4pub struct PreferRelativePlugin;
5
6impl PreferRelativePlugin {
7    pub fn apply(resolver: &Resolver, info: Info, context: &mut Context) -> State {
8        if matches!(info.request().kind(), PathKind::Relative) {
9            return State::Resolving(info);
10        }
11
12        if resolver.options.prefer_relative {
13            tracing::debug!("AliasPlugin works({})", depth(&context.depth));
14            let target = format!("./{}", info.request().target());
15            let info = info.clone().with_target(&target);
16            let stats = resolver._resolve(info, context);
17            if stats.is_finished() {
18                return stats;
19            }
20            tracing::debug!("Leaving AliasPlugin({})", depth(&context.depth));
21        }
22        State::Resolving(info)
23    }
24}