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