// @flow import { SourceMapGenerator } from 'source-map' import convert from 'convert-source-map' function getGeneratorOpts(file) { return file.opts.generatorOpts ? file.opts.generatorOpts : file.opts } export function makeSourceMapGenerator(file: *) { const generatorOpts = getGeneratorOpts(file) const filename = generatorOpts.sourceFileName const generator = new SourceMapGenerator({ file: filename, sourceRoot: generatorOpts.sourceRoot }) generator.setSourceContent(filename, file.code) return generator } export function getSourceMap( offset: { line: number, column: number }, state: * ): string { const generator = makeSourceMapGenerator(state.file) const generatorOpts = getGeneratorOpts(state.file) if ( generatorOpts.sourceFileName && generatorOpts.sourceFileName !== 'unknown' ) { generator.addMapping({ generated: { line: 1, column: 0 }, source: generatorOpts.sourceFileName, original: offset }) return convert.fromObject(generator).toComment({ multiline: true }) } return '' }