rustyscript 0.12.3

Effortless JS Integration for Rust
Documentation
use deno_core::{extension, url::Url, Extension};
use deno_permissions::PermissionCheckError;

use super::{web::PermissionsContainer, web::WebOptions, ExtensionTrait};

impl deno_websocket::WebSocketPermissions for PermissionsContainer {
    fn check_net_url(&mut self, url: &Url, api_name: &str) -> Result<(), PermissionCheckError> {
        self.0.check_url(url, api_name)?;
        Ok(())
    }
}

extension!(
    init_websocket,
    deps = [rustyscript],
    esm_entry_point = "ext:init_websocket/init_websocket.js",
    esm = [ dir "src/ext/websocket", "init_websocket.js" ],
);
impl ExtensionTrait<()> for init_websocket {
    fn init((): ()) -> Extension {
        init_websocket::init()
    }
}
impl ExtensionTrait<WebOptions> for deno_websocket::deno_websocket {
    fn init(options: WebOptions) -> Extension {
        deno_websocket::deno_websocket::init::<PermissionsContainer>(
            options.user_agent,
            options.root_cert_store_provider,
            options.unsafely_ignore_certificate_errors,
        )
    }
}

pub fn extensions(options: WebOptions, is_snapshot: bool) -> Vec<Extension> {
    vec![
        deno_websocket::deno_websocket::build(options, is_snapshot),
        init_websocket::build((), is_snapshot),
    ]
}