123456789101112131415161718192021222324252627282930313233 |
- const path = require('path')
- const sourceMap = require('source-map')
- const splitRE = /\r?\n/g
- module.exports = function generateSourceMap (script, output, filePath, content, inputMap) {
- var hashedFilename = path.basename(filePath)
- var map = new sourceMap.SourceMapGenerator()
- map.setSourceContent(hashedFilename, content)
- // check input source map from babel/coffee etc
- var inputMapConsumer = inputMap && new sourceMap.SourceMapConsumer(inputMap)
- var generatedOffset = (output ? output.split(splitRE).length : 0) + 1
- script.split(splitRE).forEach(function (line, index) {
- var ln = index + 1
- var originalLine = inputMapConsumer
- ? inputMapConsumer.originalPositionFor({ line: ln, column: 0 }).line
- : ln
- if (originalLine) {
- map.addMapping({
- source: hashedFilename,
- generated: {
- line: ln + generatedOffset,
- column: 0
- },
- original: {
- line: originalLine,
- column: 0
- }
- })
- }
- })
- map._hashedFilename = hashedFilename
- return map
- }
|