Skip to content

Commit c7032c2

Browse files
authored
Merge pull request #250 from supabase/upgrade-latest-deno
Upgrade to deno core 0.243.0
2 parents 34be846 + 5445ba3 commit c7032c2

File tree

310 files changed

+8227
-6355
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

310 files changed

+8227
-6355
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,44 +12,45 @@ members = [
1212
"./crates/npm",
1313
"./crates/sb_graph",
1414
"./crates/sb_module_loader",
15-
"./crates/sb_fs"
15+
"./crates/sb_fs",
1616
]
1717
resolver = "2"
1818

1919
[workspace.dependencies]
20-
eszip = "0.53.0"
20+
url = { version = "2.3.1" }
21+
eszip = "0.56.0"
2122
log = "0.4.20"
2223
anyhow = { version = "1.0.57" }
2324
libc = { version = "0.2.144" }
24-
deno_ast = { version = "0.29.1", features = [ "cjs", "transpiling" ] }
25-
deno_broadcast_channel = { version = "0.115.0" }
26-
deno_core = { version = "0.222.0" }
27-
deno_console = { version = "0.121.0" }
28-
deno_crypto = { version = "0.135.0" }
29-
deno_fetch = { version = "0.145.0" }
30-
deno_fs = { version = "0.31.0", features = ["sync_fs"] }
25+
deno_ast = { version = "0.31.6", features = ["transpiling"] }
26+
deno_broadcast_channel = { version = "0.124.0" }
27+
deno_core = { version = "0.243.0" }
28+
deno_console = { version = "0.130.0" }
29+
deno_crypto = { version = "0.144.0" }
30+
deno_fetch = { version = "0.154.0" }
31+
deno_fs = { version = "0.40.0", features = ["sync_fs"] }
3132
deno_config = "=0.3.1"
32-
deno_io = "0.31.0"
33-
deno_graph = "=0.55.0"
34-
deno_http = { version = "0.116.0" }
33+
deno_io = "0.40.0"
34+
deno_graph = "=0.62.2"
35+
deno_http = { version = "0.127.0" }
3536
deno_media_type = { version = "0.1.1", features = ["module_specifier"] }
36-
deno_net = { version = "0.113.0" }
37-
deno_npm = "0.15.1"
38-
deno_url = { version = "0.121.0" }
39-
deno_semver = "0.5.0"
40-
deno_tls = { version = "0.108.0"}
41-
deno_webidl = { version = "0.121.0" }
42-
deno_web = { version = "0.152.0" }
43-
deno_websocket = { version = "0.126.0" }
44-
deno_webstorage = { version = "0.116.0" }
37+
deno_net = { version = "0.122.0" }
38+
deno_npm = "0.15.3"
39+
deno_url = { version = "0.130.0" }
40+
deno_semver = "0.5.1"
41+
deno_tls = { version = "0.117.0"}
42+
deno_webidl = { version = "0.130.0" }
43+
deno_web = { version = "0.161.0" }
44+
deno_websocket = { version = "0.135.0" }
45+
deno_webstorage = { version = "0.125.0" }
4546
enum-as-inner = "0.6.0"
4647
serde = { version = "1.0.149", features = ["derive"] }
4748
hyper = "0.14.26"
4849
tokio = { version = "1.28.1", features = ["full"] }
4950
bytes = { version = "1.4.0" }
5051
once_cell = "1.17.1"
5152
thiserror = "1.0.40"
52-
deno_lockfile = "0.17.1"
53+
deno_lockfile = "0.17.2"
5354
async-trait = "0.1.73"
5455
indexmap = { version = "2.0.0", features = ["serde"] }
5556
flate2 = "=1.0.26"
@@ -58,16 +59,22 @@ regex = "^1.7.0"
5859
fs3 = "0.5.0"
5960
tokio-util = "0.7.4"
6061
uuid = { version = "1.3.0", features = ["v4"] }
61-
rsa = { version = "0.7.0", default-features = false, features = ["std", "pem", "hazmat"] }
62-
monch = "=0.4.3"
62+
rsa = { version = "0.9.3", default-features = false, features = ["std", "pem", "hazmat"] } # hazmat needed for PrehashSigner in ext/node
63+
monch = "=0.5.0"
6364
reqwest = { version = "0.11.20", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json"] }
64-
ring = "=0.16.20"
65+
ring = "^0.17.0"
6566
urlencoding = { version = "2.1.2" }
66-
import_map = { version = "0.15.0" }
67-
base64 = { version = "=0.13.1" }
67+
import_map = { version = "=0.18.0", features = ["ext"] }
68+
base64 = "0.21.4"
6869
futures = { version = "0.3.28" }
6970
futures-util = { version = "0.3.28" }
7071
ctor = { version = "0.2.6" }
72+
percent-encoding = "=2.3.0"
73+
scopeguard = { version = "1.2.0" }
74+
75+
# DEBUG
76+
#[patch.crates-io]
77+
#deno_core = { path = "/your/path/to/deno_core/core" }
7178

7279
[profile.release]
7380
lto = true

crates/base/Cargo.toml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ deno_semver.workspace = true
1414
deno_npm.workspace = true
1515
cpu_timer = { version = "0.1.0", path = "../cpu_timer" }
1616
anyhow = { workspace = true }
17-
bytes = { version = "1.2.1" }
17+
bytes = { workspace = true }
1818
cityhash = { version = "0.1.1" }
1919
deno_ast = { workspace = true }
2020
deno_fs.workspace = true
2121
deno_io = { workspace = true }
22-
deno_core = { workspace = true }
22+
deno_core.workspace = true
2323
deno_console = { workspace = true }
2424
deno_crypto = { workspace = true }
2525
deno_fetch = { workspace = true }
@@ -31,16 +31,16 @@ deno_webidl = { workspace = true }
3131
deno_web = { workspace = true }
3232
deno_websocket = { workspace = true }
3333
httparse = { version = "1.8.0" }
34-
hyper = { version = "0.14.26", features = ["full"] }
34+
hyper = { workspace = true, features = ["full"] }
3535
http = { version = "0.2" }
3636
import_map.workspace = true
3737
log = { workspace = true }
3838
reqwest.workspace = true
39-
serde = { version = "1.0.149", features = ["derive"] }
39+
serde = { workspace = true, features = ["derive"] }
4040
tokio = { workspace = true }
4141
tokio-util = { workspace = true, features = ["rt"] }
4242
futures-util = { workspace = true }
43-
url = { version = "2.3.1" }
43+
url.workspace = true
4444
event_worker ={ version = "0.1.0", path = "../event_worker" }
4545
sb_workers = { version = "0.1.0", path = "../sb_workers" }
4646
sb_env = { version = "0.1.0", path = "../sb_env" }
@@ -57,7 +57,7 @@ notify = { version = "6.1.1", default-features = false, features = ["macos_kqueu
5757
flume = { version = "0.11.0" }
5858
enum-as-inner.workspace = true
5959
urlencoding.workspace = true
60-
scopeguard = { version = "1.2.0" }
60+
scopeguard.workspace = true
6161
pin-project = { version = "1.1.3" }
6262
ctor = { workspace = true }
6363

@@ -74,11 +74,10 @@ sb_env = { version = "0.1.0", path = "../sb_env" }
7474
sb_os = { version = "0.1.0", path = "../sb_os" }
7575
sb_node = { version = "0.1.0", path = "../node" }
7676
anyhow = { workspace = true }
77-
bytes = { version = "1.2.1" }
77+
bytes = { workspace = true }
7878
deno_ast = { workspace = true }
7979
deno_fs.workspace = true
8080
deno_io = { workspace = true }
81-
deno_core = { workspace = true }
8281
deno_console = { workspace = true }
8382
deno_crypto = { workspace = true }
8483
deno_fetch = { workspace = true }
@@ -90,12 +89,13 @@ deno_webidl = { workspace = true }
9089
deno_web = { workspace = true }
9190
deno_websocket = { workspace = true }
9291
httparse = { version = "1.8.0" }
93-
hyper = { version = "0.14.26", features = ["full"] }
92+
hyper = { workspace = true, features = ["full"] }
9493
http = { version = "0.2" }
9594
log = { workspace = true }
9695
reqwest.workspace = true
97-
serde = { version = "1.0.149", features = ["derive"] }
96+
serde = { workspace = true, features = ["derive"] }
9897
tokio.workspace = true
99-
url = { version = "2.3.1" }
98+
url.workspace = true
10099
event_worker ={ version = "0.1.0", path = "../event_worker" }
101100
deno_broadcast_channel.workspace = true
101+
deno_core.workspace = true

crates/base/build.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,14 @@ mod supabase_startup_snapshot {
145145
unreachable!("snapshotting!")
146146
}
147147

148+
fn check_read_with_api_name(
149+
&self,
150+
_path: &Path,
151+
_api_name: Option<&str>,
152+
) -> Result<(), AnyError> {
153+
unreachable!("snapshotting!")
154+
}
155+
148156
fn check_sys(&self, _kind: &str, _api_name: &str) -> Result<(), AnyError> {
149157
unreachable!("snapshotting!")
150158
}
@@ -203,6 +211,7 @@ mod supabase_startup_snapshot {
203211
cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"),
204212
snapshot_path,
205213
startup_snapshot: None,
214+
skip_op_registration: false,
206215
extensions,
207216
compression_cb: None,
208217
with_runtime_cb: None,

crates/base/src/deno_runtime.rs

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,19 @@ use cpu_timer::get_thread_time;
66
use ctor::ctor;
77
use deno_core::error::AnyError;
88
use deno_core::url::Url;
9-
use deno_core::{located_script_name, serde_v8, JsRuntime, ModuleCode, ModuleId, RuntimeOptions};
9+
use deno_core::{
10+
located_script_name, serde_v8, JsRuntime, ModuleCode, ModuleId, PollEventLoopOptions,
11+
RuntimeOptions,
12+
};
1013
use deno_http::DefaultHttpPropertyExtractor;
14+
use deno_tls::deno_native_certs::load_native_certs;
1115
use deno_tls::rustls;
1216
use deno_tls::rustls::RootCertStore;
13-
use deno_tls::rustls_native_certs::load_native_certs;
1417
use deno_tls::RootCertStoreProvider;
1518
use futures_util::future::poll_fn;
1619
use log::{error, trace};
1720
use sb_core::conn_sync::ConnSync;
21+
use sb_core::util::sync::AtomicFlag;
1822
use serde::de::DeserializeOwned;
1923
use std::collections::HashMap;
2024
use std::fmt;
@@ -77,8 +81,11 @@ fn get_error_class_name(e: &AnyError) -> &'static str {
7781
pub struct DenoRuntime {
7882
pub js_runtime: JsRuntime,
7983
pub env_vars: HashMap<String, String>, // TODO: does this need to be pub?
80-
main_module_id: ModuleId,
8184
pub conf: WorkerRuntimeOpts,
85+
pub is_termination_requested: Arc<AtomicFlag>,
86+
pub is_terminated: Arc<AtomicFlag>,
87+
88+
main_module_id: ModuleId,
8289
}
8390

8491
impl DenoRuntime {
@@ -358,6 +365,8 @@ impl DenoRuntime {
358365
main_module_id,
359366
env_vars,
360367
conf,
368+
is_termination_requested: Arc::default(),
369+
is_terminated: Arc::default(),
361370
})
362371
}
363372

@@ -393,6 +402,7 @@ impl DenoRuntime {
393402
js_runtime.mod_evaluate(self.main_module_id)
394403
};
395404

405+
let is_termination_requested = self.is_termination_requested.clone();
396406
let is_user_worker = self.conf.is_user_worker();
397407

398408
#[cfg(debug_assertions)]
@@ -433,7 +443,13 @@ impl DenoRuntime {
433443
Err(err) => return Poll::Ready(Err(err)),
434444
};
435445

436-
let poll_result = js_runtime.poll_event_loop(cx, false);
446+
let poll_result = js_runtime.poll_event_loop(
447+
cx,
448+
PollEventLoopOptions {
449+
wait_for_inspector: false,
450+
pump_v8_message_loop: true,
451+
},
452+
);
437453

438454
let cpu_time_after_poll_ns = match get_current_cpu_time_ns_fn() {
439455
Ok(value) => value,
@@ -458,21 +474,26 @@ impl DenoRuntime {
458474
);
459475
}
460476

477+
if poll_result.is_pending() && is_termination_requested.is_raised() {
478+
return Poll::Ready(Ok(()));
479+
}
480+
461481
poll_result
462482
})
463483
.await
464484
{
465485
Err(err) => Err(anyhow!("event loop error: {}", err)),
466486
Ok(_) => match mod_result_rx.await {
467-
Err(_) => Err(anyhow!("mod result sender dropped")),
468-
Ok(Err(err)) => {
469-
error!("{}", err.to_string());
470-
Err(err)
487+
Err(e) => {
488+
error!("{}", e.to_string());
489+
Err(e)
471490
}
472-
Ok(Ok(_)) => Ok(()),
491+
Ok(_) => Ok(()),
473492
},
474493
};
475494

495+
self.is_terminated.raise();
496+
476497
(result, accumulated_cpu_time_ns)
477498
}
478499

@@ -512,7 +533,7 @@ fn set_v8_flags() {
512533
#[cfg(test)]
513534
mod test {
514535
use crate::deno_runtime::DenoRuntime;
515-
use deno_core::{FastString, ModuleCode};
536+
use deno_core::{FastString, ModuleCode, PollEventLoopOptions};
516537
use sb_core::conn_sync::ConnSync;
517538
use sb_graph::emitter::EmitterFactory;
518539
use sb_graph::{generate_binary_eszip, EszipPayloadKind};
@@ -597,7 +618,13 @@ mod test {
597618
}
598619

599620
let main_mod_ev = rt.js_runtime.mod_evaluate(rt.main_module_id);
600-
let _ = rt.js_runtime.run_event_loop(false).await;
621+
let _ = rt
622+
.js_runtime
623+
.run_event_loop(PollEventLoopOptions {
624+
wait_for_inspector: false,
625+
pump_v8_message_loop: true,
626+
})
627+
.await;
601628

602629
let read_is_even_global = rt
603630
.js_runtime
@@ -652,7 +679,13 @@ mod test {
652679
}
653680

654681
let main_mod_ev = rt.js_runtime.mod_evaluate(rt.main_module_id);
655-
let _ = rt.js_runtime.run_event_loop(false).await;
682+
let _ = rt
683+
.js_runtime
684+
.run_event_loop(PollEventLoopOptions {
685+
wait_for_inspector: false,
686+
pump_v8_message_loop: true,
687+
})
688+
.await;
656689

657690
let read_is_even_global = rt
658691
.js_runtime

crates/base/src/macros/test_macros.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#[macro_export]
22
macro_rules! integration_test {
3-
($main_file:expr, $port:expr, $url:expr, ($($function:tt)+) $(, $termination_token: expr)?) => {
3+
($main_file:expr, $port:expr, $url:expr, $shot_policy:expr, $import_map:expr, $req_builder:expr, ($($function:tt)+) $(, $termination_token: expr)?) => {
44
let (tx, mut rx) = tokio::sync::mpsc::channel::<base::server::ServerHealth>(1);
55

66
let signal = tokio::spawn(async move {
77
while let Some(base::server::ServerHealth::Listening(event_rx)) = rx.recv().await {
8-
integration_test!(@req event_rx, $port, $url, ($($function)+));
8+
integration_test!(@req event_rx, $port, $url, $req_builder, ($($function)+));
99
}
1010
None
1111
});
@@ -24,8 +24,8 @@ macro_rules! integration_test {
2424
$port,
2525
String::from($main_file),
2626
None,
27-
None,
28-
None,
27+
$shot_policy,
28+
$import_map,
2929
false,
3030
Some(tx.clone()),
3131
$crate::server::WorkerEntrypoints {
@@ -47,13 +47,17 @@ macro_rules! integration_test {
4747
None
4848
};
4949

50-
(@req $event_rx:ident, $port:expr, $url:expr, ($req:expr, $_:expr)) => {
51-
return $req($port, $url, $event_rx).await;
50+
(@req $event_rx:ident, $port:expr, $url:expr, $req_builder:expr, ($req:expr, $_:expr)) => {
51+
return $req($port, $url, $req_builder, $event_rx).await;
5252
};
5353

54-
(@req $_:ident, $port:expr, $url:expr, $__:expr) => {
55-
let req = reqwest::get(format!("http://localhost:{}/{}", $port, $url)).await;
56-
return Some(req);
54+
(@req $_:ident, $port:expr, $url:expr, $req_builder:expr, $__:expr) => {
55+
if let Some(req_factory) = $req_builder {
56+
return Some(req_factory.send().await);
57+
} else {
58+
let req = reqwest::get(format!("http://localhost:{}/{}", $port, $url)).await;
59+
return Some(req);
60+
}
5761
};
5862

5963
(@resp $var:ident, ($_:expr, $resp:expr)) => {

0 commit comments

Comments
 (0)