| 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); |
| } |