turbopack_core/
proxied_asset.rs1use turbo_tasks::{ResolvedVc, Vc};
2use turbo_tasks_fs::FileSystemPath;
3
4use crate::{
5 asset::{Asset, AssetContent},
6 output::{OutputAsset, OutputAssetsReference, OutputAssetsWithReferenced},
7 version::VersionedContent,
8};
9
10#[turbo_tasks::value]
16pub struct ProxiedAsset {
17 asset: ResolvedVc<Box<dyn OutputAsset>>,
18 path: FileSystemPath,
19}
20
21#[turbo_tasks::value_impl]
22impl ProxiedAsset {
23 #[turbo_tasks::function]
25 pub fn new(asset: ResolvedVc<Box<dyn OutputAsset>>, path: FileSystemPath) -> Vc<Self> {
26 ProxiedAsset { asset, path }.cell()
27 }
28}
29
30#[turbo_tasks::value_impl]
31impl OutputAssetsReference for ProxiedAsset {
32 #[turbo_tasks::function]
33 fn references(&self) -> Vc<OutputAssetsWithReferenced> {
34 self.asset.references()
35 }
36}
37
38#[turbo_tasks::value_impl]
39impl OutputAsset for ProxiedAsset {
40 #[turbo_tasks::function]
41 fn path(&self) -> Vc<FileSystemPath> {
42 self.path.clone().cell()
43 }
44}
45
46#[turbo_tasks::value_impl]
47impl Asset for ProxiedAsset {
48 #[turbo_tasks::function]
49 fn content(&self) -> Vc<AssetContent> {
50 self.asset.content()
51 }
52
53 #[turbo_tasks::function]
54 fn versioned_content(&self) -> Vc<Box<dyn VersionedContent>> {
55 self.asset.versioned_content()
56 }
57}