Skip to content

Commit 2cd6dfc

Browse files
committed
feat: upgrade reqwest and deno dependencies to support axum 0.8+
Major dependency upgrades: - deno_core: 0.355.0 -> 0.376.0 - reqwest: 0.12.8 -> 0.12.20 - deno_broadcast_channel: 0.207.0 -> 0.216.0 - deno_web: 0.244.0 -> 0.257.0 - All other deno_* crates upgraded to latest versions API compatibility changes: - Updated v8 API usage (handle_scope, Global::new patterns) - Removed deprecated deno_console re-export - Removed incompatible ToV8String trait - Updated deno_url/deno_console extension integration - Added BroadcastChannelWrapper for stable API - Updated ModuleLoader API to match deno_core changes Breaking changes: - Removed ToV8String trait (use v8::String::new directly) - deno_console and deno_url now integrated via deno_web
1 parent bca5dc8 commit 2cd6dfc

30 files changed

Lines changed: 5815 additions & 4934 deletions

Cargo.lock

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

Cargo.toml

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ extra_features = ["worker", "snapshot_builder"]
5858
# (See [NodePermissions])
5959
node_experimental = [
6060
"deno_node", "deno_resolver", "node_resolver", "deno_npm", "deno_semver", "deno_napi", "deno_runtime", "deno_process", "deno_package_json",
61+
"deno_bundle_runtime",
6162
"checksum", "sys_traits", "all_extensions"
6263
]
6364

@@ -79,7 +80,7 @@ web_stub = ["webidl", "base64-simd"]
7980
#
8081

8182
# [https://html.spec.whatwg.org/multipage/web-messaging.html]
82-
broadcast_channel = ["deno_broadcast_channel", "web", "webidl"]
83+
broadcast_channel = ["deno_broadcast_channel", "web", "webidl", "uuid"]
8384

8485
# [https://w3c.github.io/ServiceWorker/#cache-interface]
8586
cache = ["deno_cache", "webidl", "web"]
@@ -118,7 +119,7 @@ web_stub = ["webidl", "base64-simd"]
118119
web = [
119120
"deno_web", "deno_tls", "deno_fetch", "deno_net", "dep:http", "deno_permissions", "deno_telemetry", "deno_fs",
120121
"webidl", "console", "url", "crypto", "url_import", "fs_import",
121-
"hyper-util", "rustls"
122+
"hyper-util", "rustls", "sys_traits"
122123
]
123124

124125
# [https://gpuweb.github.io/gpuweb/]
@@ -168,12 +169,12 @@ async-trait = "^0.1.89"
168169
paste = "1.0.15"
169170

170171
# The deno runtime itself, and the webidl extension for the web APIs
171-
deno_core = "^0.355.0"
172-
deno_error = "=0.7.0"
173-
deno_features = "0.10.0"
172+
deno_core = "^0.376.0"
173+
deno_error = "=0.7.1"
174+
deno_features = "^0.23.0"
174175

175176
# For transpiling typescript
176-
deno_ast = { version = "=0.49.0", features = ["transpiling", "cjs"] }
177+
deno_ast = { version = "^0.52.0", features = ["transpiling", "cjs"] }
177178
deno_media_type = { version = "=0.2.9", features = ["module_specifier"] }
178179

179180
# Runtime for async tasks
@@ -185,40 +186,42 @@ hyper-util = {version = "^0.1.10", optional = true}
185186
rustls = {version = "0.23.28", optional = true}
186187

187188
# For URL imports
188-
# Pinned for now due to upstream issues
189-
reqwest = { version = "=0.12.8", optional = true, default-features = false, features = ["blocking", "rustls-tls"] }
189+
# Upgraded to support axum 0.8+
190+
reqwest = { version = "^0.12.20", optional = true, default-features = false, features = ["blocking", "rustls-tls"] }
190191
http = { version = "^1.0", optional = true }
191-
deno_permissions = { version = "^0.72.0", optional = true }
192+
deno_permissions = { version = "^0.85.0", optional = true }
192193

193194

194195
#
195196
# Dependencies for the various extension features
196197
#
197198

198-
deno_broadcast_channel = { version = "^0.207.0", optional = true }
199-
200-
deno_cache = { version = "^0.145.0", optional = true }
201-
deno_console = { version = "^0.213.0", optional = true }
202-
deno_cron = { version = "^0.93.0", optional = true }
203-
deno_crypto = { version = "^0.227.0", optional = true }
204-
deno_fetch = { version = "^0.237.0", optional = true }
205-
deno_ffi = { version = "^0.200.0", optional = true }
206-
deno_fs = { version = "^0.123.0", optional = true, features = ["sync_fs"] }
207-
deno_http = { version = "^0.211.0", optional = true }
208-
deno_kv = { version = "^0.121.0", optional = true }
209-
deno_net = { version = "^0.205.0", optional = true }
210-
deno_node = { version = "^0.151.0", optional = true }
211-
deno_tls = { version = "^0.200.0", optional = true }
212-
deno_url = { version = "^0.213.0", optional = true }
213-
214-
deno_web = { version = "^0.244.0", optional = true }
215-
deno_webidl = { version = "^0.213.0", optional = true }
216-
deno_webstorage = { version = "^0.208.0", optional = true }
217-
deno_websocket = { version = "^0.218.0", optional = true }
218-
deno_webgpu = { version = "^0.180.0", optional = true }
219-
220-
deno_io = { version = "^0.123.0", optional = true }
221-
deno_telemetry = { version = "^0.35.0", optional = true }
199+
deno_broadcast_channel = { version = "^0.216.0", optional = true }
200+
uuid = { version = "1.10.0", optional = true, features = ["v4"] }
201+
202+
deno_bundle_runtime = { version = "^0.13.0", optional = true }
203+
deno_cache = { version = "^0.159.0", optional = true }
204+
deno_console = { version = "^0.222.0", optional = true }
205+
deno_cron = { version = "^0.106.0", optional = true }
206+
deno_crypto = { version = "^0.240.0", optional = true }
207+
deno_fetch = { version = "^0.250.0", optional = true }
208+
deno_ffi = { version = "^0.213.0", optional = true }
209+
deno_fs = { version = "^0.136.0", optional = true, features = ["sync_fs"] }
210+
deno_http = { version = "^0.224.0", optional = true }
211+
deno_kv = { version = "^0.134.0", optional = true }
212+
deno_net = { version = "^0.218.0", optional = true }
213+
deno_node = { version = "^0.164.0", optional = true }
214+
deno_tls = { version = "^0.213.0", optional = true }
215+
deno_url = { version = "^0.222.0", optional = true }
216+
217+
deno_web = { version = "^0.257.0", optional = true }
218+
deno_webidl = { version = "^0.226.0", optional = true }
219+
deno_webstorage = { version = "^0.221.0", optional = true }
220+
deno_websocket = { version = "^0.231.0", optional = true }
221+
deno_webgpu = { version = "^0.193.0", optional = true }
222+
223+
deno_io = { version = "^0.136.0", optional = true }
224+
deno_telemetry = { version = "^0.48.0", optional = true }
222225

223226
# Dependencies for the IO feature
224227
rustyline = {version = "=13.0.0", optional = true}
@@ -235,17 +238,17 @@ once_cell = {version = "^1.17.1", optional = true}
235238
base64-simd = {version = "0.8.0", optional = true}
236239

237240
# Dependencies for the node feature
238-
deno_resolver = { version = "^0.44.0", optional = true }
239-
node_resolver = { version = "^0.51.0", optional = true, features = ["sync"] }
240-
deno_runtime = { version = "^0.221.0", optional = true, features = ["exclude_runtime_main_js"] }
241-
deno_terminal = { version = "=0.2.2", optional = true }
242-
deno_semver = { version = "=0.9.0", optional = true }
243-
deno_napi = { version = "^0.144.0", optional = true }
244-
deno_npm = { version = "=0.36.0", optional = true }
245-
deno_process = { version = "^0.28.0", optional = true }
246-
deno_package_json = { version = "=0.15.0", optional = true }
241+
deno_resolver = { version = "^0.57.0", optional = true }
242+
node_resolver = { version = "^0.64.0", optional = true, features = ["sync"] }
243+
deno_runtime = { version = "^0.234.0", optional = true, features = ["exclude_runtime_main_js"] }
244+
deno_terminal = { version = "^0.2.3", optional = true }
245+
deno_semver = { version = "^0.9.1", optional = true }
246+
deno_napi = { version = "^0.157.0", optional = true }
247+
deno_npm = { version = "^0.42.2", optional = true }
248+
deno_process = { version = "^0.41.0", optional = true }
249+
deno_package_json = { version = "^0.28.0", optional = true }
247250
checksum = { version = "0.2.1", optional = true }
248-
sys_traits = { version = "=0.1.17", optional = true }
251+
sys_traits = { version = "=0.1.17", optional = true, features = ["libc", "real", "winapi"] }
249252

250253
[dev-dependencies]
251254
version-sync = "0.9.5"

src/error.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ impl From<deno_core::error::JsError> for Error {
107107
}
108108
}
109109

110+
impl From<Box<deno_core::error::JsError>> for Error {
111+
fn from(err: Box<deno_core::error::JsError>) -> Self {
112+
Self::JsError(err)
113+
}
114+
}
115+
110116
impl Error {
111117
/// Formats an error for display in a terminal
112118
/// If the error is a `JsError`, it will attempt to highlight the source line
@@ -239,7 +245,7 @@ map_error!(deno_ast::TranspileError, |e| Error::Runtime(e.to_string()));
239245
map_error!(deno_core::error::CoreError, |e| {
240246
let e = e.into_kind();
241247
match e {
242-
CoreErrorKind::Js(js_error) => Error::JsError(Box::new(js_error)),
248+
CoreErrorKind::Js(js_error) => Error::JsError(js_error),
243249
_ => Error::Runtime(e.to_string()),
244250
}
245251
});
@@ -273,10 +279,7 @@ map_error!(deno_core::futures::channel::oneshot::Canceled, |e| {
273279
Error::Timeout(e.to_string())
274280
});
275281

276-
#[cfg(feature = "broadcast_channel")]
277-
map_error!(deno_broadcast_channel::BroadcastChannelError, |e| {
278-
Error::Runtime(e.to_string())
279-
});
282+
// Note: BroadcastChannelError mapping removed - no longer exported from deno_web
280283

281284
#[cfg(test)]
282285
mod test {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "ext:deno_web/01_broadcast_channel.js";

src/ext/console/init_console.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,38 @@
1-
import * as _console from 'ext:deno_console/01_console.js';
1+
import * as _console from 'ext:deno_web/01_console.js';
22

3-
import { applyToGlobal, nonEnumerable } from 'ext:rustyscript/rustyscript.js';
4-
applyToGlobal({
5-
console: nonEnumerable(
6-
new _console.Console((msg, level) => globalThis.Deno.core.print(msg, level > 1)),
7-
),
8-
});
3+
import { applyToGlobal, nonEnumerable } from 'ext:rustyscript/rustyscript.js';
4+
5+
const consoleInstance = new _console.Console((msg, level) =>
6+
globalThis.Deno.core.print(msg, level > 1),
7+
);
8+
for (const name of [
9+
"log",
10+
"debug",
11+
"info",
12+
"warn",
13+
"error",
14+
"dir",
15+
"dirxml",
16+
"assert",
17+
"clear",
18+
"count",
19+
"countReset",
20+
"group",
21+
"groupCollapsed",
22+
"groupEnd",
23+
"table",
24+
"time",
25+
"timeEnd",
26+
"timeLog",
27+
"trace",
28+
]) {
29+
const value = consoleInstance[name];
30+
if (typeof value === "function") {
31+
consoleInstance[name] = value.bind(consoleInstance);
32+
}
33+
}
34+
applyToGlobal({
35+
console: nonEnumerable(consoleInstance),
36+
});
937

10-
globalThis.Deno.inspect = _console.inspect;
38+
globalThis.Deno.inspect = _console.inspect;

src/ext/console/mod.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::ExtensionTrait;
44

55
extension!(
66
init_console,
7-
deps = [rustyscript],
7+
deps = [rustyscript, deno_web],
88
esm_entry_point = "ext:init_console/init_console.js",
99
esm = [ dir "src/ext/console", "init_console.js" ],
1010
);
@@ -14,15 +14,7 @@ impl ExtensionTrait<()> for init_console {
1414
init_console::init()
1515
}
1616
}
17-
impl ExtensionTrait<()> for deno_console::deno_console {
18-
fn init((): ()) -> Extension {
19-
deno_console::deno_console::init()
20-
}
21-
}
2217

2318
pub fn extensions(is_snapshot: bool) -> Vec<Extension> {
24-
vec![
25-
deno_console::deno_console::build((), is_snapshot),
26-
init_console::build((), is_snapshot),
27-
]
19+
vec![<init_console as ExtensionTrait<()>>::build((), is_snapshot)]
2820
}

src/ext/mod.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,18 @@ pub(crate) fn all_extensions(
202202
#[cfg(feature = "webidl")]
203203
extensions.extend(webidl::extensions(is_snapshot));
204204

205-
#[cfg(feature = "console")]
206-
extensions.extend(console::extensions(is_snapshot));
205+
// web or web_stub must come before url and console since they depend on deno_web
206+
#[cfg(feature = "web")]
207+
extensions.extend(web::extensions(options.web.clone(), is_snapshot));
208+
209+
#[cfg(all(not(feature = "web"), feature = "web_stub"))]
210+
extensions.extend(web_stub::extensions(is_snapshot));
207211

208212
#[cfg(feature = "url")]
209213
extensions.extend(url::extensions(is_snapshot));
210214

211-
#[cfg(feature = "web")]
212-
extensions.extend(web::extensions(options.web.clone(), is_snapshot));
215+
#[cfg(feature = "console")]
216+
extensions.extend(console::extensions(is_snapshot));
213217

214218
#[cfg(feature = "broadcast_channel")]
215219
extensions.extend(broadcast_channel::extensions(
@@ -220,9 +224,6 @@ pub(crate) fn all_extensions(
220224
#[cfg(feature = "cache")]
221225
extensions.extend(cache::extensions(options.cache.clone(), is_snapshot));
222226

223-
#[cfg(all(not(feature = "web"), feature = "web_stub"))]
224-
extensions.extend(web_stub::extensions(is_snapshot));
225-
226227
#[cfg(feature = "crypto")]
227228
extensions.extend(crypto::extensions(options.crypto_seed, is_snapshot));
228229

@@ -236,7 +237,7 @@ pub(crate) fn all_extensions(
236237
));
237238

238239
#[cfg(feature = "websocket")]
239-
extensions.extend(websocket::extensions(options.web.clone(), is_snapshot));
240+
extensions.extend(websocket::extensions(is_snapshot));
240241

241242
#[cfg(feature = "fs")]
242243
extensions.extend(fs::extensions(options.filesystem.clone(), is_snapshot));

src/ext/runtime/init_runtime.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ applyToDeno({
7777
core: readOnly(core),
7878
});
7979

80-
import * as _console from 'ext:deno_console/01_console.js';
80+
import * as _console from 'ext:deno_web/01_console.js';
8181
_console.setNoColorFns(
8282
() => globalThis.Deno.core.ops.op_bootstrap_no_color(),
8383
() => globalThis.Deno.core.ops.op_bootstrap_no_color(),

0 commit comments

Comments
 (0)