rew_extensions/ext/web/
mod.rs1use 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, PermissionDeniedError, SystemsPermissionKind,
12 WebPermissions,
13};
14
15extension!(
16 init_web,
17 esm_entry_point = "ext:init_web/init_web.js",
18 esm = [ dir "src/ext/web", "init_web.js", "init_errors.js" ],
19 options = {
20 permissions: Arc<dyn WebPermissions>
21 },
22 state = |state, config| state.put(PermissionsContainer(config.permissions)),
23);
24impl ExtensionTrait<WebOptions> for init_web {
25 fn init(options: WebOptions) -> Extension {
26 init_web::init(options.permissions)
27 }
28}
29
30impl ExtensionTrait<WebOptions> for deno_web::deno_web {
31 fn init(options: WebOptions) -> Extension {
32 deno_web::deno_web::init::<PermissionsContainer>(options.blob_store, options.base_url)
33 }
34}
35
36pub fn extensions(options: WebOptions, is_snapshot: bool) -> Vec<Extension> {
37 vec![
38 deno_web::deno_web::build(options.clone(), is_snapshot),
39 init_web::build(options.clone(), is_snapshot),
40 ]
41}