pub struct SourceMapGenerator { /* private fields */ }Expand description
Builder for creating source maps incrementally.
Register sources and names first (they return indices), then add mappings that reference those indices. Mappings should be added in generated-position order, though the builder does not require it.
Sources and names are automatically deduplicated.
§Workflow
add_source— register each original fileset_source_content— optionally attach contentadd_name— register identifier namesadd_mapping/add_named_mapping— add mappingsto_json— serialize to JSON
Implementations§
Source§impl SourceMapGenerator
impl SourceMapGenerator
Sourcepub fn set_source_root(&mut self, root: impl Into<String>)
pub fn set_source_root(&mut self, root: impl Into<String>)
Set the source root prefix.
Sourcepub fn set_debug_id(&mut self, id: impl Into<String>)
pub fn set_debug_id(&mut self, id: impl Into<String>)
Set the debug ID (UUID) for this source map (ECMA-426).
Sourcepub fn set_scopes(&mut self, scopes: ScopeInfo)
pub fn set_scopes(&mut self, scopes: ScopeInfo)
Set scope and variable information (ECMA-426 scopes proposal).
Sourcepub fn set_assume_sorted(&mut self, sorted: bool)
pub fn set_assume_sorted(&mut self, sorted: bool)
Assume mappings are already sorted by (generated_line, generated_column).
When set to true, encode_mappings and
to_decoded_map skip the sort step, avoiding
both the O(n log n) sort and the Vec<&Mapping> allocation.
Most bundlers add mappings in order, so this is a safe optimization
in the common case.
Sourcepub fn add_source(&mut self, source: &str) -> u32
pub fn add_source(&mut self, source: &str) -> u32
Register a source file and return its index.
Sourcepub fn set_source_content(
&mut self,
source_idx: u32,
content: impl Into<String>,
)
pub fn set_source_content( &mut self, source_idx: u32, content: impl Into<String>, )
Set the content for a source file.
Sourcepub fn add_to_ignore_list(&mut self, source_idx: u32)
pub fn add_to_ignore_list(&mut self, source_idx: u32)
Add a source index to the ignore list.
Sourcepub fn add_generated_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
)
pub fn add_generated_mapping( &mut self, generated_line: u32, generated_column: u32, )
Add a mapping with no source information (generated-only).
Sourcepub fn add_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
source: u32,
original_line: u32,
original_column: u32,
)
pub fn add_mapping( &mut self, generated_line: u32, generated_column: u32, source: u32, original_line: u32, original_column: u32, )
Add a mapping from generated position to original position.
Sourcepub fn add_named_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
source: u32,
original_line: u32,
original_column: u32,
name: u32,
)
pub fn add_named_mapping( &mut self, generated_line: u32, generated_column: u32, source: u32, original_line: u32, original_column: u32, name: u32, )
Add a mapping with a name.
Sourcepub fn add_range_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
source: u32,
original_line: u32,
original_column: u32,
)
pub fn add_range_mapping( &mut self, generated_line: u32, generated_column: u32, source: u32, original_line: u32, original_column: u32, )
Add a range mapping from generated position to original position.
A range mapping maps every position from its generated position up to
(but not including) the next mapping, applying a proportional delta
to the original position (ECMA-426 rangeMappings proposal).
Sourcepub fn add_named_range_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
source: u32,
original_line: u32,
original_column: u32,
name: u32,
)
pub fn add_named_range_mapping( &mut self, generated_line: u32, generated_column: u32, source: u32, original_line: u32, original_column: u32, name: u32, )
Add a named range mapping.
Sourcepub fn maybe_add_mapping(
&mut self,
generated_line: u32,
generated_column: u32,
source: u32,
original_line: u32,
original_column: u32,
) -> bool
pub fn maybe_add_mapping( &mut self, generated_line: u32, generated_column: u32, source: u32, original_line: u32, original_column: u32, ) -> bool
Add a mapping only if it differs from the previous mapping on the same line.
This skips redundant mappings where the source position is identical to the last mapping, which reduces output size without losing information. Used by bundlers and minifiers to avoid bloating source maps.
Sourcepub fn mapping_count(&self) -> usize
pub fn mapping_count(&self) -> usize
Get the number of mappings.
Sourcepub fn to_decoded_map(&self) -> SourceMap
pub fn to_decoded_map(&self) -> SourceMap
Directly construct a SourceMap from the generator’s internal state.
This avoids the encode-then-decode round-trip (VLQ encode to JSON string, then re-parse) that would otherwise be needed in composition pipelines.