mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 02:48:24 +00:00
refactor: extract out sloppy imports resolution from CLI crate (#25920)
This is slow progress towards creating a `deno_resolver` crate. Waiting on: * https://github.com/denoland/deno/pull/25918 * https://github.com/denoland/deno/pull/25916
This commit is contained in:
parent
3138478f66
commit
5faf769ac6
28 changed files with 665 additions and 527 deletions
41
resolvers/node/npm.rs
Normal file
41
resolvers/node/npm.rs
Normal file
|
@ -0,0 +1,41 @@
|
|||
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use url::Url;
|
||||
|
||||
use crate::errors;
|
||||
use crate::path::PathClean;
|
||||
use crate::sync::MaybeSend;
|
||||
use crate::sync::MaybeSync;
|
||||
|
||||
#[allow(clippy::disallowed_types)]
|
||||
pub type NpmResolverRc = crate::sync::MaybeArc<dyn NpmResolver>;
|
||||
|
||||
pub trait NpmResolver: std::fmt::Debug + MaybeSend + MaybeSync {
|
||||
/// Resolves an npm package folder path from an npm package referrer.
|
||||
fn resolve_package_folder_from_package(
|
||||
&self,
|
||||
specifier: &str,
|
||||
referrer: &Url,
|
||||
) -> Result<PathBuf, errors::PackageFolderResolveError>;
|
||||
|
||||
fn in_npm_package(&self, specifier: &Url) -> bool;
|
||||
|
||||
fn in_npm_package_at_dir_path(&self, path: &Path) -> bool {
|
||||
let specifier = match Url::from_directory_path(path.to_path_buf().clean()) {
|
||||
Ok(p) => p,
|
||||
Err(_) => return false,
|
||||
};
|
||||
self.in_npm_package(&specifier)
|
||||
}
|
||||
|
||||
fn in_npm_package_at_file_path(&self, path: &Path) -> bool {
|
||||
let specifier = match Url::from_file_path(path.to_path_buf().clean()) {
|
||||
Ok(p) => p,
|
||||
Err(_) => return false,
|
||||
};
|
||||
self.in_npm_package(&specifier)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue