Skip to main content

turbopack_node/
execution_context.rs

1use turbo_tasks::{ResolvedVc, Vc};
2use turbo_tasks_env::ProcessEnv;
3use turbo_tasks_fs::FileSystemPath;
4use turbopack_core::chunk::ChunkingContext;
5
6use crate::backend::NodeBackend;
7
8#[turbo_tasks::value]
9pub struct ExecutionContext {
10    pub project_path: FileSystemPath,
11    pub chunking_context: ResolvedVc<Box<dyn ChunkingContext>>,
12    pub env: ResolvedVc<Box<dyn ProcessEnv>>,
13    pub node_backend: ResolvedVc<Box<dyn NodeBackend>>,
14}
15
16#[turbo_tasks::value_impl]
17impl ExecutionContext {
18    #[turbo_tasks::function]
19    pub fn new(
20        project_path: FileSystemPath,
21        chunking_context: ResolvedVc<Box<dyn ChunkingContext>>,
22        env: ResolvedVc<Box<dyn ProcessEnv>>,
23        node_backend: ResolvedVc<Box<dyn NodeBackend>>,
24    ) -> Vc<Self> {
25        ExecutionContext {
26            project_path,
27            chunking_context,
28            env,
29            node_backend,
30        }
31        .cell()
32    }
33
34    #[turbo_tasks::function]
35    pub fn project_path(&self) -> Vc<FileSystemPath> {
36        self.project_path.clone().cell()
37    }
38
39    #[turbo_tasks::function]
40    pub fn chunking_context(&self) -> Vc<Box<dyn ChunkingContext>> {
41        *self.chunking_context
42    }
43
44    #[turbo_tasks::function]
45    pub fn env(&self) -> Vc<Box<dyn ProcessEnv>> {
46        *self.env
47    }
48
49    #[turbo_tasks::function]
50    pub fn node_backend(&self) -> Vc<Box<dyn NodeBackend>> {
51        *self.node_backend
52    }
53}