diff --git a/lib/parser.js b/lib/parser.js index a904e5d..be4fe45 100755 --- a/lib/parser.js +++ b/lib/parser.js @@ -153,13 +153,20 @@ readFileContent = function (code, filename, parser, localFilename) { type = ext; sourceUrl = localFilename; if (parser.transform) { - code = deferred(parser.transform(filename, code))(function (code) { - if (code == null) { + code = deferred(parser.transform(filename, code))(function (data) { + var code; + if (data == null) { throw customError("Provided transform callback must return code string", 'INVALID_TRANSFORM'); } - if (ext !== '.js') return String(code); - return stripBOM(String(code)).replace(sheBangRe, '//$1\n'); + code = data.code || data; + if (ext !== '.js') code = String(code); + else code = stripBOM(String(code)).replace(sheBangRe, '//$1\n'); + if (parser.sourceMap && data.sourceMap) { + code += '//# sourceMappingURL=data:application/json;base64,' + + new Buffer(data.sourceMap).toString('base64') + '\n'; + } + return code; }); } else if (ext === '.js') { code = stripBOM(code).replace(sheBangRe, '//$1\n');