diff --git a/main.js b/main.js index fc67157a3a..91de0b7609 100644 --- a/main.js +++ b/main.js @@ -2,15 +2,31 @@ var visitors = require('./vendor/fbtransform/visitors'); var transform = require('jstransform').transform; +var Buffer = require('buffer').Buffer; module.exports = { - transform: function(code, options) { - var visitorList; - if (options && options.harmony) { - visitorList = visitors.getAllVisitors(); - } else { - visitorList = visitors.transformVisitors.react; + React: React, + transform: function(input, options) { + options = options || {}; + var result = transform(visitors.react, input, options); + var output = result.code; + if (options.sourceMap) { + var map = inlineSourceMap( + result.sourceMap, + input, + options.sourceFilename + ); + output += '\n' + map; } - return transform(visitorList, code).code; + return output; } }; + +function inlineSourceMap(sourceMap, sourceCode, sourceFilename) { + var json = sourceMap.toJSON(); + json.sources = [ sourceFilename ]; + json.sourcesContent = [ sourceCode ]; + var base64 = Buffer(JSON.stringify(json)).toString('base64'); + return '//# sourceMappingURL=data:application/json;base64,' + + base64; +}