Skip to main content

Crate srcmap_hermes

Crate srcmap_hermes 

Source
Expand description

Hermes/React Native source map support.

React Native uses the Hermes JavaScript engine, and Metro (the RN bundler) produces source maps with Facebook-specific extensions:

  • x_facebook_sources — VLQ-encoded function scope mappings per source
  • x_facebook_offsets — byte offsets for modules in a RAM bundle
  • x_metro_module_paths — module paths for Metro bundles

This crate wraps a regular SourceMap and adds scope resolution for Hermes function maps, similar to getsentry/rust-sourcemap’s SourceMapHermes.

§Examples

use srcmap_hermes::SourceMapHermes;

let json = r#"{
  "version": 3,
  "sources": ["input.js"],
  "names": [],
  "mappings": "AAAA",
  "x_facebook_sources": [
    [{"names": ["<global>", "foo"], "mappings": "AAA,CCA"}]
  ]
}"#;

let sm = SourceMapHermes::from_json(json).unwrap();
assert!(sm.get_function_map(0).is_some());

Structs§

HermesFunctionMap
Function map for a single source file. Contains function names and their scope boundaries.
HermesScopeOffset
A scope offset in Hermes function maps. Represents the start position of a function scope in the generated code.
SourceMapHermes
A Hermes-enhanced source map wrapping a regular SourceMap. Adds function scope information from Metro/Hermes extensions.

Enums§

HermesError
Errors that can occur when parsing a Hermes source map.