turbopack_ecmascript_runtime/
nodejs_runtime.rs

1use 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/// Returns the code for the Node.js production ECMAScript runtime.
11#[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}