turbopack_test_utils/
noop_asset_context.rs

1use anyhow::Result;
2use turbo_rcstr::{RcStr, rcstr};
3use turbo_tasks::{ResolvedVc, Vc};
4use turbo_tasks_fs::{FileSystemPath, glob::Glob};
5use turbopack_core::{
6    compile_time_info::CompileTimeInfo,
7    context::{AssetContext, ProcessResult},
8    ident::Layer,
9    reference_type::ReferenceType,
10    resolve::{ModuleResolveResult, ResolveResult, options::ResolveOptions, parse::Request},
11    source::Source,
12};
13
14#[turbo_tasks::value(shared)]
15pub struct NoopAssetContext {
16    pub compile_time_info: ResolvedVc<CompileTimeInfo>,
17    pub layer: Layer,
18}
19
20#[turbo_tasks::value_impl]
21impl AssetContext for NoopAssetContext {
22    #[turbo_tasks::function]
23    fn compile_time_info(&self) -> Vc<CompileTimeInfo> {
24        *self.compile_time_info
25    }
26
27    fn layer(&self) -> Layer {
28        self.layer.clone()
29    }
30
31    #[turbo_tasks::function]
32    async fn resolve_options(
33        self: Vc<Self>,
34        _origin_path: FileSystemPath,
35        _reference_type: ReferenceType,
36    ) -> Result<Vc<ResolveOptions>> {
37        Ok(ResolveOptions::default().cell())
38    }
39
40    #[turbo_tasks::function]
41    async fn resolve_asset(
42        self: Vc<Self>,
43        _origin_path: FileSystemPath,
44        _request: Vc<Request>,
45        _resolve_options: Vc<ResolveOptions>,
46        _reference_type: ReferenceType,
47    ) -> Result<Vc<ModuleResolveResult>> {
48        Ok(*ModuleResolveResult::unresolvable())
49    }
50
51    #[turbo_tasks::function]
52    async fn process_resolve_result(
53        self: Vc<Self>,
54        _result: Vc<ResolveResult>,
55        _reference_type: ReferenceType,
56    ) -> Result<Vc<ModuleResolveResult>> {
57        Ok(*ModuleResolveResult::unresolvable())
58    }
59
60    #[turbo_tasks::function]
61    async fn process(
62        self: Vc<Self>,
63        _asset: ResolvedVc<Box<dyn Source>>,
64        _reference_type: ReferenceType,
65    ) -> Result<Vc<ProcessResult>> {
66        Ok(ProcessResult::Ignore.cell())
67    }
68
69    #[turbo_tasks::function]
70    async fn with_transition(
71        self: Vc<Self>,
72        _transition: RcStr,
73    ) -> Result<Vc<Box<dyn AssetContext>>> {
74        Ok(Vc::upcast(self))
75    }
76
77    #[turbo_tasks::function]
78    async fn side_effect_free_packages(&self) -> Result<Vc<Glob>> {
79        Ok(Glob::new(rcstr!(""), Default::default()))
80    }
81}