Skip to main content

turbopack_test_utils/
noop_asset_context.rs

1use anyhow::Result;
2use turbo_rcstr::RcStr;
3use turbo_tasks::{ResolvedVc, Vc};
4use turbo_tasks_fs::FileSystemPath;
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    ) -> Result<Vc<ResolveOptions>> {
36        Ok(ResolveOptions::default().cell())
37    }
38
39    #[turbo_tasks::function]
40    async fn resolve_asset(
41        self: Vc<Self>,
42        _origin_path: FileSystemPath,
43        _request: Vc<Request>,
44        _resolve_options: Vc<ResolveOptions>,
45        _reference_type: ReferenceType,
46    ) -> Result<Vc<ModuleResolveResult>> {
47        Ok(*ModuleResolveResult::unresolvable())
48    }
49
50    #[turbo_tasks::function]
51    async fn process_resolve_result(
52        self: Vc<Self>,
53        _result: Vc<ResolveResult>,
54        _reference_type: ReferenceType,
55    ) -> Result<Vc<ModuleResolveResult>> {
56        Ok(*ModuleResolveResult::unresolvable())
57    }
58
59    #[turbo_tasks::function]
60    async fn process(
61        self: Vc<Self>,
62        _asset: ResolvedVc<Box<dyn Source>>,
63        _reference_type: ReferenceType,
64    ) -> Result<Vc<ProcessResult>> {
65        Ok(ProcessResult::Ignore.cell())
66    }
67
68    #[turbo_tasks::function]
69    async fn with_transition(
70        self: Vc<Self>,
71        _transition: RcStr,
72    ) -> Result<Vc<Box<dyn AssetContext>>> {
73        Ok(Vc::upcast(self))
74    }
75}