turbopack_ecmascript/references/
node.rs1use anyhow::Result;
2use turbo_tasks::{ResolvedVc, ValueToString, Vc};
3use turbo_tasks_fs::FileSystemPath;
4use turbopack_core::{
5 file_source::FileSource, raw_module::RawModule, reference::ModuleReference,
6 resolve::ModuleResolveResult,
7};
8
9#[turbo_tasks::value]
10#[derive(Hash, Clone, Debug, ValueToString)]
11#[value_to_string("package.json {package_json}")]
12pub struct PackageJsonReference {
13 pub package_json: FileSystemPath,
14}
15
16#[turbo_tasks::value_impl]
17impl PackageJsonReference {
18 #[turbo_tasks::function]
19 pub fn new(package_json: FileSystemPath) -> Vc<Self> {
20 Self::cell(PackageJsonReference { package_json })
21 }
22}
23
24#[turbo_tasks::value_impl]
25impl ModuleReference for PackageJsonReference {
26 #[turbo_tasks::function]
27 async fn resolve_reference(&self) -> Result<Vc<ModuleResolveResult>> {
28 Ok(*ModuleResolveResult::module(ResolvedVc::upcast(
29 RawModule::new(Vc::upcast(FileSource::new(self.package_json.clone())))
30 .to_resolved()
31 .await?,
32 )))
33 }
34}