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