JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9251087
  • Score
    100M100P100Q48853F
  • License MIT

Encode/decode sourcemap mappings

Package Exports

  • sourcemap-codec

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sourcemap-codec) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

sourcemap-codec

Encode/decode the mappings property of a sourcemap.

Why?

Sourcemaps are difficult to generate and manipulate, because the mappings property – the part that actually links the generated code back to the original source – is encoded using an obscure method called Variable-length quantity. On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.

This package makes the process slightly easier.

Installation

npm install sourcemap-codec

Usage

import { encode, decode } from 'sourcemap-codec';

var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );

assert.deepEqual( decoded, [
    // the first line (of the generated code) has no mappings,
    // as shown by the starting semi-colon (which separates lines)
    [],

    // the second line contains four (comma-separated) segments
    [
        // segments are encoded as you'd expect:
        // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]

        // i.e. the first segment begins at column 2, and maps back to the second column
        // of the second line (both zero-based) of the 0th source, and uses the 0th
        // name in the `map.names` array
        [ 2, 0, 2, 2, 0 ],

        // the remaining segments are 4-length rather than 5-length,
        // because they don't map a name
        [ 4, 0, 2, 4 ],
        [ 6, 0, 2, 5 ],
        [ 7, 0, 2, 7 ]
    ],

    // the final line contains two segments
    [
        [ 2, 1, 10, 19 ],
        [ 12, 1, 11, 20 ]
    ]
]);

var encoded = encode( decoded );
assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );

License

MIT