turbopack/
runtime_asset_context.rs1use turbo_rcstr::rcstr;
2use turbo_tasks::{ResolvedVc, Result, Vc};
3use turbopack_core::{
4 compile_time_info::CompileTimeInfo, context::AssetContext, environment::Environment,
5 ident::Layer,
6};
7use turbopack_ecmascript::TreeShakingMode;
8
9use crate::{
10 ModuleAssetContext,
11 module_options::{EcmascriptOptionsContext, ModuleOptionsContext, TypescriptTransformOptions},
12};
13
14#[turbo_tasks::function]
17pub async fn get_runtime_asset_context(
18 environment: ResolvedVc<Environment>,
19) -> Result<Vc<Box<dyn AssetContext>>> {
20 let module_options_context = ModuleOptionsContext {
21 ecmascript: EcmascriptOptionsContext {
22 enable_typescript_transform: Some(
23 TypescriptTransformOptions::default().resolved_cell(),
24 ),
25 inline_helpers: true,
26 ..Default::default()
27 },
28 environment: Some(environment),
29 tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
30 ..Default::default()
31 }
32 .cell();
33 let compile_time_info = CompileTimeInfo::builder(environment).cell().await?;
34
35 let asset_context: Vc<Box<dyn AssetContext>> = Vc::upcast(ModuleAssetContext::new(
36 Default::default(),
37 compile_time_info,
38 module_options_context,
39 Vc::default(),
40 Layer::new(rcstr!("runtime")),
41 ));
42
43 Ok(asset_context)
44}