File size: 1,237 Bytes
f56a29b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 'use strict';
var acorn = require('acorn');
var postcss = require('postcss');
var SourceMapGenerator = require('source-map').SourceMapGenerator;
function generateJs(sourcePath, fileContent) {
var generator = new SourceMapGenerator({ file: sourcePath });
var tokenizer = acorn.tokenizer(fileContent, {
allowHashBang: true,
locations: true,
});
/* eslint no-constant-condition: 0 */
while (true) {
var token = tokenizer.getToken();
if (token.type.label === 'eof') {
break;
}
var mapping = {
original: token.loc.start,
generated: token.loc.start,
source: sourcePath,
};
if (token.type.label === 'name') {
mapping.name = token.value;
}
generator.addMapping(mapping);
}
generator.setSourceContent(sourcePath, fileContent);
return generator.toJSON();
}
var postcssSourceMapOptions = {
inline: false,
prev: false,
sourcesContent: true,
annotation: false,
};
function generateCss(sourcePath, fileContent) {
var root = postcss.parse(fileContent, { from: sourcePath });
var result = root.toResult({ to: sourcePath, map: postcssSourceMapOptions });
return result.map.toJSON();
}
module.exports = {
js: generateJs,
css: generateCss,
};
|