From 0f543e6a466c2f4fcd82868d85bcc8fe558da62f Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Wed, 20 Apr 2022 10:11:19 -0400 Subject: [PATCH] Add decodedMap and encodedMap helpers These allow you to generate a SourceMap object for using in another library, or for stringifying/base64 and saving into a file. --- src/trace-mapping.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/trace-mapping.ts b/src/trace-mapping.ts index f46fd75..09791cf 100644 --- a/src/trace-mapping.ts +++ b/src/trace-mapping.ts @@ -124,6 +124,20 @@ export let eachMapping: (map: TraceMap, cb: (mapping: EachMapping) => void) => v */ export let presortedDecodedMap: (map: DecodedSourceMap, mapUrl?: string) => TraceMap; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export let decodedMap: ( + map: TraceMap, +) => Omit & { mappings: readonly SourceMapSegment[][] }; + +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export let encodedMap: (map: TraceMap) => EncodedSourceMap; + export { AnyMap } from './any-map'; export class TraceMap implements SourceMap { @@ -304,6 +318,30 @@ export class TraceMap implements SourceMap { tracer._decoded = map.mappings; return tracer; }; + + decodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: decodedMappings(map), + }; + }; + + encodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: encodedMappings(map), + }; + }; } }