diff options
author | Luca Casonato <lucacasonato@yahoo.com> | 2021-05-17 09:44:38 +0200 |
---|---|---|
committer | Luca Casonato <lucacasonato@yahoo.com> | 2021-05-17 09:45:54 +0200 |
commit | 5151afa123a9635d2f4de9555f8843460b284a11 (patch) | |
tree | 7c4686c3f5562dc27d8b863897225236aeb97b14 /cli/specifier_handler.rs | |
parent | 910935c07125e4710830be0df32a16c3ef278ba6 (diff) |
fix: static import permissions in dynamic imports
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/specifier_handler.rs')
-rw-r--r-- | cli/specifier_handler.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/cli/specifier_handler.rs b/cli/specifier_handler.rs index 066ed87f4..900b918ab 100644 --- a/cli/specifier_handler.rs +++ b/cli/specifier_handler.rs @@ -222,9 +222,10 @@ impl CompiledFileMetadata { pub struct FetchHandler { /// An instance of disk where generated (emitted) files are stored. disk_cache: DiskCache, - /// The set of current runtime permissions which need to be applied to - /// dynamic imports. - runtime_permissions: Permissions, + /// The set permissions which are used for root modules (static imports). + root_permissions: Permissions, + /// The set of permissions which are used for dynamic imports. + dynamic_permissions: Permissions, /// A clone of the `program_state` file fetcher. file_fetcher: FileFetcher, } @@ -232,7 +233,8 @@ pub struct FetchHandler { impl FetchHandler { pub fn new( program_state: &Arc<ProgramState>, - runtime_permissions: Permissions, + root_permissions: Permissions, + dynamic_permissions: Permissions, ) -> Result<Self, AnyError> { let custom_root = env::var("DENO_DIR").map(String::into).ok(); let deno_dir = DenoDir::new(custom_root)?; @@ -241,7 +243,8 @@ impl FetchHandler { Ok(FetchHandler { disk_cache, - runtime_permissions, + root_permissions, + dynamic_permissions, file_fetcher, }) } @@ -258,9 +261,9 @@ impl SpecifierHandler for FetchHandler { // permissions need to be applied. Other static imports have all // permissions. let mut permissions = if is_dynamic { - self.runtime_permissions.clone() + self.dynamic_permissions.clone() } else { - Permissions::allow_all() + self.root_permissions.clone() }; let file_fetcher = self.file_fetcher.clone(); let disk_cache = self.disk_cache.clone(); @@ -603,7 +606,8 @@ pub mod tests { let fetch_handler = FetchHandler { disk_cache, - runtime_permissions: Permissions::default(), + root_permissions: Permissions::allow_all(), + dynamic_permissions: Permissions::default(), file_fetcher, }; |