turbopack_node/
node_entry.rs1use anyhow::Result;
2use turbo_tasks::{ResolvedVc, Value, 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: ResolvedVc<FileSystemPath>,
13 pub output_root: ResolvedVc<FileSystemPath>,
14 pub project_dir: ResolvedVc<FileSystemPath>,
15}
16
17#[turbo_tasks::value(transparent)]
18pub struct NodeRenderingEntries(Vec<ResolvedVc<NodeRenderingEntry>>);
19
20#[turbo_tasks::value_trait]
22pub trait NodeEntry {
23 fn entry(self: Vc<Self>, data: Value<ContentSourceData>) -> Vc<NodeRenderingEntry>;
24 async fn entries(self: Vc<Self>) -> Result<Vc<NodeRenderingEntries>> {
25 Ok(Vc::cell(vec![
26 self.entry(Value::new(Default::default()))
27 .to_resolved()
28 .await?,
29 ]))
30 }
31}