turbopack_core/
source_transform.rs

1use turbo_tasks::{ResolvedVc, Vc};
2
3use crate::source::Source;
4
5#[turbo_tasks::value_trait]
6pub trait SourceTransform {
7    fn transform(self: Vc<Self>, source: Vc<Box<dyn Source>>) -> Vc<Box<dyn Source>>;
8}
9
10#[turbo_tasks::value(transparent)]
11pub struct SourceTransforms(Vec<ResolvedVc<Box<dyn SourceTransform>>>);
12
13#[turbo_tasks::value_impl]
14impl SourceTransforms {
15    #[turbo_tasks::function]
16    pub fn transform(&self, source: Vc<Box<dyn Source>>) -> Vc<Box<dyn Source>> {
17        self.0
18            .iter()
19            .fold(source, |source, transform| transform.transform(source))
20    }
21}