From 2aa92b2ed3ced032dc60021d23c159910c154d45 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 16 Jan 2013 11:16:20 -0500 Subject: [PATCH] Update to use APIs from new versions of fibers and uglify-js. Combine files before minimizing. minimongo - subkey sort fails when minized, so clearly there is some sort of uglify bug. --- app/lib/bundler.js | 27 +++++-------------- app/server/server.js | 2 +- examples/other/quiescence/quiescence.js | 2 ++ .../accounts-oauth-helper/oauth_server.js | 1 + packages/livedata/livedata_server.js | 2 ++ packages/meteor/dynamics_nodejs.js | 2 ++ packages/meteor/fiber_helpers_test.js | 2 ++ packages/mongo-livedata/mongo_driver.js | 1 + .../mongo-livedata/mongo_livedata_tests.js | 1 + packages/tinytest/tinytest_server.js | 1 + 10 files changed, 20 insertions(+), 21 deletions(-) diff --git a/app/lib/bundler.js b/app/lib/bundler.js index 64aca59bbd..a5ee2d0315 100644 --- a/app/lib/bundler.js +++ b/app/lib/bundler.js @@ -378,36 +378,23 @@ _.extend(Bundle.prototype, { var self = this; /// Javascript - var code_parts = []; + var codeParts = []; _.each(self.js.client, function (js_path) { - var code = self.files.client[js_path].toString('utf8'); + codeParts.push(self.files.client[js_path].toString('utf8')); - // Uglify has a bug -- it will incorrectly minifiy files that - // contain the 'debugger' statement. - // https://github.com/mishoo/UglifyJS/issues/243 - // For now, just skip minification of such files. - // XXX fix uglify, and once that happens, go back to - // concatenating before minifying, rather than vice versa - // https://app.asana.com/0/159908330244/522242142181 - if (!(code.match(/debugger/))) { - var ast = uglify.parser.parse(code); - ast = uglify.uglify.ast_mangle(ast); - ast = uglify.uglify.ast_squeeze(ast); - code = uglify.uglify.gen_code(ast); - } - - code_parts.push(code); delete self.files.client[js_path]; }); - var final_code = code_parts.join('\n;\n'); + var combinedCode = codeParts.join('\n;\n'); + var finalCode = uglify.minify( + combinedCode, {fromString: true, compress: {drop_debugger: false}}).code; var hash = crypto.createHash('sha1'); - hash.update(final_code); + hash.update(finalCode); var digest = hash.digest('hex'); var name = path.sep + digest + ".js"; - self.files.client_cacheable[name] = new Buffer(final_code); + self.files.client_cacheable[name] = new Buffer(finalCode); self.js.client = [name]; /// CSS diff --git a/app/server/server.js b/app/server/server.js index 78121555c5..f536bb6a6a 100644 --- a/app/server/server.js +++ b/app/server/server.js @@ -1,6 +1,6 @@ ////////// Requires ////////// -require("fibers"); +var Fiber = require("fibers"); var fs = require("fs"); var path = require("path"); diff --git a/examples/other/quiescence/quiescence.js b/examples/other/quiescence/quiescence.js index 5058999618..c0e7e779fc 100644 --- a/examples/other/quiescence/quiescence.js +++ b/examples/other/quiescence/quiescence.js @@ -31,6 +31,8 @@ if (Meteor.isServer) { } }); + var Fiber = __meteor_bootstrap__.require('fibers'); + var sleep = function (ms) { var fiber = Fiber.current; setTimeout(function() { diff --git a/packages/accounts-oauth-helper/oauth_server.js b/packages/accounts-oauth-helper/oauth_server.js index 24824b7b91..7feea25e99 100644 --- a/packages/accounts-oauth-helper/oauth_server.js +++ b/packages/accounts-oauth-helper/oauth_server.js @@ -69,6 +69,7 @@ return result; }); + var Fiber = __meteor_bootstrap__.require('fibers'); // Listen to incoming OAuth http requests __meteor_bootstrap__.app .use(connect.query()) diff --git a/packages/livedata/livedata_server.js b/packages/livedata/livedata_server.js index f95a7b9628..e625b29ff6 100644 --- a/packages/livedata/livedata_server.js +++ b/packages/livedata/livedata_server.js @@ -1,3 +1,5 @@ +var Fiber = __meteor_bootstrap__.require('fibers'); + /******************************************************************************/ /* LivedataSession */ /******************************************************************************/ diff --git a/packages/meteor/dynamics_nodejs.js b/packages/meteor/dynamics_nodejs.js index 01ff545175..97bb1dadef 100644 --- a/packages/meteor/dynamics_nodejs.js +++ b/packages/meteor/dynamics_nodejs.js @@ -2,6 +2,8 @@ (function () { + var Fiber = __meteor_bootstrap__.require('fibers'); + var nextSlot = 0; Meteor.EnvironmentVariable = function () { diff --git a/packages/meteor/fiber_helpers_test.js b/packages/meteor/fiber_helpers_test.js index 5a09d2160e..509d16c965 100644 --- a/packages/meteor/fiber_helpers_test.js +++ b/packages/meteor/fiber_helpers_test.js @@ -1,3 +1,5 @@ +var Fiber = __meteor_bootstrap__.require('fibers'); + Tinytest.add("fibers - synchronous queue", function (test) { var q = new Meteor._SynchronousQueue; var output = []; diff --git a/packages/mongo-livedata/mongo_driver.js b/packages/mongo-livedata/mongo_driver.js index bda3fc6432..f44efb4b73 100644 --- a/packages/mongo-livedata/mongo_driver.js +++ b/packages/mongo-livedata/mongo_driver.js @@ -10,6 +10,7 @@ var path = __meteor_bootstrap__.require('path'); var MongoDB = __meteor_bootstrap__.require('mongodb'); +var Fiber = __meteor_bootstrap__.require('fibers'); var Future = __meteor_bootstrap__.require(path.join('fibers', 'future')); _Mongo = function (url) { diff --git a/packages/mongo-livedata/mongo_livedata_tests.js b/packages/mongo-livedata/mongo_livedata_tests.js index 9e728f5da6..ab4e22bb2a 100644 --- a/packages/mongo-livedata/mongo_livedata_tests.js +++ b/packages/mongo-livedata/mongo_livedata_tests.js @@ -108,6 +108,7 @@ Tinytest.addAsync("mongo-livedata - basics", function (test, onComplete) { // sleep function from fibers docs. var sleep = function(ms) { + var Fiber = __meteor_bootstrap__.require('fibers'); var fiber = Fiber.current; setTimeout(function() { fiber.run(); diff --git a/packages/tinytest/tinytest_server.js b/packages/tinytest/tinytest_server.js index b7d274448f..29225507dd 100644 --- a/packages/tinytest/tinytest_server.js +++ b/packages/tinytest/tinytest_server.js @@ -1,4 +1,5 @@ (function () { + var Fiber = __meteor_bootstrap__.require('fibers'); var handlesForRun = {}; var reportsForRun = {};