turbopack_node/
execution_context.rs1use 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}