turbopack_node/
node_entry.rs1use anyhow::Result;
2use turbo_tasks::{ResolvedVc, Vc};
3use turbo_tasks_fs::FileSystemPath;
4use turbopack_core::chunk::{ChunkingContext, EvaluatableAsset, EvaluatableAssets};
5use turbopack_dev_server::source::ContentSourceData;
6
7#[turbo_tasks::value(shared)]
8pub struct NodeRenderingEntry {
9 pub runtime_entries: ResolvedVc<EvaluatableAssets>,
10 pub module: ResolvedVc<Box<dyn EvaluatableAsset>>,
11 pub chunking_context: ResolvedVc<Box<dyn ChunkingContext>>,
12 pub intermediate_output_path: FileSystemPath,
13 pub output_root: FileSystemPath,
14 pub project_dir: FileSystemPath,
15}
16
17#[turbo_tasks::value(transparent)]
18pub struct NodeRenderingEntries(Vec<ResolvedVc<NodeRenderingEntry>>);
19
20#[turbo_tasks::value_trait]
22pub trait NodeEntry {
23 #[turbo_tasks::function]
24 fn entry(self: Vc<Self>, data: ContentSourceData) -> Vc<NodeRenderingEntry>;
25
26 #[turbo_tasks::function]
27 async fn entries(self: Vc<Self>) -> Result<Vc<NodeRenderingEntries>> {
28 Ok(Vc::cell(vec![
29 self.entry(Default::default()).to_resolved().await?,
30 ]))
31 }
32}