Skip to content

Commit 5a41fa0

Browse files
committed
Overhaul extensions for easier maintenance
1 parent 6085427 commit 5a41fa0

File tree

18 files changed

+593
-556
lines changed

18 files changed

+593
-556
lines changed

Cargo.lock

Lines changed: 63 additions & 56 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ categories = ["web-programming", "network-programming", "api-bindings", "compile
1111
readme = "readme.md"
1212

1313
[features]
14-
default = ["worker", "web_stub", "console", "url", "crypto"]
14+
default = ["worker", "web_stub", "console", "url", "crypto", "web"]
1515

1616
no_extensions = []
1717
all = ["web", "io", "webstorage", "cache", "websocket"]
@@ -52,7 +52,7 @@ web_stub = ["webidl"]
5252
# Timers, events, text encoder/decoder,
5353
# [https://w3c.github.io/FileAPI]
5454
# [https://fetch.spec.whatwg.org/]
55-
web = ["deno_web", "webidl", "deno_tls", "deno_fetch", "deno_net", "console", "url", "crypto", "url_import", "fs_import"]
55+
web = ["deno_web", "webidl", "deno_tls", "deno_fetch", "deno_net", "console", "url", "crypto", "url_import", "fs_import", "http"]
5656

5757
# [https://webidl.spec.whatwg.org/]
5858
webidl = ["deno_webidl"]
@@ -100,7 +100,8 @@ tokio = "1.38.1"
100100

101101
# For URL imports
102102
# Pinned for now due to upstream issues
103-
reqwest = { version = "=0.12.4", optional = true, default-features = false, features = ["blocking", "rustls-tls"] }
103+
reqwest = { version = "=0.12.5", optional = true, default-features = false, features = ["blocking", "rustls-tls"] }
104+
http = { version = "1.1.0", optional = true }
104105

105106
# Dependencies for the various extension features
106107
deno_cache = {version = "0.94.0", optional = true}

src/ext/cache/mod.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use super::ExtensionTrait;
12
use deno_core::{extension, Extension};
23

34
extension!(
@@ -6,21 +7,25 @@ extension!(
67
esm_entry_point = "ext:init_cache/init_cache.js",
78
esm = [ dir "src/ext/cache", "init_cache.js" ],
89
);
9-
10-
pub fn extensions(
11-
cache: Option<deno_cache::CreateCache<deno_cache::SqliteBackedCache>>,
12-
) -> Vec<Extension> {
13-
vec![
14-
deno_cache::deno_cache::init_ops_and_esm::<deno_cache::SqliteBackedCache>(cache),
15-
init_cache::init_ops_and_esm(),
16-
]
10+
impl ExtensionTrait<()> for init_cache {
11+
fn init(_: ()) -> Extension {
12+
init_cache::init_ops_and_esm()
13+
}
14+
}
15+
impl ExtensionTrait<Option<deno_cache::CreateCache<deno_cache::SqliteBackedCache>>>
16+
for deno_cache::deno_cache
17+
{
18+
fn init(options: Option<deno_cache::CreateCache<deno_cache::SqliteBackedCache>>) -> Extension {
19+
deno_cache::deno_cache::init_ops_and_esm::<deno_cache::SqliteBackedCache>(options)
20+
}
1721
}
1822

19-
pub fn snapshot_extensions(
20-
cache: Option<deno_cache::CreateCache<deno_cache::SqliteBackedCache>>,
23+
pub fn extensions(
24+
options: Option<deno_cache::CreateCache<deno_cache::SqliteBackedCache>>,
25+
is_snapshot: bool,
2126
) -> Vec<Extension> {
2227
vec![
23-
deno_cache::deno_cache::init_ops::<deno_cache::SqliteBackedCache>(cache),
24-
init_cache::init_ops(),
28+
deno_cache::deno_cache::build(options, is_snapshot),
29+
init_cache::build((), is_snapshot),
2530
]
2631
}

src/ext/console/mod.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
1+
use super::ExtensionTrait;
12
use deno_core::{extension, Extension};
3+
24
extension!(
35
init_console,
46
deps = [rustyscript],
57
esm_entry_point = "ext:init_console/init_console.js",
68
esm = [ dir "src/ext/console", "init_console.js" ],
79
);
8-
9-
pub fn extensions() -> Vec<Extension> {
10-
vec![
11-
deno_console::deno_console::init_ops_and_esm(),
12-
init_console::init_ops_and_esm(),
13-
]
10+
impl ExtensionTrait<()> for init_console {
11+
fn init((): ()) -> Extension {
12+
init_console::init_ops_and_esm()
13+
}
14+
}
15+
impl ExtensionTrait<()> for deno_console::deno_console {
16+
fn init((): ()) -> Extension {
17+
deno_console::deno_console::init_ops_and_esm()
18+
}
1419
}
1520

16-
pub fn snapshot_extensions() -> Vec<Extension> {
21+
pub fn extensions(is_snapshot: bool) -> Vec<Extension> {
1722
vec![
18-
deno_console::deno_console::init_ops(),
19-
init_console::init_ops(),
23+
deno_console::deno_console::build((), is_snapshot),
24+
init_console::build((), is_snapshot),
2025
]
2126
}

src/ext/crypto/mod.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
1+
use super::ExtensionTrait;
12
use deno_core::{extension, Extension};
3+
24
extension!(
35
init_crypto,
46
deps = [rustyscript],
57
esm_entry_point = "ext:init_crypto/init_crypto.js",
68
esm = [ dir "src/ext/crypto", "init_crypto.js" ],
79
);
8-
9-
pub fn extensions(seed: Option<u64>) -> Vec<Extension> {
10-
vec![
11-
deno_crypto::deno_crypto::init_ops_and_esm(seed),
12-
init_crypto::init_ops_and_esm(),
13-
]
10+
impl ExtensionTrait<()> for init_crypto {
11+
fn init((): ()) -> Extension {
12+
init_crypto::init_ops_and_esm()
13+
}
14+
}
15+
impl ExtensionTrait<Option<u64>> for deno_crypto::deno_crypto {
16+
fn init(seed: Option<u64>) -> Extension {
17+
deno_crypto::deno_crypto::init_ops_and_esm(seed)
18+
}
1419
}
1520

16-
pub fn snapshot_extensions(seed: Option<u64>) -> Vec<Extension> {
21+
pub fn extensions(seed: Option<u64>, is_snapshot: bool) -> Vec<Extension> {
1722
vec![
18-
deno_crypto::deno_crypto::init_ops(seed),
19-
init_crypto::init_ops(),
23+
deno_crypto::deno_crypto::build(seed, is_snapshot),
24+
init_crypto::build((), is_snapshot),
2025
]
2126
}

0 commit comments

Comments
 (0)