diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-01-10 14:35:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-10 14:35:44 +0100 |
commit | 636352e0ca1e611c7673f2ab68538e1ddb2dc5b7 (patch) | |
tree | c250c7a74917cef683999e06283ea9f7182f372c /core/runtime.rs | |
parent | 45768f0e832e54d61ddb5a62d62239aef0e597b5 (diff) |
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.
Diffstat (limited to 'core/runtime.rs')
-rw-r--r-- | core/runtime.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/core/runtime.rs b/core/runtime.rs index baa7de1a1..6a6bce329 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -2038,6 +2038,7 @@ impl JsRuntime { true, specifier.as_str(), code.as_bytes(), + false, ) .map_err(|e| match e { ModuleError::Exception(exception) => { @@ -2097,6 +2098,7 @@ impl JsRuntime { false, specifier.as_str(), code.as_bytes(), + false, ) .map_err(|e| match e { ModuleError::Exception(exception) => { @@ -2492,6 +2494,7 @@ pub mod tests { use crate::modules::ModuleSource; use crate::modules::ModuleSourceFuture; use crate::modules::ModuleType; + use crate::modules::ResolutionKind; use crate::ZeroCopyBuf; use deno_ops::op; use futures::future::lazy; @@ -3132,7 +3135,7 @@ pub mod tests { &self, specifier: &str, referrer: &str, - _is_main: bool, + _kind: ResolutionKind, ) -> Result<ModuleSpecifier, Error> { assert_eq!(specifier, "file:///main.js"); assert_eq!(referrer, "."); @@ -3302,7 +3305,7 @@ pub mod tests { &self, specifier: &str, referrer: &str, - _is_main: bool, + _kind: ResolutionKind, ) -> Result<ModuleSpecifier, Error> { assert_eq!(specifier, "file:///main.js"); assert_eq!(referrer, "."); @@ -3869,7 +3872,7 @@ Deno.core.ops.op_async_serialize_object_with_numbers_as_keys({ &self, specifier: &str, referrer: &str, - _is_main: bool, + _kind: ResolutionKind, ) -> Result<ModuleSpecifier, Error> { assert_eq!(specifier, "file:///main.js"); assert_eq!(referrer, "."); @@ -4001,7 +4004,7 @@ Deno.core.ops.op_async_serialize_object_with_numbers_as_keys({ &self, specifier: &str, referrer: &str, - _is_main: bool, + _kind: ResolutionKind, ) -> Result<ModuleSpecifier, Error> { assert_eq!(specifier, "file:///main.js"); assert_eq!(referrer, "."); |