Skip to main content

SourceMap

Struct SourceMap 

Source
pub struct SourceMap {
    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 fully-parsed source map with O(log n) position lookups.

Supports both regular and indexed (sectioned) source maps, ignoreList, debugId, scopes (ECMA-426), and extension fields. All positions are 0-based lines and columns.

§Construction

§Lookups

For cases where you only need a few lookups and want to avoid decoding all mappings upfront, see LazySourceMap.

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>

Extension fields (x_* keys) preserved for passthrough.

§debug_id: Option<String>

Debug ID (UUID) for associating generated files with source maps (ECMA-426).

§scopes: Option<ScopeInfo>

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

Implementations§

Source§

impl SourceMap

Source

pub fn from_json(json: &str) -> Result<Self, ParseError>

Parse a source map from a JSON string. Supports both regular and indexed (sectioned) source maps.

Source

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.

Source

pub fn original_position_for_with_bias( &self, line: u32, column: u32, bias: Bias, ) -> Option<OriginalLocation>

Look up the original source position with a search bias.

Both line and column are 0-based.

  • GreatestLowerBound: find the closest mapping at or before the column (default)
  • LeastUpperBound: find the closest mapping at or after the column
Source

pub fn generated_position_for( &self, source: &str, line: u32, column: u32, ) -> Option<GeneratedLocation>

Look up the generated position for an original source position.

source is the source filename. line and column are 0-based. Uses LeastUpperBound by default (finds first mapping at or after the position).

Source

pub fn generated_position_for_with_bias( &self, source: &str, line: u32, column: u32, bias: Bias, ) -> Option<GeneratedLocation>

Look up the generated position with a search bias.

source is the source filename. line and column are 0-based.

  • GreatestLowerBound: find the closest mapping at or before the position (default)
  • LeastUpperBound: find the closest mapping at or after the position
Source

pub fn all_generated_positions_for( &self, source: &str, line: u32, column: u32, ) -> Vec<GeneratedLocation>

Find all generated positions for an original source position.

source is the source filename. line and column are 0-based. Returns all generated positions that map back to this original location.

Source

pub fn map_range( &self, start_line: u32, start_column: u32, end_line: u32, end_column: u32, ) -> Option<MappedRange>

Map a generated range to its original range.

Given a generated range (start_line:start_column → end_line:end_column), maps both endpoints through the source map and returns the original range. Both endpoints must resolve to the same source file.

Source

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.

Source

pub fn get_source(&self, index: u32) -> Option<&str>

Resolve a source index to its filename, returning None if out of bounds.

Source

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

Resolve a name index to its string.

§Panics

Panics if index is out of bounds. Use get_name for a non-panicking alternative.

Source

pub fn get_name(&self, index: u32) -> Option<&str>

Resolve a name index to its string, returning None if out of bounds.

Source

pub fn source_index(&self, name: &str) -> Option<u32>

Find the source index for a filename.

Source

pub fn mapping_count(&self) -> usize

Total number of decoded mappings.

Source

pub fn line_count(&self) -> usize

Number of generated lines.

Source

pub fn mappings_for_line(&self, line: u32) -> &[Mapping]

Get all mappings for a generated line (0-based).

Source

pub fn all_mappings(&self) -> &[Mapping]

Iterate all mappings.

Source

pub fn to_json(&self) -> String

Serialize the source map back to JSON.

Produces a valid source map v3 JSON string that can be written to a file or embedded in a data URL.

Source

pub fn to_json_with_options(&self, exclude_content: bool) -> String

Serialize the source map back to JSON with options.

If exclude_content is true, sourcesContent is omitted from the output.

Source

pub fn from_parts( file: Option<String>, source_root: Option<String>, sources: Vec<String>, sources_content: Vec<Option<String>>, names: Vec<String>, mappings: Vec<Mapping>, ignore_list: Vec<u32>, debug_id: Option<String>, scopes: Option<ScopeInfo>, ) -> Self

Construct a SourceMap from pre-built parts.

This avoids the encode-then-decode round-trip used in composition pipelines. Mappings must be sorted by (generated_line, generated_column). Use u32::MAX for source/name fields to indicate absence.

Source

pub fn from_vlq( mappings_str: &str, sources: Vec<String>, names: Vec<String>, file: Option<String>, source_root: Option<String>, sources_content: Vec<Option<String>>, ignore_list: Vec<u32>, debug_id: Option<String>, ) -> Result<Self, ParseError>

Build a source map from pre-parsed components and a VLQ mappings string.

This is the fast path for WASM: JS does JSON.parse() (V8-native speed), then only the VLQ mappings string crosses into WASM for decoding. Avoids copying large sourcesContent into WASM linear memory.

Source

pub fn from_vlq_with_range_mappings( mappings_str: &str, sources: Vec<String>, names: Vec<String>, file: Option<String>, source_root: Option<String>, sources_content: Vec<Option<String>>, ignore_list: Vec<u32>, debug_id: Option<String>, range_mappings_str: Option<&str>, ) -> Result<Self, ParseError>

Build a source map from pre-parsed components, a VLQ mappings string, and an optional range mappings string.

Source

pub fn from_json_lines( json: &str, start_line: u32, end_line: u32, ) -> Result<Self, ParseError>

Parse a source map from JSON, decoding only mappings for lines in [start_line, end_line).

This is useful for large source maps where only a subset of lines is needed. VLQ state is maintained through skipped lines (required for correct delta decoding), but Mapping structs are only allocated for lines in the requested range.

Source

pub fn encode_mappings(&self) -> String

Encode all mappings back to a VLQ mappings string.

Source

pub fn encode_range_mappings(&self) -> Option<String>

Source

pub fn has_range_mappings(&self) -> bool

Source

pub fn range_mapping_count(&self) -> usize

Trait Implementations§

Source§

impl Clone for SourceMap

Source§

fn clone(&self) -> SourceMap

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SourceMap

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.