turbopack_core/
source_transform.rs1use 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}