srcmap-scopes 0.1.3

Scopes and variables decoder/encoder for source maps (ECMA-426)
Documentation
  • Coverage
  • 80%
    36 out of 45 items documented1 out of 10 items with examples
  • Size
  • Source code size: 57.18 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.36 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 12s Average build duration of successful builds.
  • all releases: 12s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • BartWaardenburg/srcmap
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • BartWaardenburg

Scopes and variables decoder/encoder for source maps (ECMA-426).

Implements the "Scopes" proposal for source maps, enabling debuggers to reconstruct original scope trees, variable bindings, and inlined function call sites from generated code.

Examples

use srcmap_scopes::{
    decode_scopes, encode_scopes, Binding, CallSite, GeneratedRange,
    OriginalScope, Position, ScopeInfo,
};

// Build scope info
let info = ScopeInfo {
    scopes: vec![Some(OriginalScope {
        start: Position { line: 0, column: 0 },
        end: Position { line: 5, column: 0 },
        name: None,
        kind: Some("global".to_string()),
        is_stack_frame: false,
        variables: vec!["x".to_string()],
        children: vec![],
    })],
    ranges: vec![GeneratedRange {
        start: Position { line: 0, column: 0 },
        end: Position { line: 5, column: 0 },
        is_stack_frame: false,
        is_hidden: false,
        definition: Some(0),
        call_site: None,
        bindings: vec![Binding::Expression("_x".to_string())],
        children: vec![],
    }],
};

// Encode
let mut names = vec!["global".to_string(), "x".to_string(), "_x".to_string()];
let encoded = encode_scopes(&info, &mut names);
assert!(!encoded.is_empty());

// Decode
let decoded = decode_scopes(&encoded, &names, 1).unwrap();
assert_eq!(decoded.scopes.len(), 1);
assert!(decoded.scopes[0].is_some());