diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/kv/Cargo.toml | 1 | ||||
-rw-r--r-- | ext/kv/remote.rs | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml index 39901d594..deaac4db0 100644 --- a/ext/kv/Cargo.toml +++ b/ext/kv/Cargo.toml @@ -29,6 +29,7 @@ reqwest.workspace = true rusqlite.workspace = true serde.workspace = true serde_json.workspace = true +termcolor.workspace = true tokio.workspace = true url.workspace = true uuid = { workspace = true, features = ["serde"] } diff --git a/ext/kv/remote.rs b/ext/kv/remote.rs index 21286fd47..fc18e4615 100644 --- a/ext/kv/remote.rs +++ b/ext/kv/remote.rs @@ -1,6 +1,8 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::cell::RefCell; +use std::fmt; +use std::io::Write; use std::marker::PhantomData; use std::rc::Rc; use std::sync::Arc; @@ -29,6 +31,10 @@ use deno_core::OpState; use prost::Message; use rand::Rng; use serde::Deserialize; +use termcolor::Ansi; +use termcolor::Color; +use termcolor::ColorSpec; +use termcolor::WriteColor; use tokio::sync::watch; use url::Url; use uuid::Uuid; @@ -272,12 +278,28 @@ impl<P: RemoteDbHandlerPermissions> Database for RemoteDb<P> { &self, _state: Rc<RefCell<OpState>>, ) -> Result<Self::QMH, AnyError> { + let msg = "Deno.Kv.listenQueue is not supported for remote KV databases"; + eprintln!("{}", yellow(msg)); deno_core::futures::future::pending().await } fn close(&self) {} } +fn yellow<S: AsRef<str>>(s: S) -> impl fmt::Display { + if std::env::var_os("NO_COLOR").is_some() { + return String::from(s.as_ref()); + } + let mut style_spec = ColorSpec::new(); + style_spec.set_fg(Some(Color::Yellow)); + let mut v = Vec::new(); + let mut ansi_writer = Ansi::new(&mut v); + ansi_writer.set_color(&style_spec).unwrap(); + ansi_writer.write_all(s.as_ref().as_bytes()).unwrap(); + ansi_writer.reset().unwrap(); + String::from_utf8_lossy(&v).into_owned() +} + fn decode_value( value: Vec<u8>, encoding: pb::KvValueEncoding, |