summaryrefslogtreecommitdiff
path: root/core/runtime.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-01-10 14:35:44 +0100
committerGitHub <noreply@github.com>2023-01-10 14:35:44 +0100
commit636352e0ca1e611c7673f2ab68538e1ddb2dc5b7 (patch)
treec250c7a74917cef683999e06283ea9f7182f372c /core/runtime.rs
parent45768f0e832e54d61ddb5a62d62239aef0e597b5 (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.rs11
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, ".");