summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-10-30 08:45:45 -0700
committerGitHub <noreply@github.com>2023-10-30 11:45:45 -0400
commit1acef755ca8a0a0433a98e4a66433c63ee0a3b09 (patch)
tree015ce439d800e8e35916d498de3780e6ee03e0df /ext
parent02cc37e05494e576ea8e120b9fe21b447da9546b (diff)
chore: remove usage of chrono::Utc::now() (#20995)
Remove usage of Chrono's clock feature which pulls in iana-time-zone -> core-foundation
Diffstat (limited to 'ext')
-rw-r--r--ext/kv/lib.rs4
-rw-r--r--ext/kv/remote.rs2
-rw-r--r--ext/kv/time.rs19
3 files changed, 22 insertions, 3 deletions
diff --git a/ext/kv/lib.rs b/ext/kv/lib.rs
index 20f774033..fb68596fa 100644
--- a/ext/kv/lib.rs
+++ b/ext/kv/lib.rs
@@ -6,6 +6,7 @@ mod interface;
mod proto;
pub mod remote;
pub mod sqlite;
+mod time;
use std::borrow::Cow;
use std::cell::RefCell;
@@ -14,7 +15,6 @@ use std::rc::Rc;
use base64::prelude::BASE64_URL_SAFE;
use base64::Engine;
-use chrono::Utc;
use codec::decode_key;
use codec::encode_key;
use deno_core::anyhow::Context;
@@ -610,7 +610,7 @@ async fn op_kv_atomic_write<DBH>(
where
DBH: DatabaseHandler + 'static,
{
- let current_timestamp = Utc::now().timestamp_millis() as u64;
+ let current_timestamp = time::utc_now().timestamp_millis() as u64;
let db = {
let state = state.borrow();
let resource =
diff --git a/ext/kv/remote.rs b/ext/kv/remote.rs
index 38b233cc3..0a061b35b 100644
--- a/ext/kv/remote.rs
+++ b/ext/kv/remote.rs
@@ -426,7 +426,7 @@ async fn metadata_refresh_task(
metadata
.expires_at
.timestamp_millis()
- .saturating_sub(Utc::now().timestamp_millis()),
+ .saturating_sub(crate::time::utc_now().timestamp_millis()),
)
.unwrap_or_default();
diff --git a/ext/kv/time.rs b/ext/kv/time.rs
new file mode 100644
index 000000000..60375818b
--- /dev/null
+++ b/ext/kv/time.rs
@@ -0,0 +1,19 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+
+/// Identical to chrono::Utc::now() but without the system "clock"
+/// feature flag.
+///
+/// The "clock" feature flag pulls in the "iana-time-zone" crate
+/// which links to macOS's "CoreFoundation" framework which increases
+/// startup time for the CLI.
+pub fn utc_now() -> chrono::DateTime<chrono::Utc> {
+ let now = std::time::SystemTime::now()
+ .duration_since(std::time::UNIX_EPOCH)
+ .expect("system time before Unix epoch");
+ let naive = chrono::NaiveDateTime::from_timestamp_opt(
+ now.as_secs() as i64,
+ now.subsec_nanos(),
+ )
+ .unwrap();
+ chrono::DateTime::from_naive_utc_and_offset(naive, chrono::Utc)
+}