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    #[turbo_tasks::function]
8    fn transform(self: Vc<Self>, source: Vc<Box<dyn Source>>) -> Vc<Box<dyn Source>>;
9}
10
11#[turbo_tasks::value(transparent)]
12pub struct SourceTransforms(Vec<ResolvedVc<Box<dyn SourceTransform>>>);
13
14#[turbo_tasks::value_impl]
15impl SourceTransforms {
16    #[turbo_tasks::function]
17    pub fn transform(&self, source: Vc<Box<dyn Source>>) -> Vc<Box<dyn Source>> {
18        self.0
19            .iter()
20            .fold(source, |source, transform| transform.transform(source))
21    }
22}