From 636352e0ca1e611c7673f2ab68538e1ddb2dc5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 10 Jan 2023 14:35:44 +0100 Subject: fix(npm): allow to read package.json if permissions are granted (#17209) This commit changes signature of "deno_core::ModuleLoader::resolve" to pass an enum indicating whether or not we're resolving a specifier for dynamic import. Additionally "CliModuleLoader" was changes to store both "parent permissions" (or "root permissions") as well as "dynamic permissions" that allow to check for permissions in top-level module load an dynamic imports. Then all code paths that have anything to do with Node/npm compat are now checking for permissions which are passed from module loader instance associated with given worker. --- cli/npm/resolvers/local.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'cli/npm/resolvers/local.rs') diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs index 04539e462..b702d3bb3 100644 --- a/cli/npm/resolvers/local.rs +++ b/cli/npm/resolvers/local.rs @@ -19,6 +19,7 @@ use deno_core::futures::future::BoxFuture; use deno_core::futures::FutureExt; use deno_core::url::Url; use deno_runtime::deno_core::futures; +use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::PackageJson; use tokio::task::JoinHandle; @@ -245,8 +246,16 @@ impl InnerNpmPackageResolver for LocalNpmPackageResolver { .boxed() } - fn ensure_read_permission(&self, path: &Path) -> Result<(), AnyError> { - ensure_registry_read_permission(&self.root_node_modules_path, path) + fn ensure_read_permission( + &self, + permissions: &mut dyn NodePermissions, + path: &Path, + ) -> Result<(), AnyError> { + ensure_registry_read_permission( + permissions, + &self.root_node_modules_path, + path, + ) } fn snapshot(&self) -> NpmResolutionSnapshot { -- cgit v1.2.3