From bcd7701bb45adecc1b836a4092b15145e633fd9b Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Tue, 5 Aug 2014 00:17:44 +0300 Subject: [PATCH] Reduced size of JSXTransformer.js by 10%. | raw | gz -------------|---------|--------- **before** | 421 641 | 84 774 **after** | 384 700 | 76 649 **diff** | 36 941 | 8 125 **diff (%)** | 9% | -10% --- vendor/browser-transforms.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/vendor/browser-transforms.js b/vendor/browser-transforms.js index f1de89e41410a..203e494a29bcc 100644 --- a/vendor/browser-transforms.js +++ b/vendor/browser-transforms.js @@ -18,7 +18,6 @@ 'use strict'; -var buffer = require('buffer'); var docblock = require('jstransform/src/docblock'); var transform = require('jstransform').transform; var visitors = require('./fbtransform/visitors'); @@ -33,6 +32,11 @@ var inlineScriptCount = 0; // the source map in that case. var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__'); +// All the modern browsers have built-in support for Base64 conversion. +// IE<=9 doesn't have support for this but it doesn't support source maps +// either, so we are fine with not generating inline maps for it. +var supportsBase64 = typeof btoa !== 'undefined'; + /** * Run provided code through jstransform. * @@ -50,7 +54,7 @@ function transformReact(source, options) { } return transform(visitorList, source, { - sourceMap: supportsAccessors + sourceMap: supportsAccessors && supportsBase64 }); } @@ -165,7 +169,7 @@ function transformCode(code, url, options) { return ( transformed.code + '\n//# sourceMappingURL=data:application/json;base64,' + - buffer.Buffer(JSON.stringify(map)).toString('base64') + btoa(unescape(encodeURIComponent(JSON.stringify(map)))) ); } else { // TODO: warn that we found a script tag missing the docblock?