rew-extensions 0.0.62

Deno core extensions for the Rew runtime
Documentation
use super::{ExtensionTrait, web::PermissionsContainer};
use deno_core::{Extension, extension};

extension!(
    init_ffi,
    esm_entry_point = "ext:init_ffi/init_ffi.js",
    esm = [ dir "src/ext/ffi", "init_ffi.js" ],
);
impl ExtensionTrait<()> for init_ffi {
  fn init((): ()) -> Extension {
    init_ffi::init()
  }
}
impl ExtensionTrait<()> for deno_ffi::deno_ffi {
  fn init((): ()) -> Extension {
    deno_ffi::deno_ffi::init::<PermissionsContainer>(None)
  }
}

pub fn extensions(is_snapshot: bool) -> Vec<Extension> {
  vec![
    deno_ffi::deno_ffi::build((), is_snapshot),
    init_ffi::build((), is_snapshot),
  ]
}

impl deno_ffi::FfiPermissions for PermissionsContainer {
  fn check_partial_no_path(&mut self) -> Result<(), deno_permissions::PermissionCheckError> {
    self.0.check_exec()?;
    Ok(())
  }

  fn check_partial_with_path(
    &mut self,
    path: &str,
  ) -> Result<std::path::PathBuf, deno_permissions::PermissionCheckError> {
    self.check_partial_no_path()?;
    let p = self.0.check_read(std::path::Path::new(path), None)?;
    Ok(p.to_path_buf())
  }
}