Skip to main content

SourceMapGenerator

Struct SourceMapGenerator 

Source
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

  1. add_source — register each original file
  2. set_source_content — optionally attach content
  3. add_name — register identifier names
  4. add_mapping / add_named_mapping — add mappings
  5. to_json — serialize to JSON

Implementations§

Source§

impl SourceMapGenerator

Source

pub fn new(file: Option<String>) -> Self

Create a new empty source map generator.

Source

pub fn set_source_root(&mut self, root: impl Into<String>)

Set the source root prefix.

Source

pub fn set_debug_id(&mut self, id: impl Into<String>)

Set the debug ID (UUID) for this source map (ECMA-426).

Source

pub fn set_scopes(&mut self, scopes: ScopeInfo)

Set scope and variable information (ECMA-426 scopes proposal).

Source

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.

Source

pub fn add_source(&mut self, source: &str) -> u32

Register a source file and return its index.

Source

pub fn set_source_content( &mut self, source_idx: u32, content: impl Into<String>, )

Set the content for a source file.

Source

pub fn add_name(&mut self, name: &str) -> u32

Register a name and return its index.

Source

pub fn add_to_ignore_list(&mut self, source_idx: u32)

Add a source index to the ignore list.

Source

pub fn add_generated_mapping( &mut self, generated_line: u32, generated_column: u32, )

Add a mapping with no source information (generated-only).

Source

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.

Source

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.

Source

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).

Source

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.

Source

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.

Source

pub fn to_json(&self) -> String

Generate the source map as a JSON string.

Source

pub fn mapping_count(&self) -> usize

Get the number of mappings.

Source

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.

Trait Implementations§

Source§

impl Debug for SourceMapGenerator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.