rew_extensions/ext/ffi/
mod.rs1use super::{ExtensionTrait, web::PermissionsContainer};
2use deno_core::{Extension, extension};
3
4extension!(
5 init_ffi,
6 esm_entry_point = "ext:init_ffi/init_ffi.js",
7 esm = [ dir "src/ext/ffi", "init_ffi.js" ],
8);
9impl ExtensionTrait<()> for init_ffi {
10 fn init((): ()) -> Extension {
11 init_ffi::init()
12 }
13}
14impl ExtensionTrait<()> for deno_ffi::deno_ffi {
15 fn init((): ()) -> Extension {
16 deno_ffi::deno_ffi::init::<PermissionsContainer>(None)
17 }
18}
19
20pub fn extensions(is_snapshot: bool) -> Vec<Extension> {
21 vec![
22 deno_ffi::deno_ffi::build((), is_snapshot),
23 init_ffi::build((), is_snapshot),
24 ]
25}
26
27impl deno_ffi::FfiPermissions for PermissionsContainer {
28 fn check_partial_no_path(&mut self) -> Result<(), deno_permissions::PermissionCheckError> {
29 self.0.check_exec()?;
30 Ok(())
31 }
32
33 fn check_partial_with_path(
34 &mut self,
35 path: &str,
36 ) -> Result<std::path::PathBuf, deno_permissions::PermissionCheckError> {
37 self.check_partial_no_path()?;
38 let p = self.0.check_read(std::path::Path::new(path), None)?;
39 Ok(p.to_path_buf())
40 }
41}