pub struct LazySourceMap {
pub file: Option<String>,
pub source_root: Option<String>,
pub sources: Vec<String>,
pub sources_content: Vec<Option<String>>,
pub names: Vec<String>,
pub ignore_list: Vec<u32>,
pub extensions: HashMap<String, Value>,
pub debug_id: Option<String>,
pub scopes: Option<ScopeInfo>,
/* private fields */
}Expand description
A lazily-decoded source map that defers VLQ mappings decoding until needed.
For large source maps (100MB+), this avoids decoding all mappings upfront. JSON metadata (sources, names, etc.) is parsed eagerly, but VLQ mappings are decoded on a per-line basis on demand.
§Examples
use srcmap_sourcemap::LazySourceMap;
let json = r#"{"version":3,"sources":["input.js"],"names":[],"mappings":"AAAA;AACA"}"#;
let sm = LazySourceMap::from_json(json).unwrap();
// Mappings are only decoded when accessed
let loc = sm.original_position_for(0, 0).unwrap();
assert_eq!(sm.source(loc.source), "input.js");Fields§
§file: Option<String>§source_root: Option<String>§sources: Vec<String>§sources_content: Vec<Option<String>>§names: Vec<String>§ignore_list: Vec<u32>§extensions: HashMap<String, Value>§debug_id: Option<String>§scopes: Option<ScopeInfo>Implementations§
Source§impl LazySourceMap
impl LazySourceMap
Sourcepub fn from_json(json: &str) -> Result<Self, ParseError>
pub fn from_json(json: &str) -> Result<Self, ParseError>
Parse a source map from JSON, deferring VLQ mappings decoding.
Parses all JSON metadata eagerly but stores the raw mappings string. VLQ mappings are decoded per-line on demand.
Sourcepub fn decode_line(&self, line: u32) -> Result<Vec<Mapping>, DecodeError>
pub fn decode_line(&self, line: u32) -> Result<Vec<Mapping>, DecodeError>
Decode a single line’s mappings on demand.
Returns the cached result if the line has already been decoded. The line index is 0-based.
Sourcepub fn original_position_for(
&self,
line: u32,
column: u32,
) -> Option<OriginalLocation>
pub fn original_position_for( &self, line: u32, column: u32, ) -> Option<OriginalLocation>
Look up the original source position for a generated position.
Both line and column are 0-based.
Returns None if no mapping exists or the mapping has no source.
Sourcepub fn line_count(&self) -> usize
pub fn line_count(&self) -> usize
Number of generated lines in the source map.
Sourcepub fn source(&self, index: u32) -> &str
pub fn source(&self, index: u32) -> &str
Resolve a source index to its filename.
§Panics
Panics if index is out of bounds. Use get_source
for a non-panicking alternative.
Sourcepub fn get_source(&self, index: u32) -> Option<&str>
pub fn get_source(&self, index: u32) -> Option<&str>
Resolve a source index to its filename, returning None if out of bounds.
Sourcepub fn get_name(&self, index: u32) -> Option<&str>
pub fn get_name(&self, index: u32) -> Option<&str>
Resolve a name index to its string, returning None if out of bounds.
Sourcepub fn source_index(&self, name: &str) -> Option<u32>
pub fn source_index(&self, name: &str) -> Option<u32>
Find the source index for a filename.
Sourcepub fn mappings_for_line(&self, line: u32) -> Vec<Mapping>
pub fn mappings_for_line(&self, line: u32) -> Vec<Mapping>
Get all mappings for a line (decoding on demand).
Sourcepub fn into_sourcemap(self) -> Result<SourceMap, ParseError>
pub fn into_sourcemap(self) -> Result<SourceMap, ParseError>
Fully decode all mappings into a regular SourceMap.
Useful when you need the full map after lazy exploration.