Pretty-print JSON of server snapshot

Antonio Scandurra created

Change summary

Cargo.lock                        | 30 +++++++++++++++++++++++++-----
crates/auto_update/Cargo.toml     |  2 +-
crates/collab/Cargo.toml          |  3 ++-
crates/collab/src/api.rs          |  8 ++++----
crates/command_palette/Cargo.toml |  2 +-
crates/file_finder/Cargo.toml     |  2 +-
crates/gpui/Cargo.toml            |  2 +-
crates/picker/Cargo.toml          |  2 +-
crates/project/Cargo.toml         |  2 +-
crates/project_panel/Cargo.toml   |  2 +-
crates/search/Cargo.toml          |  2 +-
crates/settings/Cargo.toml        |  2 +-
crates/theme/Cargo.toml           |  2 +-
crates/util/Cargo.toml            |  2 +-
crates/workspace/Cargo.toml       |  2 +-
crates/zed/Cargo.toml             |  4 ++--
16 files changed, 45 insertions(+), 24 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -416,6 +416,25 @@ dependencies = [
  "mime",
 ]
 
+[[package]]
+name = "axum-extra"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75330529f6b27544cedc6089108602a056d016df6aa4f2cb24408d840392ef2d"
+dependencies = [
+ "axum",
+ "bytes",
+ "http",
+ "mime",
+ "pin-project-lite 0.2.9",
+ "serde",
+ "serde_json",
+ "tower",
+ "tower-http",
+ "tower-layer",
+ "tower-service",
+]
+
 [[package]]
 name = "backtrace"
 version = "0.3.64"
@@ -593,9 +612,9 @@ checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b"
 
 [[package]]
 name = "bytes"
-version = "1.0.1"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
+checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
 
 [[package]]
 name = "cache-padded"
@@ -841,6 +860,7 @@ dependencies = [
  "async-trait",
  "async-tungstenite",
  "axum",
+ "axum-extra",
  "base64 0.13.0",
  "clap 3.1.12",
  "client",
@@ -4237,12 +4257,12 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.64"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
+checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"
 dependencies = [
  "indexmap",
- "itoa 0.4.7",
+ "itoa 1.0.1",
  "ryu",
  "serde",
 ]

crates/auto_update/Cargo.toml 🔗

@@ -18,6 +18,6 @@ isahc = "1.7"
 lazy_static = "1.4"
 log = "0.4"
 serde = { version = "1", features = ["derive"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 smol = "1.2.5"
 tempdir = "0.3.7"

crates/collab/Cargo.toml 🔗

@@ -21,6 +21,7 @@ anyhow = "1.0.40"
 async-trait = "0.1.50"
 async-tungstenite = "0.16"
 axum = { version = "0.5", features = ["json", "headers", "ws"] }
+axum-extra = { version = "0.3", features = ["erased-json"] }
 base64 = "0.13"
 clap = { version = "3.1", features = ["derive"], optional = true }
 envy = "0.4.2"
@@ -70,7 +71,7 @@ ctor = "0.1"
 env_logger = "0.8"
 util = { path = "../util" }
 lazy_static = "1.4"
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 
 [features]
 seed-support = ["clap", "lipsum", "reqwest"]

crates/collab/src/api.rs 🔗

@@ -14,8 +14,8 @@ use axum::{
     routing::{get, post, put},
     Extension, Json, Router,
 };
+use axum_extra::response::ErasedJson;
 use serde::{Deserialize, Serialize};
-use serde_json::Value;
 use std::sync::Arc;
 use tower::ServiceBuilder;
 use tracing::instrument;
@@ -179,10 +179,10 @@ async fn trace_panic(panic: Json<Panic>) -> Result<()> {
     Ok(())
 }
 
-async fn get_rpc_server_snapshot<'a>(
+async fn get_rpc_server_snapshot(
     Extension(rpc_server): Extension<Arc<rpc::Server>>,
-) -> Result<Json<Value>> {
-    Ok(Json(serde_json::to_value(rpc_server.snapshot().await)?))
+) -> Result<ErasedJson> {
+    Ok(ErasedJson::pretty(rpc_server.snapshot().await))
 }
 
 #[derive(Deserialize)]

crates/command_palette/Cargo.toml 🔗

@@ -22,7 +22,7 @@ workspace = { path = "../workspace" }
 gpui = { path = "../gpui", features = ["test-support"] }
 editor = { path = "../editor", features = ["test-support"] }
 project = { path = "../project", features = ["test-support"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 workspace = { path = "../workspace", features = ["test-support"] }
 ctor = "0.1"
 env_logger = "0.8"

crates/file_finder/Cargo.toml 🔗

@@ -21,7 +21,7 @@ postage = { version = "0.4.1", features = ["futures-traits"] }
 
 [dev-dependencies]
 gpui = { path = "../gpui", features = ["test-support"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 workspace = { path = "../workspace", features = ["test-support"] }
 ctor = "0.1"
 env_logger = "0.8"

crates/gpui/Cargo.toml 🔗

@@ -37,7 +37,7 @@ rand = "0.8.3"
 resvg = "0.14"
 seahash = "4.1"
 serde = { version = "1.0.125", features = ["derive"] }
-serde_json = "1.0.64"
+serde_json = "1.0"
 smallvec = { version = "1.6", features = ["union"] }
 smol = "1.2"
 time = { version = "0.3" }

crates/picker/Cargo.toml 🔗

@@ -17,7 +17,7 @@ workspace = { path = "../workspace" }
 
 [dev-dependencies]
 gpui = { path = "../gpui", features = ["test-support"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 workspace = { path = "../workspace", features = ["test-support"] }
 ctor = "0.1"
 env_logger = "0.8"

crates/project/Cargo.toml 🔗

@@ -41,7 +41,7 @@ postage = { version = "0.4.1", features = ["futures-traits"] }
 rand = "0.8.3"
 regex = "1.5"
 serde = { version = "1", features = ["derive"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 sha2 = "0.10"
 similar = "1.3"
 smol = "1.2.5"

crates/project_panel/Cargo.toml 🔗

@@ -23,4 +23,4 @@ unicase = "2.6"
 editor = { path = "../editor", features = ["test-support"] }
 gpui = { path = "../gpui", features = ["test-support"] }
 workspace = { path = "../workspace", features = ["test-support"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }

crates/search/Cargo.toml 🔗

@@ -26,6 +26,6 @@ smallvec = { version = "1.6", features = ["union"] }
 [dev-dependencies]
 editor = { path = "../editor", features = ["test-support"] }
 gpui = { path = "../gpui", features = ["test-support"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 workspace = { path = "../workspace", features = ["test-support"] }
 unindent = "0.1"

crates/settings/Cargo.toml 🔗

@@ -20,6 +20,6 @@ anyhow = "1.0.38"
 json_comments = "0.2"
 schemars = "0.8"
 serde = { version = "1", features = ["derive", "rc"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 serde_path_to_error = "0.1.4"
 toml = "0.5"

crates/theme/Cargo.toml 🔗

@@ -13,6 +13,6 @@ anyhow = "1.0.38"
 indexmap = "1.6.2"
 parking_lot = "0.11.1"
 serde = { version = "1", features = ["derive", "rc"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 serde_path_to_error = "0.1.4"
 toml = "0.5"

crates/util/Cargo.toml 🔗

@@ -15,6 +15,6 @@ futures = "0.3"
 log = { version = "0.4.16", features = ["kv_unstable_serde"] }
 rand = { version = "0.8", optional = true }
 tempdir = { version = "0.3.7", optional = true }
-serde_json = { version = "1.0.64", features = [
+serde_json = { version = "1.0", features = [
     "preserve_order",
 ], optional = true }

crates/workspace/Cargo.toml 🔗

@@ -26,7 +26,7 @@ log = { version = "0.4.16", features = ["kv_unstable_serde"] }
 parking_lot = "0.11.1"
 postage = { version = "0.4.1", features = ["futures-traits"] }
 serde = { version = "1", features = ["derive", "rc"] }
-serde_json = { version = "1", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 smallvec = { version = "1.6", features = ["union"] }
 
 [dev-dependencies]

crates/zed/Cargo.toml 🔗

@@ -76,7 +76,7 @@ regex = "1.5"
 rsa = "0.4"
 rust-embed = { version = "6.3", features = ["include-exclude"] }
 serde = { version = "1", features = ["derive"] }
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 serde_path_to_error = "0.1.4"
 simplelog = "0.9"
 smallvec = { version = "1.6", features = ["union"] }
@@ -107,7 +107,7 @@ settings = { path = "../settings", features = ["test-support"] }
 util = { path = "../util", features = ["test-support"] }
 workspace = { path = "../workspace", features = ["test-support"] }
 env_logger = "0.8"
-serde_json = { version = "1.0.64", features = ["preserve_order"] }
+serde_json = { version = "1.0", features = ["preserve_order"] }
 unindent = "0.1.7"
 
 [package.metadata.bundle]