diff --git a/crates/oxc_sourcemap/src/lib.rs b/crates/oxc_sourcemap/src/lib.rs index 0cb5e0a3d2c76..c981abbf29858 100644 --- a/crates/oxc_sourcemap/src/lib.rs +++ b/crates/oxc_sourcemap/src/lib.rs @@ -14,4 +14,4 @@ pub use error::Error; pub use sourcemap::SourceMap; pub use sourcemap_builder::SourceMapBuilder; pub use sourcemap_visualizer::SourcemapVisualizer; -pub use token::{SourceViewToken, Token}; +pub use token::{SourceViewToken, Token, TokenChunk}; diff --git a/crates/oxc_sourcemap/src/sourcemap_builder.rs b/crates/oxc_sourcemap/src/sourcemap_builder.rs index 2d77166c6eab2..033795fb5b68e 100644 --- a/crates/oxc_sourcemap/src/sourcemap_builder.rs +++ b/crates/oxc_sourcemap/src/sourcemap_builder.rs @@ -2,7 +2,10 @@ use std::sync::Arc; use rustc_hash::FxHashMap; -use crate::{token::Token, SourceMap}; +use crate::{ + token::{Token, TokenChunk}, + SourceMap, +}; /// The `SourceMapBuilder` is a helper to generate sourcemap. #[derive(Debug, Default)] @@ -14,6 +17,7 @@ pub struct SourceMapBuilder { pub(crate) sources_map: FxHashMap, u32>, pub(crate) source_contents: Vec>, pub(crate) tokens: Vec, + pub(crate) token_chunks: Option>, } #[allow(clippy::cast_possible_truncation)] @@ -66,6 +70,11 @@ impl SourceMapBuilder { self.file = Some(file.into()); } + /// Set the `SourceMap::token_chunks` to make the sourcemap to vlq mapping at parallel. + pub fn set_token_chunks(&mut self, token_chunks: Vec) { + self.token_chunks = Some(token_chunks); + } + pub fn into_sourcemap(self) -> SourceMap { SourceMap::new( self.file, @@ -74,7 +83,7 @@ impl SourceMapBuilder { self.sources, Some(self.source_contents), self.tokens, - None, + self.token_chunks, ) } }