use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SourcemapEntry {
pub symbol: String,
#[serde(rename = "sourceFile")]
pub source_file: String,
#[serde(rename = "sourceLine")]
pub source_line: u32,
#[serde(rename = "sourceColumn")]
pub source_column: u32,
#[serde(rename = "outputFile")]
pub output_file: String,
#[serde(rename = "outputLine")]
pub output_line: u32,
#[serde(rename = "outputColumn", default)]
pub output_column: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Sourcemap {
pub version: u32,
pub entries: Vec<SourcemapEntry>,
}
impl Sourcemap {
pub fn new() -> Self {
Self {
version: 1,
entries: Vec::new(),
}
}
pub fn add_entry(&mut self, entry: SourcemapEntry) {
self.entries.push(entry);
}
pub fn to_json(&self) -> Result<String, serde_json::Error> {
serde_json::to_string_pretty(self)
}
}
impl Default for Sourcemap {
fn default() -> Self {
Self::new()
}
}