turbopack/module_options/
match_mode.rs

1use serde::{Deserialize, Serialize};
2use turbo_tasks::{NonLocalValue, trace::TraceRawVcs};
3use turbopack_core::reference_type::ReferenceType;
4
5#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TraceRawVcs, NonLocalValue)]
6pub enum MatchMode {
7    // Match all but internal references.
8    NonInternal,
9    // Only match internal references.
10    Internal,
11    // Match both internal and non-internal references.
12    All,
13}
14
15impl MatchMode {
16    pub fn matches(&self, reference_type: &ReferenceType) -> bool {
17        matches!(
18            (self, reference_type.is_internal()),
19            (MatchMode::All, _) | (MatchMode::NonInternal, false) | (MatchMode::Internal, true)
20        )
21    }
22}