You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pm...@apache.org on 2014/09/04 14:37:10 UTC

[08/15] pre-compile CoffeeScript files in server

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/register.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/register.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/register.js
new file mode 100644
index 0000000..b1d75ca
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/register.js
@@ -0,0 +1,66 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, loadFile, path, _i, _len, _ref;
+
+  CoffeeScript = require('./coffee-script');
+
+  child_process = require('child_process');
+
+  helpers = require('./helpers');
+
+  path = require('path');
+
+  loadFile = function(module, filename) {
+    var answer;
+    answer = CoffeeScript._compileFile(filename, false);
+    return module._compile(answer, filename);
+  };
+
+  if (require.extensions) {
+    _ref = CoffeeScript.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      ext = _ref[_i];
+      require.extensions[ext] = loadFile;
+    }
+    Module = require('module');
+    findExtension = function(filename) {
+      var curExtension, extensions;
+      extensions = path.basename(filename).split('.');
+      if (extensions[0] === '') {
+        extensions.shift();
+      }
+      while (extensions.shift()) {
+        curExtension = '.' + extensions.join('.');
+        if (Module._extensions[curExtension]) {
+          return curExtension;
+        }
+      }
+      return '.js';
+    };
+    Module.prototype.load = function(filename) {
+      var extension;
+      this.filename = filename;
+      this.paths = Module._nodeModulePaths(path.dirname(filename));
+      extension = findExtension(filename);
+      Module._extensions[extension](this, filename);
+      return this.loaded = true;
+    };
+  }
+
+  if (child_process) {
+    fork = child_process.fork;
+    binary = require.resolve('../../bin/coffee');
+    child_process.fork = function(path, args, options) {
+      if (helpers.isCoffee(path)) {
+        if (!Array.isArray(args)) {
+          options = args || {};
+          args = [];
+        }
+        args = [path].concat(args);
+        path = binary;
+      }
+      return fork(path, args, options);
+    };
+  }
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/repl.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/repl.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/repl.js
index b4a4765..9f06977 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/repl.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/repl.js
@@ -1,261 +1,176 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
-  var ACCESSOR, CoffeeScript, Module, REPL_PROMPT, REPL_PROMPT_CONTINUATION, REPL_PROMPT_MULTILINE, SIMPLEVAR, Script, autocomplete, backlog, completeAttribute, completeVariable, enableColours, error, getCompletions, inspect, multilineMode, pipedInput, readline, repl, run, stdin, stdout;
+  var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, replDefaults, updateSyntaxError, vm, _ref;
 
-  stdin = process.openStdin();
+  fs = require('fs');
 
-  stdout = process.stdout;
+  path = require('path');
 
-  CoffeeScript = require('./coffee-script');
-
-  readline = require('readline');
-
-  inspect = require('util').inspect;
-
-  Script = require('vm').Script;
-
-  Module = require('module');
-
-  REPL_PROMPT = 'coffee> ';
-
-  REPL_PROMPT_MULTILINE = '------> ';
-
-  REPL_PROMPT_CONTINUATION = '......> ';
-
-  enableColours = false;
+  vm = require('vm');
 
-  if (process.platform !== 'win32') {
-    enableColours = !process.env.NODE_DISABLE_COLORS;
-  }
+  nodeREPL = require('repl');
 
-  error = function(err) {
-    return stdout.write((err.stack || err.toString()) + '\n');
-  };
-
-  ACCESSOR = /\s*([\w\.]+)(?:\.(\w*))$/;
-
-  SIMPLEVAR = /(\w+)$/i;
-
-  autocomplete = function(text) {
-    return completeAttribute(text) || completeVariable(text) || [[], text];
-  };
+  CoffeeScript = require('./coffee-script');
 
-  completeAttribute = function(text) {
-    var all, completions, key, match, obj, possibilities, prefix, val;
-    if (match = text.match(ACCESSOR)) {
-      all = match[0], obj = match[1], prefix = match[2];
+  _ref = require('./helpers'), merge = _ref.merge, updateSyntaxError = _ref.updateSyntaxError;
+
+  replDefaults = {
+    prompt: 'coffee> ',
+    historyFile: process.env.HOME ? path.join(process.env.HOME, '.coffee_history') : void 0,
+    historyMaxInputSize: 10240,
+    "eval": function(input, context, filename, cb) {
+      var Assign, Block, Literal, Value, ast, err, js, result, _ref1;
+      input = input.replace(/\uFF00/g, '\n');
+      input = input.replace(/^\(([\s\S]*)\n\)$/m, '$1');
+      _ref1 = require('./nodes'), Block = _ref1.Block, Assign = _ref1.Assign, Value = _ref1.Value, Literal = _ref1.Literal;
       try {
-        val = Script.runInThisContext(obj);
-      } catch (error) {
-        return;
-      }
-      val = Object(val);
-      possibilities = Object.getOwnPropertyNames(val);
-      for (key in val) {
-        if (~possibilities.indexOf(val)) {
-          possibilities.push(key);
-        }
+        ast = CoffeeScript.nodes(input);
+        ast = new Block([new Assign(new Value(new Literal('_')), ast, '=')]);
+        js = ast.compile({
+          bare: true,
+          locals: Object.keys(context)
+        });
+        result = context === global ? vm.runInThisContext(js, filename) : vm.runInContext(js, context, filename);
+        return cb(null, result);
+      } catch (_error) {
+        err = _error;
+        updateSyntaxError(err, input);
+        return cb(err);
       }
-      completions = getCompletions(prefix, possibilities);
-      return [completions, prefix];
     }
   };
 
-  completeVariable = function(text) {
-    var completions, free, keywords, possibilities, r, vars, _ref;
-    free = (_ref = text.match(SIMPLEVAR)) != null ? _ref[1] : void 0;
-    if (text === "") {
-      free = "";
-    }
-    if (free != null) {
-      vars = Script.runInThisContext('Object.getOwnPropertyNames(Object(this))');
-      keywords = (function() {
-        var _i, _len, _ref1, _results;
-        _ref1 = CoffeeScript.RESERVED;
-        _results = [];
-        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-          r = _ref1[_i];
-          if (r.slice(0, 2) !== '__') {
-            _results.push(r);
-          }
+  addMultilineHandler = function(repl) {
+    var inputStream, multiline, nodeLineListener, origPrompt, outputStream, rli, _ref1;
+    rli = repl.rli, inputStream = repl.inputStream, outputStream = repl.outputStream;
+    origPrompt = (_ref1 = repl._prompt) != null ? _ref1 : repl.prompt;
+    multiline = {
+      enabled: false,
+      initialPrompt: origPrompt.replace(/^[^> ]*/, function(x) {
+        return x.replace(/./g, '-');
+      }),
+      prompt: origPrompt.replace(/^[^> ]*>?/, function(x) {
+        return x.replace(/./g, '.');
+      }),
+      buffer: ''
+    };
+    nodeLineListener = rli.listeners('line')[0];
+    rli.removeListener('line', nodeLineListener);
+    rli.on('line', function(cmd) {
+      if (multiline.enabled) {
+        multiline.buffer += "" + cmd + "\n";
+        rli.setPrompt(multiline.prompt);
+        rli.prompt(true);
+      } else {
+        rli.setPrompt(origPrompt);
+        nodeLineListener(cmd);
+      }
+    });
+    return inputStream.on('keypress', function(char, key) {
+      if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) {
+        return;
+      }
+      if (multiline.enabled) {
+        if (!multiline.buffer.match(/\n/)) {
+          multiline.enabled = !multiline.enabled;
+          rli.setPrompt(origPrompt);
+          rli.prompt(true);
+          return;
         }
-        return _results;
-      })();
-      possibilities = vars.concat(keywords);
-      completions = getCompletions(free, possibilities);
-      return [completions, free];
-    }
-  };
-
-  getCompletions = function(prefix, candidates) {
-    var el, _i, _len, _results;
-    _results = [];
-    for (_i = 0, _len = candidates.length; _i < _len; _i++) {
-      el = candidates[_i];
-      if (el.indexOf(prefix) === 0) {
-        _results.push(el);
+        if ((rli.line != null) && !rli.line.match(/^\s*$/)) {
+          return;
+        }
+        multiline.enabled = !multiline.enabled;
+        rli.line = '';
+        rli.cursor = 0;
+        rli.output.cursorTo(0);
+        rli.output.clearLine(1);
+        multiline.buffer = multiline.buffer.replace(/\n/g, '\uFF00');
+        rli.emit('line', multiline.buffer);
+        multiline.buffer = '';
+      } else {
+        multiline.enabled = !multiline.enabled;
+        rli.setPrompt(multiline.initialPrompt);
+        rli.prompt(true);
       }
-    }
-    return _results;
+    });
   };
 
-  process.on('uncaughtException', error);
-
-  backlog = '';
-
-  run = function(buffer) {
-    var code, returnValue, _;
-    buffer = buffer.replace(/(^|[\r\n]+)(\s*)##?(?:[^#\r\n][^\r\n]*|)($|[\r\n])/, "$1$2$3");
-    buffer = buffer.replace(/[\r\n]+$/, "");
-    if (multilineMode) {
-      backlog += "" + buffer + "\n";
-      repl.setPrompt(REPL_PROMPT_CONTINUATION);
-      repl.prompt();
-      return;
-    }
-    if (!buffer.toString().trim() && !backlog) {
-      repl.prompt();
-      return;
-    }
-    code = backlog += buffer;
-    if (code[code.length - 1] === '\\') {
-      backlog = "" + backlog.slice(0, -1) + "\n";
-      repl.setPrompt(REPL_PROMPT_CONTINUATION);
-      repl.prompt();
-      return;
-    }
-    repl.setPrompt(REPL_PROMPT);
-    backlog = '';
+  addHistory = function(repl, filename, maxSize) {
+    var buffer, fd, lastLine, readFd, size, stat;
+    lastLine = null;
     try {
-      _ = global._;
-      returnValue = CoffeeScript["eval"]("_=(" + code + "\n)", {
-        filename: 'repl',
-        modulename: 'repl'
-      });
-      if (returnValue === void 0) {
-        global._ = _;
+      stat = fs.statSync(filename);
+      size = Math.min(maxSize, stat.size);
+      readFd = fs.openSync(filename, 'r');
+      buffer = new Buffer(size);
+      fs.readSync(readFd, buffer, 0, size, stat.size - size);
+      repl.rli.history = buffer.toString().split('\n').reverse();
+      if (stat.size > maxSize) {
+        repl.rli.history.pop();
       }
-      repl.output.write("" + (inspect(returnValue, false, 2, enableColours)) + "\n");
-    } catch (err) {
-      error(err);
-    }
-    return repl.prompt();
-  };
-
-  if (stdin.readable) {
-    pipedInput = '';
-    repl = {
-      prompt: function() {
-        return stdout.write(this._prompt);
-      },
-      setPrompt: function(p) {
-        return this._prompt = p;
-      },
-      input: stdin,
-      output: stdout,
-      on: function() {}
-    };
-    stdin.on('data', function(chunk) {
-      var line, lines, _i, _len, _ref;
-      pipedInput += chunk;
-      if (!/\n/.test(pipedInput)) {
-        return;
+      if (repl.rli.history[0] === '') {
+        repl.rli.history.shift();
       }
-      lines = pipedInput.split("\n");
-      pipedInput = lines[lines.length - 1];
-      _ref = lines.slice(0, -1);
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        line = _ref[_i];
-        if (!(line)) {
-          continue;
-        }
-        stdout.write("" + line + "\n");
-        run(line);
+      repl.rli.historyIndex = -1;
+      lastLine = repl.rli.history[0];
+    } catch (_error) {}
+    fd = fs.openSync(filename, 'a');
+    repl.rli.addListener('line', function(code) {
+      if (code && code.length && code !== '.history' && lastLine !== code) {
+        fs.write(fd, "" + code + "\n");
+        return lastLine = code;
       }
     });
-    stdin.on('end', function() {
-      var line, _i, _len, _ref;
-      _ref = pipedInput.trim().split("\n");
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        line = _ref[_i];
-        if (!(line)) {
-          continue;
-        }
-        stdout.write("" + line + "\n");
-        run(line);
-      }
-      stdout.write('\n');
-      return process.exit(0);
+    repl.rli.on('exit', function() {
+      return fs.close(fd);
     });
-  } else {
-    if (readline.createInterface.length < 3) {
-      repl = readline.createInterface(stdin, autocomplete);
-      stdin.on('data', function(buffer) {
-        return repl.write(buffer);
-      });
-    } else {
-      repl = readline.createInterface(stdin, stdout, autocomplete);
-    }
-  }
-
-  multilineMode = false;
-
-  repl.input.on('keypress', function(char, key) {
-    var cursorPos, newPrompt;
-    if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) {
-      return;
-    }
-    cursorPos = repl.cursor;
-    repl.output.cursorTo(0);
-    repl.output.clearLine(1);
-    multilineMode = !multilineMode;
-    if (!multilineMode && backlog) {
-      repl._line();
-    }
-    backlog = '';
-    repl.setPrompt((newPrompt = multilineMode ? REPL_PROMPT_MULTILINE : REPL_PROMPT));
-    repl.prompt();
-    return repl.output.cursorTo(newPrompt.length + (repl.cursor = cursorPos));
-  });
-
-  repl.input.on('keypress', function(char, key) {
-    if (!(multilineMode && repl.line)) {
-      return;
-    }
-    if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'd')) {
-      return;
-    }
-    multilineMode = false;
-    return repl._line();
-  });
+    return repl.commands[getCommandId(repl, 'history')] = {
+      help: 'Show command history',
+      action: function() {
+        repl.outputStream.write("" + (repl.rli.history.slice(0).reverse().join('\n')) + "\n");
+        return repl.displayPrompt();
+      }
+    };
+  };
 
-  repl.on('attemptClose', function() {
-    if (multilineMode) {
-      multilineMode = false;
-      repl.output.cursorTo(0);
-      repl.output.clearLine(1);
-      repl._onLine(repl.line);
-      return;
-    }
-    if (backlog) {
-      backlog = '';
-      repl.output.write('\n');
-      repl.setPrompt(REPL_PROMPT);
-      return repl.prompt();
+  getCommandId = function(repl, commandName) {
+    var commandsHaveLeadingDot;
+    commandsHaveLeadingDot = repl.commands['.help'] != null;
+    if (commandsHaveLeadingDot) {
+      return "." + commandName;
     } else {
-      return repl.close();
+      return commandName;
     }
-  });
-
-  repl.on('close', function() {
-    repl.output.write('\n');
-    return repl.input.destroy();
-  });
-
-  repl.on('line', run);
-
-  repl.setPrompt(REPL_PROMPT);
+  };
 
-  repl.prompt();
+  module.exports = {
+    start: function(opts) {
+      var build, major, minor, repl, _ref1;
+      if (opts == null) {
+        opts = {};
+      }
+      _ref1 = process.versions.node.split('.').map(function(n) {
+        return parseInt(n);
+      }), major = _ref1[0], minor = _ref1[1], build = _ref1[2];
+      if (major === 0 && minor < 8) {
+        console.warn("Node 0.8.0+ required for CoffeeScript REPL");
+        process.exit(1);
+      }
+      CoffeeScript.register();
+      process.argv = ['coffee'].concat(process.argv.slice(2));
+      opts = merge(replDefaults, opts);
+      repl = nodeREPL.start(opts);
+      repl.on('exit', function() {
+        return repl.outputStream.write('\n');
+      });
+      addMultilineHandler(repl);
+      if (opts.historyFile) {
+        addHistory(repl, opts.historyFile, opts.historyMaxInputSize);
+      }
+      repl.commands[getCommandId(repl, 'load')].help = 'Load code from a file into this REPL session';
+      return repl;
+    }
+  };
 
 }).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/rewriter.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/rewriter.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/rewriter.js
index d26133c..c5f228a 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/rewriter.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/rewriter.js
@@ -1,23 +1,31 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
-  var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, left, rite, _i, _len, _ref,
+  var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, left, rite, _i, _len, _ref,
     __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
     __slice = [].slice;
 
-  exports.Rewriter = (function() {
+  generate = function(tag, value, origin) {
+    var tok;
+    tok = [tag, value];
+    tok.generated = true;
+    if (origin) {
+      tok.origin = origin;
+    }
+    return tok;
+  };
 
+  exports.Rewriter = (function() {
     function Rewriter() {}
 
     Rewriter.prototype.rewrite = function(tokens) {
       this.tokens = tokens;
       this.removeLeadingNewlines();
-      this.removeMidExpressionNewlines();
       this.closeOpenCalls();
       this.closeOpenIndexes();
-      this.addImplicitIndentation();
+      this.normalizeLines();
       this.tagPostfixConditionals();
-      this.addImplicitBraces();
-      this.addImplicitParentheses();
+      this.addImplicitBracesAndParens();
+      this.addLocationDataToGeneratedTokens();
       return this.tokens;
     };
 
@@ -66,17 +74,6 @@
       }
     };
 
-    Rewriter.prototype.removeMidExpressionNewlines = function() {
-      return this.scanTokens(function(token, i, tokens) {
-        var _ref;
-        if (!(token[0] === 'TERMINATOR' && (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0))) {
-          return 1;
-        }
-        tokens.splice(i, 1);
-        return 0;
-      });
-    };
-
     Rewriter.prototype.closeOpenCalls = function() {
       var action, condition;
       condition = function(token, i) {
@@ -111,144 +108,276 @@
       });
     };
 
-    Rewriter.prototype.addImplicitBraces = function() {
-      var action, condition, sameLine, stack, start, startIndent, startIndex, startsLine;
-      stack = [];
-      start = null;
-      startsLine = null;
-      sameLine = true;
-      startIndent = 0;
-      startIndex = 0;
-      condition = function(token, i) {
-        var one, tag, three, two, _ref, _ref1;
-        _ref = this.tokens.slice(i + 1, (i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2];
-        if ('HERECOMMENT' === (one != null ? one[0] : void 0)) {
-          return false;
+    Rewriter.prototype.matchTags = function() {
+      var fuzz, i, j, pattern, _i, _ref, _ref1;
+      i = arguments[0], pattern = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      fuzz = 0;
+      for (j = _i = 0, _ref = pattern.length; 0 <= _ref ? _i < _ref : _i > _ref; j = 0 <= _ref ? ++_i : --_i) {
+        while (this.tag(i + j + fuzz) === 'HERECOMMENT') {
+          fuzz += 2;
         }
-        tag = token[0];
-        if (__indexOf.call(LINEBREAKS, tag) >= 0) {
-          sameLine = false;
+        if (pattern[j] == null) {
+          continue;
         }
-        return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine && !(i - startIndex === 1))) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT'));
-      };
-      action = function(token, i) {
-        var tok;
-        tok = this.generate('}', '}', token[2]);
-        return this.tokens.splice(i, 0, tok);
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var ago, idx, prevTag, tag, tok, value, _ref, _ref1;
-        if (_ref = (tag = token[0]), __indexOf.call(EXPRESSION_START, _ref) >= 0) {
-          stack.push([(tag === 'INDENT' && this.tag(i - 1) === '{' ? '{' : tag), i]);
-          return 1;
+        if (typeof pattern[j] === 'string') {
+          pattern[j] = [pattern[j]];
         }
-        if (__indexOf.call(EXPRESSION_END, tag) >= 0) {
-          start = stack.pop();
-          return 1;
+        if (_ref1 = this.tag(i + j + fuzz), __indexOf.call(pattern[j], _ref1) < 0) {
+          return false;
         }
-        if (!(tag === ':' && ((ago = this.tag(i - 2)) === ':' || ((_ref1 = stack[stack.length - 1]) != null ? _ref1[0] : void 0) !== '{'))) {
-          return 1;
+      }
+      return true;
+    };
+
+    Rewriter.prototype.looksObjectish = function(j) {
+      return this.matchTags(j, '@', null, ':') || this.matchTags(j, null, ':');
+    };
+
+    Rewriter.prototype.findTagsBackwards = function(i, tags) {
+      var backStack, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
+      backStack = [];
+      while (i >= 0 && (backStack.length || (_ref2 = this.tag(i), __indexOf.call(tags, _ref2) < 0) && ((_ref3 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref3) < 0) || this.tokens[i].generated) && (_ref4 = this.tag(i), __indexOf.call(LINEBREAKS, _ref4) < 0))) {
+        if (_ref = this.tag(i), __indexOf.call(EXPRESSION_END, _ref) >= 0) {
+          backStack.push(this.tag(i));
         }
-        sameLine = true;
-        startIndex = i + 1;
-        stack.push(['{']);
-        idx = ago === '@' ? i - 2 : i - 1;
-        while (this.tag(idx - 2) === 'HERECOMMENT') {
-          idx -= 2;
+        if ((_ref1 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref1) >= 0) && backStack.length) {
+          backStack.pop();
         }
-        prevTag = this.tag(idx - 1);
-        startsLine = !prevTag || (__indexOf.call(LINEBREAKS, prevTag) >= 0);
-        value = new String('{');
-        value.generated = true;
-        tok = this.generate('{', value, token[2]);
-        tokens.splice(idx, 0, tok);
-        this.detectEnd(i + 2, condition, action);
-        return 2;
-      });
+        i -= 1;
+      }
+      return _ref5 = this.tag(i), __indexOf.call(tags, _ref5) >= 0;
     };
 
-    Rewriter.prototype.addImplicitParentheses = function() {
-      var action, condition, noCall, seenControl, seenSingle;
-      noCall = seenSingle = seenControl = false;
-      condition = function(token, i) {
-        var post, tag, _ref, _ref1;
+    Rewriter.prototype.addImplicitBracesAndParens = function() {
+      var stack;
+      stack = [];
+      return this.scanTokens(function(token, i, tokens) {
+        var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, newLine, nextTag, offset, prevTag, prevToken, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
         tag = token[0];
-        if (!seenSingle && token.fromThen) {
-          return true;
+        prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0];
+        nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0];
+        stackTop = function() {
+          return stack[stack.length - 1];
+        };
+        startIdx = i;
+        forward = function(n) {
+          return i - startIdx + n;
+        };
+        inImplicit = function() {
+          var _ref, _ref1;
+          return (_ref = stackTop()) != null ? (_ref1 = _ref[2]) != null ? _ref1.ours : void 0 : void 0;
+        };
+        inImplicitCall = function() {
+          var _ref;
+          return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '(';
+        };
+        inImplicitObject = function() {
+          var _ref;
+          return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '{';
+        };
+        inImplicitControl = function() {
+          var _ref;
+          return inImplicit && ((_ref = stackTop()) != null ? _ref[0] : void 0) === 'CONTROL';
+        };
+        startImplicitCall = function(j) {
+          var idx;
+          idx = j != null ? j : i;
+          stack.push([
+            '(', idx, {
+              ours: true
+            }
+          ]);
+          tokens.splice(idx, 0, generate('CALL_START', '('));
+          if (j == null) {
+            return i += 1;
+          }
+        };
+        endImplicitCall = function() {
+          stack.pop();
+          tokens.splice(i, 0, generate('CALL_END', ')'));
+          return i += 1;
+        };
+        startImplicitObject = function(j, startsLine) {
+          var idx;
+          if (startsLine == null) {
+            startsLine = true;
+          }
+          idx = j != null ? j : i;
+          stack.push([
+            '{', idx, {
+              sameLine: true,
+              startsLine: startsLine,
+              ours: true
+            }
+          ]);
+          tokens.splice(idx, 0, generate('{', generate(new String('{')), token));
+          if (j == null) {
+            return i += 1;
+          }
+        };
+        endImplicitObject = function(j) {
+          j = j != null ? j : i;
+          stack.pop();
+          tokens.splice(j, 0, generate('}', '}', token));
+          return i += 1;
+        };
+        if (inImplicitCall() && (tag === 'IF' || tag === 'TRY' || tag === 'FINALLY' || tag === 'CATCH' || tag === 'CLASS' || tag === 'SWITCH')) {
+          stack.push([
+            'CONTROL', i, {
+              ours: true
+            }
+          ]);
+          return forward(1);
         }
-        if (tag === 'IF' || tag === 'ELSE' || tag === 'CATCH' || tag === '->' || tag === '=>' || tag === 'CLASS') {
-          seenSingle = true;
+        if (tag === 'INDENT' && inImplicit()) {
+          if (prevTag !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'TRY' && prevTag !== 'ELSE' && prevTag !== '=') {
+            while (inImplicitCall()) {
+              endImplicitCall();
+            }
+          }
+          if (inImplicitControl()) {
+            stack.pop();
+          }
+          stack.push([tag, i]);
+          return forward(1);
         }
-        if (tag === 'IF' || tag === 'ELSE' || tag === 'SWITCH' || tag === 'TRY' || tag === '=') {
-          seenControl = true;
+        if (__indexOf.call(EXPRESSION_START, tag) >= 0) {
+          stack.push([tag, i]);
+          return forward(1);
         }
-        if ((tag === '.' || tag === '?.' || tag === '::') && this.tag(i - 1) === 'OUTDENT') {
-          return true;
+        if (__indexOf.call(EXPRESSION_END, tag) >= 0) {
+          while (inImplicit()) {
+            if (inImplicitCall()) {
+              endImplicitCall();
+            } else if (inImplicitObject()) {
+              endImplicitObject();
+            } else {
+              stack.pop();
+            }
+          }
+          stack.pop();
         }
-        return !token.generated && this.tag(i - 1) !== ',' && (__indexOf.call(IMPLICIT_END, tag) >= 0 || (tag === 'INDENT' && !seenControl)) && (tag !== 'INDENT' || (((_ref = this.tag(i - 2)) !== 'CLASS' && _ref !== 'EXTENDS') && (_ref1 = this.tag(i - 1), __indexOf.call(IMPLICIT_BLOCK, _ref1) < 0) && !((post = this.tokens[i + 1]) && post.generated && post[0] === '{')));
-      };
-      action = function(token, i) {
-        return this.tokens.splice(i, 0, this.generate('CALL_END', ')', token[2]));
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var callObject, current, next, prev, tag, _ref, _ref1, _ref2;
-        tag = token[0];
-        if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR' || tag === 'WHILE') {
-          noCall = true;
+        if ((__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced && !token.stringEnd || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (__indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || __indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !((_ref = tokens[i + 1]) != null ? _ref.spaced : void 0) && !((_ref1 = tokens[i + 1]) != null ? _ref1.newLine : void 0))) {
+          if (tag === '?') {
+            tag = token[0] = 'FUNC_EXIST';
+          }
+          startImplicitCall(i + 1);
+          return forward(2);
+        }
+        if (__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.matchTags(i + 1, 'INDENT', null, ':') && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])) {
+          startImplicitCall(i + 1);
+          stack.push(['INDENT', i + 2]);
+          return forward(3);
         }
-        _ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
-        callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref1 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref1) >= 0);
-        seenSingle = false;
-        seenControl = false;
-        if (__indexOf.call(LINEBREAKS, tag) >= 0) {
-          noCall = false;
+        if (tag === ':') {
+          if (this.tag(i - 2) === '@') {
+            s = i - 2;
+          } else {
+            s = i - 1;
+          }
+          while (this.tag(s - 2) === 'HERECOMMENT') {
+            s -= 2;
+          }
+          this.insideForDeclaration = nextTag === 'FOR';
+          startsLine = s === 0 || (_ref2 = this.tag(s - 1), __indexOf.call(LINEBREAKS, _ref2) >= 0) || tokens[s - 1].newLine;
+          if (stackTop()) {
+            _ref3 = stackTop(), stackTag = _ref3[0], stackIdx = _ref3[1];
+            if ((stackTag === '{' || stackTag === 'INDENT' && this.tag(stackIdx - 1) === '{') && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{')) {
+              return forward(1);
+            }
+          }
+          startImplicitObject(s, !!startsLine);
+          return forward(2);
         }
-        if (prev && !prev.spaced && tag === '?') {
-          token.call = true;
+        if (inImplicitObject() && __indexOf.call(LINEBREAKS, tag) >= 0) {
+          stackTop()[2].sameLine = false;
+        }
+        newLine = prevTag === 'OUTDENT' || prevToken.newLine;
+        if (__indexOf.call(IMPLICIT_END, tag) >= 0 || __indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) {
+          while (inImplicit()) {
+            _ref4 = stackTop(), stackTag = _ref4[0], stackIdx = _ref4[1], (_ref5 = _ref4[2], sameLine = _ref5.sameLine, startsLine = _ref5.startsLine);
+            if (inImplicitCall() && prevTag !== ',') {
+              endImplicitCall();
+            } else if (inImplicitObject() && !this.insideForDeclaration && sameLine && tag !== 'TERMINATOR' && prevTag !== ':' && endImplicitObject()) {
+
+            } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) {
+              endImplicitObject();
+            } else {
+              break;
+            }
+          }
+        }
+        if (tag === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && !this.insideForDeclaration && (nextTag !== 'TERMINATOR' || !this.looksObjectish(i + 2))) {
+          offset = nextTag === 'OUTDENT' ? 1 : 0;
+          while (inImplicitObject()) {
+            endImplicitObject(i + offset);
+          }
         }
-        if (token.fromThen) {
+        return forward(1);
+      });
+    };
+
+    Rewriter.prototype.addLocationDataToGeneratedTokens = function() {
+      return this.scanTokens(function(token, i, tokens) {
+        var column, line, nextLocation, prevLocation, _ref, _ref1;
+        if (token[2]) {
           return 1;
         }
-        if (!(callObject || (prev != null ? prev.spaced : void 0) && (prev.call || (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0)) && (__indexOf.call(IMPLICIT_CALL, tag) >= 0 || !(token.spaced || token.newLine) && __indexOf.call(IMPLICIT_UNSPACED_CALL, tag) >= 0))) {
+        if (!(token.generated || token.explicit)) {
           return 1;
         }
-        tokens.splice(i, 0, this.generate('CALL_START', '(', token[2]));
-        this.detectEnd(i + 1, condition, action);
-        if (prev[0] === '?') {
-          prev[0] = 'FUNC_EXIST';
+        if (token[0] === '{' && (nextLocation = (_ref = tokens[i + 1]) != null ? _ref[2] : void 0)) {
+          line = nextLocation.first_line, column = nextLocation.first_column;
+        } else if (prevLocation = (_ref1 = tokens[i - 1]) != null ? _ref1[2] : void 0) {
+          line = prevLocation.last_line, column = prevLocation.last_column;
+        } else {
+          line = column = 0;
         }
-        return 2;
+        token[2] = {
+          first_line: line,
+          first_column: column,
+          last_line: line,
+          last_column: column
+        };
+        return 1;
       });
     };
 
-    Rewriter.prototype.addImplicitIndentation = function() {
+    Rewriter.prototype.normalizeLines = function() {
       var action, condition, indent, outdent, starter;
       starter = indent = outdent = null;
       condition = function(token, i) {
-        var _ref;
-        return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'ELSE' && (starter !== 'IF' && starter !== 'THEN'));
+        var _ref, _ref1, _ref2, _ref3;
+        return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'TERMINATOR' && (_ref1 = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((_ref2 = token[0]) === 'CATCH' || _ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (_ref3 = token[0], __indexOf.call(CALL_CLOSERS, _ref3) >= 0) && this.tokens[i - 1].newLine;
       };
       action = function(token, i) {
         return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
       };
       return this.scanTokens(function(token, i, tokens) {
-        var tag, _ref, _ref1;
+        var j, tag, _i, _ref, _ref1, _ref2;
         tag = token[0];
-        if (tag === 'TERMINATOR' && this.tag(i + 1) === 'THEN') {
-          tokens.splice(i, 1);
-          return 0;
-        }
-        if (tag === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
-          tokens.splice.apply(tokens, [i, 0].concat(__slice.call(this.indentation(token))));
-          return 2;
+        if (tag === 'TERMINATOR') {
+          if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
+            tokens.splice.apply(tokens, [i, 1].concat(__slice.call(this.indentation())));
+            return 1;
+          }
+          if (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0) {
+            tokens.splice(i, 1);
+            return 0;
+          }
         }
-        if (tag === 'CATCH' && ((_ref = this.tag(i + 2)) === 'OUTDENT' || _ref === 'TERMINATOR' || _ref === 'FINALLY')) {
-          tokens.splice.apply(tokens, [i + 2, 0].concat(__slice.call(this.indentation(token))));
-          return 4;
+        if (tag === 'CATCH') {
+          for (j = _i = 1; _i <= 2; j = ++_i) {
+            if (!((_ref1 = this.tag(i + j)) === 'OUTDENT' || _ref1 === 'TERMINATOR' || _ref1 === 'FINALLY')) {
+              continue;
+            }
+            tokens.splice.apply(tokens, [i + j, 0].concat(__slice.call(this.indentation())));
+            return 2 + j;
+          }
         }
         if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
           starter = tag;
-          _ref1 = this.indentation(token, true), indent = _ref1[0], outdent = _ref1[1];
+          _ref2 = this.indentation(tokens[i]), indent = _ref2[0], outdent = _ref2[1];
           if (starter === 'THEN') {
             indent.fromThen = true;
           }
@@ -267,8 +396,10 @@
       var action, condition, original;
       original = null;
       condition = function(token, i) {
-        var _ref;
-        return (_ref = token[0]) === 'TERMINATOR' || _ref === 'INDENT';
+        var prevTag, tag;
+        tag = token[0];
+        prevTag = this.tokens[i - 1][0];
+        return tag === 'TERMINATOR' || (tag === 'INDENT' && __indexOf.call(SINGLE_LINERS, prevTag) < 0);
       };
       action = function(token, i) {
         if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
@@ -285,25 +416,20 @@
       });
     };
 
-    Rewriter.prototype.indentation = function(token, implicit) {
+    Rewriter.prototype.indentation = function(origin) {
       var indent, outdent;
-      if (implicit == null) {
-        implicit = false;
-      }
-      indent = ['INDENT', 2, token[2]];
-      outdent = ['OUTDENT', 2, token[2]];
-      if (implicit) {
+      indent = ['INDENT', 2];
+      outdent = ['OUTDENT', 2];
+      if (origin) {
         indent.generated = outdent.generated = true;
+        indent.origin = outdent.origin = origin;
+      } else {
+        indent.explicit = outdent.explicit = true;
       }
       return [indent, outdent];
     };
 
-    Rewriter.prototype.generate = function(tag, value, line) {
-      var tok;
-      tok = [tag, value, line];
-      tok.generated = true;
-      return tok;
-    };
+    Rewriter.prototype.generate = generate;
 
     Rewriter.prototype.tag = function(i) {
       var _ref;
@@ -328,16 +454,14 @@
     EXPRESSION_END.push(INVERSES[left] = rite);
   }
 
-  EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
+  EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
 
   IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
 
-  IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++'];
+  IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'UNARY_MATH', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++'];
 
   IMPLICIT_UNSPACED_CALL = ['+', '-'];
 
-  IMPLICIT_BLOCK = ['->', '=>', '{', '[', ','];
-
   IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];
 
   SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];
@@ -346,4 +470,6 @@
 
   LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
 
+  CALL_CLOSERS = ['.', '?.', '::', '?::'];
+
 }).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/scope.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/scope.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/scope.js
index 3efc4ed..cb43b02 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/scope.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/scope.js
@@ -1,11 +1,10 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
   var Scope, extend, last, _ref;
 
   _ref = require('./helpers'), extend = _ref.extend, last = _ref.last;
 
   exports.Scope = Scope = (function() {
-
     Scope.root = null;
 
     function Scope(parent, expressions, method) {
@@ -39,7 +38,8 @@
     };
 
     Scope.prototype.namedMethod = function() {
-      if (this.method.name || !this.parent) {
+      var _ref1;
+      if (((_ref1 = this.method) != null ? _ref1.name : void 0) || !this.parent) {
         return this.method;
       }
       return this.parent.namedMethod();

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/sourcemap.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/sourcemap.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/sourcemap.js
new file mode 100644
index 0000000..c94ebd1
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/sourcemap.js
@@ -0,0 +1,161 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var LineMap, SourceMap;
+
+  LineMap = (function() {
+    function LineMap(line) {
+      this.line = line;
+      this.columns = [];
+    }
+
+    LineMap.prototype.add = function(column, _arg, options) {
+      var sourceColumn, sourceLine;
+      sourceLine = _arg[0], sourceColumn = _arg[1];
+      if (options == null) {
+        options = {};
+      }
+      if (this.columns[column] && options.noReplace) {
+        return;
+      }
+      return this.columns[column] = {
+        line: this.line,
+        column: column,
+        sourceLine: sourceLine,
+        sourceColumn: sourceColumn
+      };
+    };
+
+    LineMap.prototype.sourceLocation = function(column) {
+      var mapping;
+      while (!((mapping = this.columns[column]) || (column <= 0))) {
+        column--;
+      }
+      return mapping && [mapping.sourceLine, mapping.sourceColumn];
+    };
+
+    return LineMap;
+
+  })();
+
+  SourceMap = (function() {
+    var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;
+
+    function SourceMap() {
+      this.lines = [];
+    }
+
+    SourceMap.prototype.add = function(sourceLocation, generatedLocation, options) {
+      var column, line, lineMap, _base;
+      if (options == null) {
+        options = {};
+      }
+      line = generatedLocation[0], column = generatedLocation[1];
+      lineMap = ((_base = this.lines)[line] || (_base[line] = new LineMap(line)));
+      return lineMap.add(column, sourceLocation, options);
+    };
+
+    SourceMap.prototype.sourceLocation = function(_arg) {
+      var column, line, lineMap;
+      line = _arg[0], column = _arg[1];
+      while (!((lineMap = this.lines[line]) || (line <= 0))) {
+        line--;
+      }
+      return lineMap && lineMap.sourceLocation(column);
+    };
+
+    SourceMap.prototype.generate = function(options, code) {
+      var buffer, lastColumn, lastSourceColumn, lastSourceLine, lineMap, lineNumber, mapping, needComma, v3, writingline, _i, _j, _len, _len1, _ref, _ref1;
+      if (options == null) {
+        options = {};
+      }
+      if (code == null) {
+        code = null;
+      }
+      writingline = 0;
+      lastColumn = 0;
+      lastSourceLine = 0;
+      lastSourceColumn = 0;
+      needComma = false;
+      buffer = "";
+      _ref = this.lines;
+      for (lineNumber = _i = 0, _len = _ref.length; _i < _len; lineNumber = ++_i) {
+        lineMap = _ref[lineNumber];
+        if (lineMap) {
+          _ref1 = lineMap.columns;
+          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+            mapping = _ref1[_j];
+            if (!(mapping)) {
+              continue;
+            }
+            while (writingline < mapping.line) {
+              lastColumn = 0;
+              needComma = false;
+              buffer += ";";
+              writingline++;
+            }
+            if (needComma) {
+              buffer += ",";
+              needComma = false;
+            }
+            buffer += this.encodeVlq(mapping.column - lastColumn);
+            lastColumn = mapping.column;
+            buffer += this.encodeVlq(0);
+            buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);
+            lastSourceLine = mapping.sourceLine;
+            buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);
+            lastSourceColumn = mapping.sourceColumn;
+            needComma = true;
+          }
+        }
+      }
+      v3 = {
+        version: 3,
+        file: options.generatedFile || '',
+        sourceRoot: options.sourceRoot || '',
+        sources: options.sourceFiles || [''],
+        names: [],
+        mappings: buffer
+      };
+      if (options.inline) {
+        v3.sourcesContent = [code];
+      }
+      return JSON.stringify(v3, null, 2);
+    };
+
+    VLQ_SHIFT = 5;
+
+    VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
+
+    VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
+
+    SourceMap.prototype.encodeVlq = function(value) {
+      var answer, nextChunk, signBit, valueToEncode;
+      answer = '';
+      signBit = value < 0 ? 1 : 0;
+      valueToEncode = (Math.abs(value) << 1) + signBit;
+      while (valueToEncode || !answer) {
+        nextChunk = valueToEncode & VLQ_VALUE_MASK;
+        valueToEncode = valueToEncode >> VLQ_SHIFT;
+        if (valueToEncode) {
+          nextChunk |= VLQ_CONTINUATION_BIT;
+        }
+        answer += this.encodeBase64(nextChunk);
+      }
+      return answer;
+    };
+
+    BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+    SourceMap.prototype.encodeBase64 = function(value) {
+      return BASE64_CHARS[value] || (function() {
+        throw new Error("Cannot Base64 encode value: " + value);
+      })();
+    };
+
+    return SourceMap;
+
+  })();
+
+  module.exports = SourceMap;
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.npmignore
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.npmignore b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.npmignore
new file mode 100644
index 0000000..9303c34
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.npmignore
@@ -0,0 +1,2 @@
+node_modules/
+npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.travis.yml
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.travis.yml b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.travis.yml
new file mode 100644
index 0000000..84fd7ca
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+  - 0.6
+  - 0.8
+  - 0.9

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/LICENSE
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/LICENSE b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/LICENSE
new file mode 100644
index 0000000..432d1ae
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/LICENSE
@@ -0,0 +1,21 @@
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js
new file mode 100644
index 0000000..e692421
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js
@@ -0,0 +1,6 @@
+var mkdirp = require('mkdirp');
+
+mkdirp('/tmp/foo/bar/baz', function (err) {
+    if (err) console.error(err)
+    else console.log('pow!')
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/index.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/index.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/index.js
new file mode 100644
index 0000000..fda6de8
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/index.js
@@ -0,0 +1,82 @@
+var path = require('path');
+var fs = require('fs');
+
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+
+function mkdirP (p, mode, f, made) {
+    if (typeof mode === 'function' || mode === undefined) {
+        f = mode;
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    var cb = f || function () {};
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    fs.mkdir(p, mode, function (er) {
+        if (!er) {
+            made = made || p;
+            return cb(null, made);
+        }
+        switch (er.code) {
+            case 'ENOENT':
+                mkdirP(path.dirname(p), mode, function (er, made) {
+                    if (er) cb(er, made);
+                    else mkdirP(p, mode, cb, made);
+                });
+                break;
+
+            // In the case of any other error, just see if there's a dir
+            // there already.  If so, then hooray!  If not, then something
+            // is borked.
+            default:
+                fs.stat(p, function (er2, stat) {
+                    // if the stat fails, then that's super weird.
+                    // let the original error be the failure reason.
+                    if (er2 || !stat.isDirectory()) cb(er, made)
+                    else cb(null, made);
+                });
+                break;
+        }
+    });
+}
+
+mkdirP.sync = function sync (p, mode, made) {
+    if (mode === undefined) {
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    try {
+        fs.mkdirSync(p, mode);
+        made = made || p;
+    }
+    catch (err0) {
+        switch (err0.code) {
+            case 'ENOENT' :
+                made = sync(path.dirname(p), mode, made);
+                sync(p, mode, made);
+                break;
+
+            // In the case of any other error, just see if there's a dir
+            // there already.  If so, then hooray!  If not, then something
+            // is borked.
+            default:
+                var stat;
+                try {
+                    stat = fs.statSync(p);
+                }
+                catch (err1) {
+                    throw err0;
+                }
+                if (!stat.isDirectory()) throw err0;
+                break;
+        }
+    }
+
+    return made;
+};

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/package.json
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/package.json b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/package.json
new file mode 100644
index 0000000..221a22e
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/package.json
@@ -0,0 +1,34 @@
+{
+  "name": "mkdirp",
+  "description": "Recursively mkdir, like `mkdir -p`",
+  "version": "0.3.5",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "main": "./index",
+  "keywords": [
+    "mkdir",
+    "directory"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/substack/node-mkdirp.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "devDependencies": {
+    "tap": "~0.4.0"
+  },
+  "license": "MIT",
+  "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it def
 aults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
+  "readmeFilename": "readme.markdown",
+  "bugs": {
+    "url": "https://github.com/substack/node-mkdirp/issues"
+  },
+  "homepage": "https://github.com/substack/node-mkdirp",
+  "_id": "mkdirp@0.3.5",
+  "_from": "mkdirp@~0.3.5"
+}

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/readme.markdown
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/readme.markdown b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/readme.markdown
new file mode 100644
index 0000000..83b0216
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/readme.markdown
@@ -0,0 +1,63 @@
+# mkdirp
+
+Like `mkdir -p`, but in node.js!
+
+[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
+
+# example
+
+## pow.js
+
+```js
+var mkdirp = require('mkdirp');
+    
+mkdirp('/tmp/foo/bar/baz', function (err) {
+    if (err) console.error(err)
+    else console.log('pow!')
+});
+```
+
+Output
+
+```
+pow!
+```
+
+And now /tmp/foo/bar/baz exists, huzzah!
+
+# methods
+
+```js
+var mkdirp = require('mkdirp');
+```
+
+## mkdirp(dir, mode, cb)
+
+Create a new directory and any necessary subdirectories at `dir` with octal
+permission string `mode`.
+
+If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+
+`cb(err, made)` fires with the error or the first directory `made`
+that had to be created, if any.
+
+## mkdirp.sync(dir, mode)
+
+Synchronously create a new directory and any necessary subdirectories at `dir`
+with octal permission string `mode`.
+
+If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+
+Returns the first directory that had to be created, if any.
+
+# install
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install mkdirp
+```
+
+# license
+
+MIT

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js
new file mode 100644
index 0000000..520dcb8
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js
@@ -0,0 +1,38 @@
+var mkdirp = require('../').mkdirp;
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+var ps = [ '', 'tmp' ];
+
+for (var i = 0; i < 25; i++) {
+    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    ps.push(dir);
+}
+
+var file = ps.join('/');
+
+test('chmod-pre', function (t) {
+    var mode = 0744
+    mkdirp(file, mode, function (er) {
+        t.ifError(er, 'should not error');
+        fs.stat(file, function (er, stat) {
+            t.ifError(er, 'should exist');
+            t.ok(stat && stat.isDirectory(), 'should be directory');
+            t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
+            t.end();
+        });
+    });
+});
+
+test('chmod', function (t) {
+    var mode = 0755
+    mkdirp(file, mode, function (er) {
+        t.ifError(er, 'should not error');
+        fs.stat(file, function (er, stat) {
+            t.ifError(er, 'should exist');
+            t.ok(stat && stat.isDirectory(), 'should be directory');
+            t.end();
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js
new file mode 100644
index 0000000..0eb7099
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js
@@ -0,0 +1,37 @@
+var mkdirp = require('../').mkdirp;
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+var ps = [ '', 'tmp' ];
+
+for (var i = 0; i < 25; i++) {
+    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    ps.push(dir);
+}
+
+var file = ps.join('/');
+
+// a file in the way
+var itw = ps.slice(0, 3).join('/');
+
+
+test('clobber-pre', function (t) {
+    console.error("about to write to "+itw)
+    fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
+
+    fs.stat(itw, function (er, stat) {
+        t.ifError(er)
+        t.ok(stat && stat.isFile(), 'should be file')
+        t.end()
+    })
+})
+
+test('clobber', function (t) {
+    t.plan(2);
+    mkdirp(file, 0755, function (err) {
+        t.ok(err);
+        t.equal(err.code, 'ENOTDIR');
+        t.end();
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js
new file mode 100644
index 0000000..b07cd70
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js
@@ -0,0 +1,28 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('woo', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    
+    var file = '/tmp/' + [x,y,z].join('/');
+    
+    mkdirp(file, 0755, function (err) {
+        if (err) t.fail(err);
+        else path.exists(file, function (ex) {
+            if (!ex) t.fail('file not created')
+            else fs.stat(file, function (err, stat) {
+                if (err) t.fail(err)
+                else {
+                    t.equal(stat.mode & 0777, 0755);
+                    t.ok(stat.isDirectory(), 'target not a directory');
+                    t.end();
+                }
+            })
+        })
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm.js
new file mode 100644
index 0000000..23a7abb
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm.js
@@ -0,0 +1,32 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('async perm', function (t) {
+    t.plan(2);
+    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
+    
+    mkdirp(file, 0755, function (err) {
+        if (err) t.fail(err);
+        else path.exists(file, function (ex) {
+            if (!ex) t.fail('file not created')
+            else fs.stat(file, function (err, stat) {
+                if (err) t.fail(err)
+                else {
+                    t.equal(stat.mode & 0777, 0755);
+                    t.ok(stat.isDirectory(), 'target not a directory');
+                    t.end();
+                }
+            })
+        })
+    });
+});
+
+test('async root perm', function (t) {
+    mkdirp('/tmp', 0755, function (err) {
+        if (err) t.fail(err);
+        t.end();
+    });
+    t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js
new file mode 100644
index 0000000..f685f60
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js
@@ -0,0 +1,39 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('sync perm', function (t) {
+    t.plan(2);
+    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
+    
+    mkdirp.sync(file, 0755);
+    path.exists(file, function (ex) {
+        if (!ex) t.fail('file not created')
+        else fs.stat(file, function (err, stat) {
+            if (err) t.fail(err)
+            else {
+                t.equal(stat.mode & 0777, 0755);
+                t.ok(stat.isDirectory(), 'target not a directory');
+                t.end();
+            }
+        })
+    });
+});
+
+test('sync root perm', function (t) {
+    t.plan(1);
+    
+    var file = '/tmp';
+    mkdirp.sync(file, 0755);
+    path.exists(file, function (ex) {
+        if (!ex) t.fail('file not created')
+        else fs.stat(file, function (err, stat) {
+            if (err) t.fail(err)
+            else {
+                t.ok(stat.isDirectory(), 'target not a directory');
+                t.end();
+            }
+        })
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/race.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/race.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/race.js
new file mode 100644
index 0000000..96a0447
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/race.js
@@ -0,0 +1,41 @@
+var mkdirp = require('../').mkdirp;
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('race', function (t) {
+    t.plan(4);
+    var ps = [ '', 'tmp' ];
+    
+    for (var i = 0; i < 25; i++) {
+        var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+        ps.push(dir);
+    }
+    var file = ps.join('/');
+    
+    var res = 2;
+    mk(file, function () {
+        if (--res === 0) t.end();
+    });
+    
+    mk(file, function () {
+        if (--res === 0) t.end();
+    });
+    
+    function mk (file, cb) {
+        mkdirp(file, 0755, function (err) {
+            if (err) t.fail(err);
+            else path.exists(file, function (ex) {
+                if (!ex) t.fail('file not created')
+                else fs.stat(file, function (err, stat) {
+                    if (err) t.fail(err)
+                    else {
+                        t.equal(stat.mode & 0777, 0755);
+                        t.ok(stat.isDirectory(), 'target not a directory');
+                        if (cb) cb();
+                    }
+                })
+            })
+        });
+    }
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/rel.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/rel.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/rel.js
new file mode 100644
index 0000000..7985824
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/rel.js
@@ -0,0 +1,32 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('rel', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    
+    var cwd = process.cwd();
+    process.chdir('/tmp');
+    
+    var file = [x,y,z].join('/');
+    
+    mkdirp(file, 0755, function (err) {
+        if (err) t.fail(err);
+        else path.exists(file, function (ex) {
+            if (!ex) t.fail('file not created')
+            else fs.stat(file, function (err, stat) {
+                if (err) t.fail(err)
+                else {
+                    process.chdir(cwd);
+                    t.equal(stat.mode & 0777, 0755);
+                    t.ok(stat.isDirectory(), 'target not a directory');
+                    t.end();
+                }
+            })
+        })
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return.js
new file mode 100644
index 0000000..bce68e5
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return.js
@@ -0,0 +1,25 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', function (t) {
+    t.plan(4);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+    var file = '/tmp/' + [x,y,z].join('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    mkdirp(file, function (err, made) {
+        t.ifError(err);
+        t.equal(made, '/tmp/' + x);
+        mkdirp(file, function (err, made) {
+          t.ifError(err);
+          t.equal(made, null);
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js
new file mode 100644
index 0000000..7c222d3
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js
@@ -0,0 +1,24 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+    var file = '/tmp/' + [x,y,z].join('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    // Note that this will throw on failure, which will fail the test.
+    var made = mkdirp.sync(file);
+    t.equal(made, '/tmp/' + x);
+
+    // making the same file again should have no effect.
+    made = mkdirp.sync(file);
+    t.equal(made, null);
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/root.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/root.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/root.js
new file mode 100644
index 0000000..97ad7a2
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/root.js
@@ -0,0 +1,18 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('root', function (t) {
+    // '/' on unix, 'c:/' on windows.
+    var file = path.resolve('/');
+
+    mkdirp(file, 0755, function (err) {
+        if (err) throw err
+        fs.stat(file, function (er, stat) {
+            if (er) throw er
+            t.ok(stat.isDirectory(), 'target is a directory');
+            t.end();
+        })
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/sync.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/sync.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/sync.js
new file mode 100644
index 0000000..7530cad
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/sync.js
@@ -0,0 +1,32 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('sync', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+    var file = '/tmp/' + [x,y,z].join('/');
+
+    try {
+        mkdirp.sync(file, 0755);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    path.exists(file, function (ex) {
+        if (!ex) t.fail('file not created')
+        else fs.stat(file, function (err, stat) {
+            if (err) t.fail(err)
+            else {
+                t.equal(stat.mode & 0777, 0755);
+                t.ok(stat.isDirectory(), 'target not a directory');
+                t.end();
+            }
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask.js
new file mode 100644
index 0000000..64ccafe
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask.js
@@ -0,0 +1,28 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('implicit mode from umask', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    
+    var file = '/tmp/' + [x,y,z].join('/');
+    
+    mkdirp(file, function (err) {
+        if (err) t.fail(err);
+        else path.exists(file, function (ex) {
+            if (!ex) t.fail('file not created')
+            else fs.stat(file, function (err, stat) {
+                if (err) t.fail(err)
+                else {
+                    t.equal(stat.mode & 0777, 0777 & (~process.umask()));
+                    t.ok(stat.isDirectory(), 'target not a directory');
+                    t.end();
+                }
+            })
+        })
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js
new file mode 100644
index 0000000..35bd5cb
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js
@@ -0,0 +1,32 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('umask sync modes', function (t) {
+    t.plan(2);
+    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+    var file = '/tmp/' + [x,y,z].join('/');
+
+    try {
+        mkdirp.sync(file);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    path.exists(file, function (ex) {
+        if (!ex) t.fail('file not created')
+        else fs.stat(file, function (err, stat) {
+            if (err) t.fail(err)
+            else {
+                t.equal(stat.mode & 0777, (0777 & (~process.umask())));
+                t.ok(stat.isDirectory(), 'target not a directory');
+                t.end();
+            }
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/package.json
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/package.json b/weinre.server/node_modules/coffee-script/package.json
index a8a9363..b266aa8 100644
--- a/weinre.server/node_modules/coffee-script/package.json
+++ b/weinre.server/node_modules/coffee-script/package.json
@@ -10,15 +10,10 @@
   "author": {
     "name": "Jeremy Ashkenas"
   },
-  "version": "1.3.3",
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE"
-    }
-  ],
+  "version": "1.8.0",
+  "license": "MIT",
   "engines": {
-    "node": ">=0.4.0"
+    "node": ">=0.8.0"
   },
   "directories": {
     "lib": "./lib/coffee-script"
@@ -28,17 +23,30 @@
     "coffee": "./bin/coffee",
     "cake": "./bin/cake"
   },
+  "preferGlobal": true,
+  "scripts": {
+    "test": "node ./bin/cake test"
+  },
   "homepage": "http://coffeescript.org",
-  "bugs": "https://github.com/jashkenas/coffee-script/issues",
+  "bugs": {
+    "url": "https://github.com/jashkenas/coffeescript/issues"
+  },
   "repository": {
     "type": "git",
-    "url": "git://github.com/jashkenas/coffee-script.git"
+    "url": "git://github.com/jashkenas/coffeescript.git"
   },
   "devDependencies": {
-    "uglify-js": ">=1.0.0",
-    "jison": ">=0.2.0"
+    "uglify-js": "~2.2",
+    "jison": ">=0.2.0",
+    "highlight.js": "~8.0.0",
+    "underscore": "~1.5.2",
+    "docco": "~0.6.2"
+  },
+  "dependencies": {
+    "mkdirp": "~0.3.5"
   },
-  "readme": "\n            {\n         }   }   {\n        {   {  }  }\n         }   }{  {\n        {  }{  }  }                    _____       __  __\n       ( }{ }{  { )                   / ____|     / _|/ _|\n     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___\n    (  ( } { } { } }  )              | |    / _ \\|  _|  _/ _ \\/ _ \\\n    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/\n    |                 |               \\_____\\___/|_| |_| \\___|\\___|\n    |                 ;--.\n    |                (__  \\            _____           _       _\n    |                 | )  )          / ____|         (_)     | |\n    |                 |/  /          | (___   ___ _ __ _ _ __ | |_\n    |                 (  /            \\___ \\ / __| '__| | '_ \\| __|\n    |                 |/              ____) | (__| |  | | |_) | |_\n    |                 |              |_____/ \\___|_|  |_| .__/ \\__|\n     `-.._________..-'                                  | |\n   
                                                      |_|\n\n\n  CoffeeScript is a little language that compiles into JavaScript.\n\n  Install Node.js, and then the CoffeeScript compiler:\n  sudo bin/cake install\n\n  Or, if you have the Node Package Manager installed:\n  npm install -g coffee-script\n  (Leave off the -g if you don't wish to install globally.)\n\n  Execute a script:\n  coffee /path/to/script.coffee\n\n  Compile a script:\n  coffee -c /path/to/script.coffee\n\n  For documentation, usage, and examples, see:\n  http://coffeescript.org/\n\n  To suggest a feature, report a bug, or general discussion:\n  http://github.com/jashkenas/coffee-script/issues/\n\n  If you'd like to chat, drop by #coffeescript on Freenode IRC,\n  or on webchat.freenode.net.\n\n  The source repository:\n  git://github.com/jashkenas/coffee-script.git\n\n  All contributors are listed here:\n  http://github.com/jashkenas/coffee-script/contributors\n",
-  "_id": "coffee-script@1.3.3",
-  "_from": "coffee-script@1.3.x"
+  "readme": "            {\n         }   }   {\n        {   {  }  }\n         }   }{  {\n        {  }{  }  }                    _____       __  __\n       { }{ }{  { }                   / ____|     / _|/ _|\n     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___\n    (  { } { } { } }  )              | |    / _ \\|  _|  _/ _ \\/ _ \\\n    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/\n    |                 |               \\_____\\___/|_| |_| \\___|\\___|\n    |                 ;--.\n    |                (__  \\            _____           _       _\n    |                 | )  )          / ____|         (_)     | |\n    |                 |/  /          | (___   ___ _ __ _ _ __ | |_\n    |                 (  /            \\___ \\ / __| '__| | '_ \\| __|\n    |                 |/              ____) | (__| |  | | |_) | |_\n    |                 |              |_____/ \\___|_|  |_| .__/ \\__|\n     `-.._________..-'                                  | |\n     
                                                    |_|\n\n\n  CoffeeScript is a little language that compiles into JavaScript.\n\n  If you have the Node Package Manager installed:\n  npm install -g coffee-script\n  (Leave off the -g if you don't wish to install globally.)\n\n  Or, if you don't wish to use npm:\n  sudo bin/cake install\n\n  Execute a script:\n  coffee /path/to/script.coffee\n\n  Compile a script:\n  coffee -c /path/to/script.coffee\n\n  For documentation, usage, and examples, see:\n  http://coffeescript.org/\n\n  To suggest a feature, report a bug, or general discussion:\n  http://github.com/jashkenas/coffeescript/issues/\n\n  If you'd like to chat, drop by #coffeescript on Freenode IRC,\n  or on webchat.freenode.net.\n\n  The source repository:\n  git://github.com/jashkenas/coffeescript.git\n\n  Top 100 contributors are listed here:\n  http://github.com/jashkenas/coffeescript/contributors\n",
+  "readmeFilename": "README",
+  "_id": "coffee-script@1.8.0",
+  "_from": "coffee-script@1.8.x"
 }

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/register.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/register.js b/weinre.server/node_modules/coffee-script/register.js
new file mode 100644
index 0000000..97b33d7
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/register.js
@@ -0,0 +1 @@
+require('./lib/coffee-script/register');

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/repl.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/repl.js b/weinre.server/node_modules/coffee-script/repl.js
new file mode 100644
index 0000000..d2706a7
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/repl.js
@@ -0,0 +1 @@
+module.exports = require('./lib/coffee-script/repl');

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/History.md
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/History.md b/weinre.server/node_modules/express/History.md
index 5aae2d1..95ea466 100644
--- a/weinre.server/node_modules/express/History.md
+++ b/weinre.server/node_modules/express/History.md
@@ -1,4 +1,9 @@
 
+2.5.11 / 2012-06-29 
+==================
+
+  * Fixed backport of req.protocol
+
 2.5.10 / 2012-06-15 
 ==================
 

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/lib/express.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/lib/express.js b/weinre.server/node_modules/express/lib/express.js
index 1bae623..7ea451d 100644
--- a/weinre.server/node_modules/express/lib/express.js
+++ b/weinre.server/node_modules/express/lib/express.js
@@ -28,7 +28,7 @@ var exports = module.exports = connect.middleware;
  * Framework version.
  */
 
-exports.version = '2.5.10';
+exports.version = '2.5.11';
 
 /**
  * Shortcut for `new Server(...)`.

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/lib/request.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/lib/request.js b/weinre.server/node_modules/express/lib/request.js
index 05ffa66..4138afe 100644
--- a/weinre.server/node_modules/express/lib/request.js
+++ b/weinre.server/node_modules/express/lib/request.js
@@ -323,8 +323,8 @@ req.__defineGetter__('isXMLHttpRequest', isxhr);
 req.__defineGetter__('xhr', isxhr);
 
 /**
- * Return the protocol string "http" or "https",
- * when requested with TLS. When the "trust proxy"
+ * Return the protocol string "http" or "https"
+ * when requested with TLS. When the "trust proxy" 
  * setting is enabled the "X-Forwarded-Proto" header
  * field will be trusted. If you're running behind
  * a reverse proxy that supplies https for you this
@@ -334,11 +334,24 @@ req.__defineGetter__('xhr', isxhr);
  * @api public
  */
 
-req.__defineGetter__('protocol', function(trustProxy){
-  var trustProxy = this.app.settings['trust proxy'];
-  return this.secure
+req.__defineGetter__('protocol', function(){
+  var trustProxy = this.app.set('trust proxy');
+  return this.connection.encrypted
     ? 'https'
     : trustProxy
       ? (this.header('X-Forwarded-Proto') || 'http')
       : 'http';
 });
+
+/**
+ * Short-hand for:
+ *
+ *    req.protocol == 'https'
+ *
+ * @return {Boolean}
+ * @api public
+ */
+
+req.__defineGetter__('secure', function(){
+  return 'https' == this.protocol;
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/node_modules/connect/lib/connect.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/node_modules/connect/lib/connect.js b/weinre.server/node_modules/express/node_modules/connect/lib/connect.js
index eb2b0ea..338d96f 100644
--- a/weinre.server/node_modules/express/node_modules/connect/lib/connect.js
+++ b/weinre.server/node_modules/express/node_modules/connect/lib/connect.js
@@ -26,7 +26,7 @@ exports = module.exports = createServer;
  * Framework version.
  */
 
-exports.version = '1.9.1';
+exports.version = '1.9.2';
 
 /**
  * Initialize a new `connect.HTTPServer` with the middleware

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/node_modules/connect/lib/middleware/csrf.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/weinre.server/node_modules/express/node_modules/connect/lib/middleware/csrf.js
index 1dcf0d1..53347e7 100644
--- a/weinre.server/node_modules/express/node_modules/connect/lib/middleware/csrf.js
+++ b/weinre.server/node_modules/express/node_modules/connect/lib/middleware/csrf.js
@@ -77,7 +77,7 @@ module.exports = function csrf(options) {
     var token = req.session._csrf || (req.session._csrf = utils.uid(24));
 
     // ignore GET (for now)
-    if ('GET' == req.method) return next();
+    if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next();
 
     // determine value
     var val = value(req);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
index 4fbabb3..ed16858 100644
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
@@ -1,4 +1,7 @@
-/test/tmp/
+/test
+/tool
+/example
+/benchmark
 *.upload
 *.un~
 *.http

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
index f1d0f13..e20bedc 100644
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
@@ -1,4 +1,5 @@
 language: node_js
 node_js:
-  - 0.4
-  - 0.6
+  - 0.8
+  - "0.10"
+  - 0.11

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
new file mode 100644
index 0000000..38d3c9c
--- /dev/null
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
@@ -0,0 +1,7 @@
+Copyright (C) 2011 Felix Geisendörfer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.