use std::io::{self, Read, Write};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut input = String::new();
io::stdin().read_to_string(&mut input)?;
let timestamp = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)?
.as_secs();
let filename = format!("debug_input_{timestamp}.json");
std::fs::write(&filename, &input)?;
eprintln!("Debug preprocessor: Saved input to {filename}");
eprintln!("Input size: {} bytes", input.len());
match serde_json::from_str::<serde_json::Value>(&input) {
Ok(value) => {
eprintln!("JSON is valid");
if let Some(array) = value.as_array() {
eprintln!("Top-level array with {} elements", array.len());
if array.len() >= 2 {
if let Some(context) = array[0].as_object() {
eprintln!("Context keys: {:?}", context.keys().collect::<Vec<_>>());
}
if let Some(book) = array[1].as_object() {
eprintln!("Book keys: {:?}", book.keys().collect::<Vec<_>>());
}
}
}
}
Err(e) => {
eprintln!("JSON parse error: {e}");
}
}
io::stdout().write_all(input.as_bytes())?;
io::stdout().flush()?;
Ok(())
}