43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import buildSourceMapTree from './build-source-map-tree';
|
|
import { traceMappings } from './source-map-tree';
|
|
import SourceMap from './source-map';
|
|
|
|
import type { SourceMapInput, SourceMapLoader, Options } from './types';
|
|
export type {
|
|
SourceMapSegment,
|
|
EncodedSourceMap,
|
|
EncodedSourceMap as RawSourceMap,
|
|
DecodedSourceMap,
|
|
SourceMapInput,
|
|
SourceMapLoader,
|
|
LoaderContext,
|
|
Options,
|
|
} from './types';
|
|
export type { SourceMap };
|
|
|
|
/**
|
|
* Traces through all the mappings in the root sourcemap, through the sources
|
|
* (and their sourcemaps), all the way back to the original source location.
|
|
*
|
|
* `loader` will be called every time we encounter a source file. If it returns
|
|
* a sourcemap, we will recurse into that sourcemap to continue the trace. If
|
|
* it returns a falsey value, that source file is treated as an original,
|
|
* unmodified source file.
|
|
*
|
|
* Pass `excludeContent` to exclude any self-containing source file content
|
|
* from the output sourcemap.
|
|
*
|
|
* Pass `decodedMappings` to receive a SourceMap with decoded (instead of
|
|
* VLQ encoded) mappings.
|
|
*/
|
|
export default function remapping(
|
|
input: SourceMapInput | SourceMapInput[],
|
|
loader: SourceMapLoader,
|
|
options?: boolean | Options,
|
|
): SourceMap {
|
|
const opts =
|
|
typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
|
|
const tree = buildSourceMapTree(input, loader);
|
|
return new SourceMap(traceMappings(tree), opts);
|
|
}
|