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