2025-01-01 04:12:39 +09:00
|
|
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
2022-09-22 11:17:02 -04:00
|
|
|
|
2024-09-24 12:23:57 -07:00
|
|
|
pub mod bin_entries;
|
|
|
|
pub mod lifecycle_scripts;
|
|
|
|
|
2022-09-13 11:59:01 -04:00
|
|
|
use std::path::Path;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
2023-02-22 14:15:25 -05:00
|
|
|
use async_trait::async_trait;
|
2022-09-13 11:59:01 -04:00
|
|
|
use deno_ast::ModuleSpecifier;
|
|
|
|
use deno_core::error::AnyError;
|
2023-07-01 21:07:57 -04:00
|
|
|
use deno_npm::NpmPackageCacheFolderId;
|
2023-04-06 18:46:44 -04:00
|
|
|
use deno_npm::NpmPackageId;
|
2024-07-25 19:08:14 -04:00
|
|
|
use node_resolver::errors::PackageFolderResolveError;
|
2022-09-13 11:59:01 -04:00
|
|
|
|
2024-12-30 12:38:20 -05:00
|
|
|
use super::super::PackageCaching;
|
2022-09-13 11:59:01 -04:00
|
|
|
|
2023-02-22 14:15:25 -05:00
|
|
|
/// Part of the resolution that interacts with the file system.
|
2024-06-06 18:37:41 -04:00
|
|
|
#[async_trait(?Send)]
|
2023-02-22 14:15:25 -05:00
|
|
|
pub trait NpmPackageFsResolver: Send + Sync {
|
2023-03-12 23:32:59 -04:00
|
|
|
/// The local node_modules folder if it is applicable to the implementation.
|
2024-09-30 09:33:32 -04:00
|
|
|
fn node_modules_path(&self) -> Option<&Path>;
|
2023-03-12 23:32:59 -04:00
|
|
|
|
2024-07-09 12:15:03 -04:00
|
|
|
fn maybe_package_folder(&self, package_id: &NpmPackageId) -> Option<PathBuf>;
|
|
|
|
|
2023-04-14 16:22:33 -04:00
|
|
|
fn package_folder(
|
2022-09-13 11:59:01 -04:00
|
|
|
&self,
|
2023-04-14 16:22:33 -04:00
|
|
|
package_id: &NpmPackageId,
|
2024-07-09 12:15:03 -04:00
|
|
|
) -> Result<PathBuf, AnyError> {
|
|
|
|
self.maybe_package_folder(package_id).ok_or_else(|| {
|
|
|
|
deno_core::anyhow::anyhow!(
|
|
|
|
"Package folder not found for '{}'",
|
|
|
|
package_id.as_serialized()
|
|
|
|
)
|
|
|
|
})
|
|
|
|
}
|
2023-09-29 09:26:25 -04:00
|
|
|
|
2022-09-22 11:17:02 -04:00
|
|
|
fn resolve_package_folder_from_package(
|
2022-09-13 11:59:01 -04:00
|
|
|
&self,
|
|
|
|
name: &str,
|
|
|
|
referrer: &ModuleSpecifier,
|
2024-07-09 12:15:03 -04:00
|
|
|
) -> Result<PathBuf, PackageFolderResolveError>;
|
2022-09-13 11:59:01 -04:00
|
|
|
|
2023-07-01 21:07:57 -04:00
|
|
|
fn resolve_package_cache_folder_id_from_specifier(
|
|
|
|
&self,
|
|
|
|
specifier: &ModuleSpecifier,
|
2023-07-17 14:00:44 -04:00
|
|
|
) -> Result<Option<NpmPackageCacheFolderId>, AnyError>;
|
2023-07-01 21:07:57 -04:00
|
|
|
|
2024-12-10 18:24:23 -08:00
|
|
|
async fn cache_packages<'a>(
|
|
|
|
&self,
|
|
|
|
caching: PackageCaching<'a>,
|
|
|
|
) -> Result<(), AnyError>;
|
2022-09-13 11:59:01 -04:00
|
|
|
}
|