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},
7};
8
9#[turbo_tasks::value]
12pub struct VirtualOutputAsset {
13 pub path: ResolvedVc<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: ResolvedVc<FileSystemPath>, content: ResolvedVc<AssetContent>) -> Vc<Self> {
22 VirtualOutputAsset {
23 path,
24 content,
25 references: OutputAssets::empty_resolved(),
26 }
27 .cell()
28 }
29
30 #[turbo_tasks::function]
31 pub fn new_with_references(
32 path: ResolvedVc<FileSystemPath>,
33 content: ResolvedVc<AssetContent>,
34 references: ResolvedVc<OutputAssets>,
35 ) -> Vc<Self> {
36 VirtualOutputAsset {
37 path,
38 content,
39 references,
40 }
41 .cell()
42 }
43}
44
45#[turbo_tasks::value_impl]
46impl OutputAsset for VirtualOutputAsset {
47 #[turbo_tasks::function]
48 fn path(&self) -> Vc<FileSystemPath> {
49 *self.path
50 }
51
52 #[turbo_tasks::function]
53 fn references(&self) -> Vc<OutputAssets> {
54 *self.references
55 }
56}
57
58#[turbo_tasks::value_impl]
59impl Asset for VirtualOutputAsset {
60 #[turbo_tasks::function]
61 fn content(&self) -> Vc<AssetContent> {
62 *self.content
63 }
64}