turbopack_ecmascript_runtime/
nodejs_runtime.rs1use anyhow::Result;
2use turbo_tasks::{ResolvedVc, Vc};
3use turbopack_core::{
4 code_builder::{Code, CodeBuilder},
5 environment::Environment,
6};
7
8use crate::{asset_context::get_runtime_asset_context, embed_js::embed_static_code};
9
10#[turbo_tasks::function]
12pub async fn get_nodejs_runtime_code(
13 environment: ResolvedVc<Environment>,
14 generate_source_map: bool,
15) -> Result<Vc<Code>> {
16 let asset_context = get_runtime_asset_context(environment).await?;
17
18 let shared_runtime_utils_code = embed_static_code(
19 asset_context,
20 "shared/runtime-utils.ts".into(),
21 generate_source_map,
22 );
23 let shared_base_external_utils_code = embed_static_code(
24 asset_context,
25 "shared-node/base-externals-utils.ts".into(),
26 generate_source_map,
27 );
28 let shared_node_external_utils_code = embed_static_code(
29 asset_context,
30 "shared-node/node-externals-utils.ts".into(),
31 generate_source_map,
32 );
33 let shared_node_wasm_utils_code = embed_static_code(
34 asset_context,
35 "shared-node/node-wasm-utils.ts".into(),
36 generate_source_map,
37 );
38 let runtime_code = embed_static_code(
39 asset_context,
40 "nodejs/runtime.ts".into(),
41 generate_source_map,
42 );
43
44 let mut code = CodeBuilder::default();
45 code.push_code(&*shared_runtime_utils_code.await?);
46 code.push_code(&*shared_base_external_utils_code.await?);
47 code.push_code(&*shared_node_external_utils_code.await?);
48 code.push_code(&*shared_node_wasm_utils_code.await?);
49 code.push_code(&*runtime_code.await?);
50
51 Ok(Code::cell(code.build()))
52}