diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-10-02 21:17:39 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-02 21:17:39 +0100 |
commit | cac28b52621975137b86d4fd6efc32cecc10d682 (patch) | |
tree | 6338163b4be9d578dbe046a95c90cea274026b15 /cli/npm/mod.rs | |
parent | bbd4ae1bc12dc6b34d4a455015096b7113a5cec5 (diff) |
feat(byonm): support `deno run npm:<package>` when package is not in package.json (#25981)
Closes https://github.com/denoland/deno/issues/25905
Diffstat (limited to 'cli/npm/mod.rs')
-rw-r--r-- | cli/npm/mod.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs index 1e3c752ae..53baaf77b 100644 --- a/cli/npm/mod.rs +++ b/cli/npm/mod.rs @@ -14,11 +14,13 @@ use deno_core::error::AnyError; use deno_core::serde_json; use deno_npm::registry::NpmPackageInfo; use deno_resolver::npm::ByonmNpmResolver; +use deno_resolver::npm::ByonmResolvePkgFolderFromDenoReqError; use deno_runtime::deno_node::NodeRequireResolver; use deno_runtime::ops::process::NpmProcessStateProvider; use deno_semver::package::PackageNv; use deno_semver::package::PackageReq; use node_resolver::NpmResolver; +use thiserror::Error; use crate::args::npm_registry_url; use crate::file_fetcher::FileFetcher; @@ -29,6 +31,14 @@ pub use self::managed::CliNpmResolverManagedCreateOptions; pub use self::managed::CliNpmResolverManagedSnapshotOption; pub use self::managed::ManagedCliNpmResolver; +#[derive(Debug, Error)] +pub enum ResolvePkgFolderFromDenoReqError { + #[error(transparent)] + Managed(deno_core::error::AnyError), + #[error(transparent)] + Byonm(#[from] ByonmResolvePkgFolderFromDenoReqError), +} + pub enum CliNpmResolverCreateOptions { Managed(CliNpmResolverManagedCreateOptions), Byonm(CliByonmNpmResolverCreateOptions), @@ -93,7 +103,7 @@ pub trait CliNpmResolver: NpmResolver { &self, req: &PackageReq, referrer: &ModuleSpecifier, - ) -> Result<PathBuf, AnyError>; + ) -> Result<PathBuf, ResolvePkgFolderFromDenoReqError>; /// Returns a hash returning the state of the npm resolver /// or `None` if the state currently can't be determined. |