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