From 1dc5d421149903f4e963e735755026d07022ac33 Mon Sep 17 00:00:00 2001 From: Igor Zinkovsky Date: Sun, 3 Sep 2023 17:47:52 -0700 Subject: fix(ext/kv): add a warning for listenQueue if used with remote KV (#20341) --- ext/kv/Cargo.toml | 1 + ext/kv/remote.rs | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'ext') 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 Database for RemoteDb

{ &self, _state: Rc>, ) -> Result { + 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: 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, encoding: pb::KvValueEncoding, -- cgit v1.2.3