Skip to main content

rew_extensions/ext/web/
mod.rs

1use super::ExtensionTrait;
2use deno_core::{Extension, extension};
3use std::sync::Arc;
4
5mod options;
6pub use options::WebOptions;
7
8mod permissions;
9pub(crate) use permissions::PermissionsContainer;
10pub use permissions::{
11  AllowlistWebPermissions, DefaultWebPermissions, SystemsPermissionKind, WebPermissions,
12};
13
14extension!(
15    init_web,
16    esm_entry_point = "ext:init_web/init_web.js",
17    esm = [ dir "src/ext/web", "init_web.js", "init_errors.js" ],
18    options = {
19        permissions: Arc<dyn WebPermissions>
20    },
21    state = |state, config| state.put(PermissionsContainer(config.permissions)),
22);
23impl ExtensionTrait<WebOptions> for init_web {
24  fn init(options: WebOptions) -> Extension {
25    init_web::init(options.permissions)
26  }
27}
28
29impl ExtensionTrait<WebOptions> for deno_web::deno_web {
30  fn init(options: WebOptions) -> Extension {
31    deno_web::deno_web::init::<PermissionsContainer>(options.blob_store, options.base_url)
32  }
33}
34
35impl ExtensionTrait<()> for deno_tls::deno_tls {
36  fn init((): ()) -> Extension {
37    deno_tls::deno_tls::init()
38  }
39}
40
41pub fn extensions(options: WebOptions, is_snapshot: bool) -> Vec<Extension> {
42  vec![
43    deno_web::deno_web::build(options.clone(), is_snapshot),
44    deno_tls::deno_tls::build((), is_snapshot),
45    init_web::build(options.clone(), is_snapshot),
46  ]
47}