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:15 UTC

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

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/lib/weinre.coffee
----------------------------------------------------------------------
diff --git a/weinre.server/lib/weinre.coffee b/weinre.server/lib/weinre.coffee
deleted file mode 100644
index 8b7945d..0000000
--- a/weinre.server/lib/weinre.coffee
+++ /dev/null
@@ -1,186 +0,0 @@
-#-------------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#-------------------------------------------------------------------------------
-
-fs   = require 'fs'
-net  = require 'net'
-dns  = require 'dns'
-path = require 'path'
-
-_       = require 'underscore'
-express = require 'express'
-
-utils              = require './utils'
-jsonBodyParser     = require './jsonBodyParser'
-HttpChannelHandler = require './HttpChannelHandler'
-dumpingHandler     = require './dumpingHandler'
-channelManager     = require './channelManager'
-serviceManager     = require './serviceManager'
-
-#-------------------------------------------------------------------------------
-exports.run = (options) ->
-    processOptions(options, run2)
-
-#-------------------------------------------------------------------------------
-run2 = ->
-    options = utils.options
-    
-    serviceManager.registerProxyClass 'WeinreClientEvents'
-    serviceManager.registerProxyClass 'WeinreTargetEvents'
-    serviceManager.registerLocalClass 'WeinreClientCommands'
-    serviceManager.registerLocalClass 'WeinreTargetCommands'
-    
-    startDeathWatcher options.deathTimeout
-    
-    startServer()    
-
-#-------------------------------------------------------------------------------
-processOptions = (options, cb) ->
-    options.httpPort     = utils.ensureInteger( options.httpPort,     'the value of the option httpPort is not a number')
-    options.boundHost    = utils.ensureString(  options.boundHost,    'the value of the option boundHost is not a string')
-    options.verbose      = utils.ensureBoolean( options.verbose,      'the value of the option verbose is not a boolean')
-    options.debug        = utils.ensureBoolean( options.debug,        'the value of the option debug is not a boolean')
-    options.readTimeout  = utils.ensureInteger( options.readTimeout,  'the value of the option readTimeout is not a number')
-    options.deathTimeout = utils.ensureInteger( options.deathTimeout, 'the value of the option deathTimeout is not a number')
-
-    options.verbose = true if options.debug
-    
-    options.staticWebDir = getStaticWebDir()
-    
-    utils.logVerbose "pid:                 #{process.pid}"
-    utils.logVerbose "version:             #{getVersion()}"
-    utils.logVerbose "node versions:"
-    
-    names   = _.keys(process.versions)
-    reducer = (memo, name) -> Math.max(memo, name.length)
-    nameLen = _.reduce(names, reducer, 0)
-    
-    for name in names
-        utils.logVerbose "   #{utils.alignLeft(name, nameLen)}: #{process.versions[name]}"
-    
-    utils.logVerbose "options:"
-    utils.logVerbose "   httpPort:     #{options.httpPort}"
-    utils.logVerbose "   boundHost:    #{options.boundHost}"
-    utils.logVerbose "   verbose:      #{options.verbose}"
-    utils.logVerbose "   debug:        #{options.debug}"
-    utils.logVerbose "   readTimeout:  #{options.readTimeout}"
-    utils.logVerbose "   deathTimeout: #{options.deathTimeout}"
-
-    utils.setOptions options
-
-    checkHost options.boundHost, (err) ->
-        if err
-            utils.exit "unable to resolve boundHost address: #{options.boundHost}"
-
-        cb()
-
-#-------------------------------------------------------------------------------
-checkHost = (hostName, cb) ->
-    return cb() if hostName == '-all-'
-    return cb() if hostName == 'localhost'
-    
-    return cb() if net.isIP(hostName)
-    
-    dns.lookup hostName, cb
-
-#-------------------------------------------------------------------------------
-deathTimeout = null
-
-#-------------------------------------------------------------------------------
-startDeathWatcher = (timeout) ->
-    deathTimeout = utils.options.deathTimeout * 1000
-    
-    setInterval checkForDeath, 1000
-
-#-------------------------------------------------------------------------------
-checkForDeath = ->
-    now = (new Date).valueOf()
-    for channel in channelManager.getChannels()
-        if now - channel.lastRead > deathTimeout
-            channel.close()
-
-#-------------------------------------------------------------------------------
-startServer = () ->
-    options = utils.options
-
-    clientHandler = new HttpChannelHandler('/ws/client')
-    targetHandler = new HttpChannelHandler('/ws/target')
-    
-    channelManager.initialize()
-    
-    favIcon = "#{options.staticWebDir}/images/weinre-icon-32x32.png"
-
-    staticCacheOptions =
-        maxObjects: 500
-        maxLength:  32 * 1024 * 1024
-        
-    app = express.createServer()
-    
-    app.on 'error', (error) ->
-        utils.exit "error running server: #{error}"
-
-    app.use express.favicon(favIcon)
-
-    app.use jsonBodyParser()
-
-    app.all /^\/ws\/client(.*)/, (request, response, next) ->
-        uri = request.params[0]
-        uri = '/' if uri == ''
-        
-        dumpingHandler(request, response, uri) if options.debug
-        clientHandler.handle(request, response, uri)
-
-    app.all /^\/ws\/target(.*)/, (request, response, next) ->
-        uri = request.params[0]
-        uri = '/' if uri == ''
-
-        dumpingHandler(request, response, uri) if options.debug
-        targetHandler.handle(request, response, uri)
-
-    app.use express.errorHandler(dumpExceptions: true)
-
-    app.use express.staticCache(staticCacheOptions)
-    app.use express.static(options.staticWebDir)
-    
-    if options.boundHost == '-all-'
-        utils.log "starting server at http://localhost:#{options.httpPort}"
-        app.listen options.httpPort
-        
-    else
-        utils.log "starting server at http://#{options.boundHost}:#{options.httpPort}"
-        app.listen options.httpPort, options.boundHost
-
-#-------------------------------------------------------------------------------
-getStaticWebDir = () ->
-    webDir = path.normalize path.join(__dirname,'../web')
-    return webDir if utils.fileExistsSync webDir
-    
-    utils.exit 'unable to find static files to serve in #{webDir}; did you do a build?'
-    
-#-------------------------------------------------------------------------------
-Version = null
-getVersion = exports.getVersion = () ->
-    return Version if Version 
-
-    packageJsonName  = path.join(path.dirname(fs.realpathSync(__filename)), '../package.json')
-
-    json = fs.readFileSync(packageJsonName, 'utf8')
-    values = JSON.parse(json)
-
-    Version = values.version
-    return Version

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/lib/weinre.js
----------------------------------------------------------------------
diff --git a/weinre.server/lib/weinre.js b/weinre.server/lib/weinre.js
new file mode 100644
index 0000000..a4ca11c
--- /dev/null
+++ b/weinre.server/lib/weinre.js
@@ -0,0 +1,193 @@
+// Generated by CoffeeScript 1.8.0
+var HttpChannelHandler, Version, channelManager, checkForDeath, checkHost, deathTimeout, dns, dumpingHandler, express, fs, getStaticWebDir, getVersion, jsonBodyParser, net, path, processOptions, run2, serviceManager, startDeathWatcher, startServer, utils, _;
+
+fs = require('fs');
+
+net = require('net');
+
+dns = require('dns');
+
+path = require('path');
+
+_ = require('underscore');
+
+express = require('express');
+
+utils = require('./utils');
+
+jsonBodyParser = require('./jsonBodyParser');
+
+HttpChannelHandler = require('./HttpChannelHandler');
+
+dumpingHandler = require('./dumpingHandler');
+
+channelManager = require('./channelManager');
+
+serviceManager = require('./serviceManager');
+
+exports.run = function(options) {
+  return processOptions(options, run2);
+};
+
+run2 = function() {
+  var options;
+  options = utils.options;
+  serviceManager.registerProxyClass('WeinreClientEvents');
+  serviceManager.registerProxyClass('WeinreTargetEvents');
+  serviceManager.registerLocalClass('WeinreClientCommands');
+  serviceManager.registerLocalClass('WeinreTargetCommands');
+  startDeathWatcher(options.deathTimeout);
+  return startServer();
+};
+
+processOptions = function(options, cb) {
+  var name, nameLen, names, reducer, _i, _len;
+  options.httpPort = utils.ensureInteger(options.httpPort, 'the value of the option httpPort is not a number');
+  options.boundHost = utils.ensureString(options.boundHost, 'the value of the option boundHost is not a string');
+  options.verbose = utils.ensureBoolean(options.verbose, 'the value of the option verbose is not a boolean');
+  options.debug = utils.ensureBoolean(options.debug, 'the value of the option debug is not a boolean');
+  options.readTimeout = utils.ensureInteger(options.readTimeout, 'the value of the option readTimeout is not a number');
+  options.deathTimeout = utils.ensureInteger(options.deathTimeout, 'the value of the option deathTimeout is not a number');
+  if (options.debug) {
+    options.verbose = true;
+  }
+  options.staticWebDir = getStaticWebDir();
+  utils.logVerbose("pid:                 " + process.pid);
+  utils.logVerbose("version:             " + (getVersion()));
+  utils.logVerbose("node versions:");
+  names = _.keys(process.versions);
+  reducer = function(memo, name) {
+    return Math.max(memo, name.length);
+  };
+  nameLen = _.reduce(names, reducer, 0);
+  for (_i = 0, _len = names.length; _i < _len; _i++) {
+    name = names[_i];
+    utils.logVerbose("   " + (utils.alignLeft(name, nameLen)) + ": " + process.versions[name]);
+  }
+  utils.logVerbose("options:");
+  utils.logVerbose("   httpPort:     " + options.httpPort);
+  utils.logVerbose("   boundHost:    " + options.boundHost);
+  utils.logVerbose("   verbose:      " + options.verbose);
+  utils.logVerbose("   debug:        " + options.debug);
+  utils.logVerbose("   readTimeout:  " + options.readTimeout);
+  utils.logVerbose("   deathTimeout: " + options.deathTimeout);
+  utils.setOptions(options);
+  return checkHost(options.boundHost, function(err) {
+    if (err) {
+      utils.exit("unable to resolve boundHost address: " + options.boundHost);
+    }
+    return cb();
+  });
+};
+
+checkHost = function(hostName, cb) {
+  if (hostName === '-all-') {
+    return cb();
+  }
+  if (hostName === 'localhost') {
+    return cb();
+  }
+  if (net.isIP(hostName)) {
+    return cb();
+  }
+  return dns.lookup(hostName, cb);
+};
+
+deathTimeout = null;
+
+startDeathWatcher = function(timeout) {
+  deathTimeout = utils.options.deathTimeout * 1000;
+  return setInterval(checkForDeath, 1000);
+};
+
+checkForDeath = function() {
+  var channel, now, _i, _len, _ref, _results;
+  now = (new Date).valueOf();
+  _ref = channelManager.getChannels();
+  _results = [];
+  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+    channel = _ref[_i];
+    if (now - channel.lastRead > deathTimeout) {
+      _results.push(channel.close());
+    } else {
+      _results.push(void 0);
+    }
+  }
+  return _results;
+};
+
+startServer = function() {
+  var app, clientHandler, favIcon, options, staticCacheOptions, targetHandler;
+  options = utils.options;
+  clientHandler = new HttpChannelHandler('/ws/client');
+  targetHandler = new HttpChannelHandler('/ws/target');
+  channelManager.initialize();
+  favIcon = "" + options.staticWebDir + "/images/weinre-icon-32x32.png";
+  staticCacheOptions = {
+    maxObjects: 500,
+    maxLength: 32 * 1024 * 1024
+  };
+  app = express.createServer();
+  app.on('error', function(error) {
+    return utils.exit("error running server: " + error);
+  });
+  app.use(express.favicon(favIcon));
+  app.use(jsonBodyParser());
+  app.all(/^\/ws\/client(.*)/, function(request, response, next) {
+    var uri;
+    uri = request.params[0];
+    if (uri === '') {
+      uri = '/';
+    }
+    if (options.debug) {
+      dumpingHandler(request, response, uri);
+    }
+    return clientHandler.handle(request, response, uri);
+  });
+  app.all(/^\/ws\/target(.*)/, function(request, response, next) {
+    var uri;
+    uri = request.params[0];
+    if (uri === '') {
+      uri = '/';
+    }
+    if (options.debug) {
+      dumpingHandler(request, response, uri);
+    }
+    return targetHandler.handle(request, response, uri);
+  });
+  app.use(express.errorHandler({
+    dumpExceptions: true
+  }));
+  app.use(express.staticCache(staticCacheOptions));
+  app.use(express["static"](options.staticWebDir));
+  if (options.boundHost === '-all-') {
+    utils.log("starting server at http://localhost:" + options.httpPort);
+    return app.listen(options.httpPort);
+  } else {
+    utils.log("starting server at http://" + options.boundHost + ":" + options.httpPort);
+    return app.listen(options.httpPort, options.boundHost);
+  }
+};
+
+getStaticWebDir = function() {
+  var webDir;
+  webDir = path.normalize(path.join(__dirname, '../web'));
+  if (utils.fileExistsSync(webDir)) {
+    return webDir;
+  }
+  return utils.exit('unable to find static files to serve in #{webDir}; did you do a build?');
+};
+
+Version = null;
+
+getVersion = exports.getVersion = function() {
+  var json, packageJsonName, values;
+  if (Version) {
+    return Version;
+  }
+  packageJsonName = path.join(path.dirname(fs.realpathSync(__filename)), '../package.json');
+  json = fs.readFileSync(packageJsonName, 'utf8');
+  values = JSON.parse(json);
+  Version = values.version;
+  return Version;
+};

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/.bin/cake
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/.bin/cake b/weinre.server/node_modules/.bin/cake
index 0b37b91..d95f32a 120000
--- a/weinre.server/node_modules/.bin/cake
+++ b/weinre.server/node_modules/.bin/cake
@@ -1 +1 @@
-/Users/pmuellr/Projects/incubator-cordova-weinre/weinre.server/node_modules/coffee-script/bin/cake
\ No newline at end of file
+../coffee-script/bin/cake
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/.bin/coffee
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/.bin/coffee b/weinre.server/node_modules/.bin/coffee
index 70a193a..b57f275 120000
--- a/weinre.server/node_modules/.bin/coffee
+++ b/weinre.server/node_modules/.bin/coffee
@@ -1 +1 @@
-/Users/pmuellr/Projects/incubator-cordova-weinre/weinre.server/node_modules/coffee-script/bin/coffee
\ No newline at end of file
+../coffee-script/bin/coffee
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/.bin/express
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/.bin/express b/weinre.server/node_modules/.bin/express
index 57a31fa..b741d99 120000
--- a/weinre.server/node_modules/.bin/express
+++ b/weinre.server/node_modules/.bin/express
@@ -1 +1 @@
-/Users/pmuellr/Projects/incubator-cordova-weinre/weinre.server/node_modules/express/bin/express
\ No newline at end of file
+../express/bin/express
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/.bin/nopt
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/.bin/nopt b/weinre.server/node_modules/.bin/nopt
index f50226a..6b6566e 120000
--- a/weinre.server/node_modules/.bin/nopt
+++ b/weinre.server/node_modules/.bin/nopt
@@ -1 +1 @@
-/Users/pmuellr/Projects/incubator-cordova-weinre/weinre.server/node_modules/nopt/bin/nopt.js
\ No newline at end of file
+../nopt/bin/nopt.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/CONTRIBUTING.md b/weinre.server/node_modules/coffee-script/CONTRIBUTING.md
new file mode 100644
index 0000000..5ea4c5f
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/CONTRIBUTING.md
@@ -0,0 +1,9 @@
+## How to contribute to CoffeeScript
+
+* Before you open a ticket or send a pull request, [search](https://github.com/jashkenas/coffeescript/issues) for previous discussions about the same feature or issue. Add to the earlier ticket if you find one.
+
+* Before sending a pull request for a feature, be sure to have [tests](https://github.com/jashkenas/coffeescript/tree/master/test).
+
+* Use the same coding style as the rest of the [codebase](https://github.com/jashkenas/coffeescript/tree/master/src). If you're just getting started with CoffeeScript, there's a nice [style guide](https://github.com/polarmobile/coffeescript-style-guide).
+
+* In your pull request, do not add documentation to `index.html` or re-build the minified `coffee-script.js` file. We'll do those things before cutting a new release.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/LICENSE
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/LICENSE b/weinre.server/node_modules/coffee-script/LICENSE
index dbe6b4e..4d09b4d 100644
--- a/weinre.server/node_modules/coffee-script/LICENSE
+++ b/weinre.server/node_modules/coffee-script/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2012 Jeremy Ashkenas
+Copyright (c) 2009-2014 Jeremy Ashkenas
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -19,4 +19,4 @@ 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.
\ No newline at end of file
+OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/README
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/README b/weinre.server/node_modules/coffee-script/README
index 69ee6f4..37d7bbf 100644
--- a/weinre.server/node_modules/coffee-script/README
+++ b/weinre.server/node_modules/coffee-script/README
@@ -1,12 +1,11 @@
-
             {
          }   }   {
         {   {  }  }
          }   }{  {
         {  }{  }  }                    _____       __  __
-       ( }{ }{  { )                   / ____|     / _|/ _|
+       { }{ }{  { }                   / ____|     / _|/ _|
      .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___
-    (  ( } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
+    (  { } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
     |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/
     |                 |               \_____\___/|_| |_| \___|\___|
     |                 ;--.
@@ -22,13 +21,13 @@
 
   CoffeeScript is a little language that compiles into JavaScript.
 
-  Install Node.js, and then the CoffeeScript compiler:
-  sudo bin/cake install
-
-  Or, if you have the Node Package Manager installed:
+  If you have the Node Package Manager installed:
   npm install -g coffee-script
   (Leave off the -g if you don't wish to install globally.)
 
+  Or, if you don't wish to use npm:
+  sudo bin/cake install
+
   Execute a script:
   coffee /path/to/script.coffee
 
@@ -39,13 +38,13 @@
   http://coffeescript.org/
 
   To suggest a feature, report a bug, or general discussion:
-  http://github.com/jashkenas/coffee-script/issues/
+  http://github.com/jashkenas/coffeescript/issues/
 
   If you'd like to chat, drop by #coffeescript on Freenode IRC,
   or on webchat.freenode.net.
 
   The source repository:
-  git://github.com/jashkenas/coffee-script.git
+  git://github.com/jashkenas/coffeescript.git
 
-  All contributors are listed here:
-  http://github.com/jashkenas/coffee-script/contributors
+  Top 100 contributors are listed here:
+  http://github.com/jashkenas/coffeescript/contributors

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/README.md
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/README.md b/weinre.server/node_modules/coffee-script/README.md
new file mode 100644
index 0000000..90f6788
--- /dev/null
+++ b/weinre.server/node_modules/coffee-script/README.md
@@ -0,0 +1,60 @@
+            {
+         }   }   {
+        {   {  }  }
+         }   }{  {
+        {  }{  }  }                    _____       __  __
+       { }{ }{  { }                   / ____|     / _|/ _|
+     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___
+    (  { } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
+    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/
+    |                 |               \_____\___/|_| |_| \___|\___|
+    |                 ;--.
+    |                (__  \            _____           _       _
+    |                 | )  )          / ____|         (_)     | |
+    |                 |/  /          | (___   ___ _ __ _ _ __ | |_
+    |                 (  /            \___ \ / __| '__| | '_ \| __|
+    |                 |/              ____) | (__| |  | | |_) | |_
+    |                 |              |_____/ \___|_|  |_| .__/ \__|
+     `-.._________..-'                                  | |
+                                                        |_|
+
+CoffeeScript is a little language that compiles into JavaScript.
+
+## Installation
+
+If you have the node package manager, npm, installed:
+
+```shell
+npm install -g coffee-script
+```
+
+Leave off the `-g` if you don't wish to install globally. If you don't wish to use npm:
+
+```shell
+git clone https://github.com/jashkenas/coffeescript.git
+sudo coffeescript/bin/cake install
+```
+
+## Getting Started
+
+Execute a script:
+
+```shell
+coffee /path/to/script.coffee
+```
+
+Compile a script:
+
+```shell
+coffee -c /path/to/script.coffee
+```
+
+For documentation, usage, and examples, see: http://coffeescript.org/
+
+To suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues
+
+If you'd like to chat, drop by #coffeescript on Freenode IRC.
+
+The source repository: https://github.com/jashkenas/coffeescript.git
+
+Our lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/Rakefile
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/Rakefile b/weinre.server/node_modules/coffee-script/Rakefile
deleted file mode 100644
index dfb85da..0000000
--- a/weinre.server/node_modules/coffee-script/Rakefile
+++ /dev/null
@@ -1,78 +0,0 @@
-require 'rubygems'
-require 'erb'
-require 'fileutils'
-require 'rake/testtask'
-require 'json'
-
-desc "Build the documentation page"
-task :doc do
-  source = 'documentation/index.html.erb'
-  child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" }
-  at_exit { Process.kill("INT", child) }
-  Signal.trap("INT") { exit }
-  loop do
-    mtime = File.stat(source).mtime
-    if !@mtime || mtime > @mtime
-      rendered = ERB.new(File.read(source)).result(binding)
-      File.open('index.html', 'w+') {|f| f.write(rendered) }
-    end
-    @mtime = mtime
-    sleep 1
-  end
-end
-
-desc "Build coffee-script-source gem"
-task :gem do
-  require 'rubygems'
-  require 'rubygems/package'
-
-  gemspec = Gem::Specification.new do |s|
-    s.name      = 'coffee-script-source'
-    s.version   = JSON.parse(File.read('package.json'))["version"]
-    s.date      = Time.now.strftime("%Y-%m-%d")
-
-    s.homepage    = "http://jashkenas.github.com/coffee-script/"
-    s.summary     = "The CoffeeScript Compiler"
-    s.description = <<-EOS
-      CoffeeScript is a little language that compiles into JavaScript.
-      Underneath all of those embarrassing braces and semicolons,
-      JavaScript has always had a gorgeous object model at its heart.
-      CoffeeScript is an attempt to expose the good parts of JavaScript
-      in a simple way.
-    EOS
-
-    s.files = [
-      'lib/coffee_script/coffee-script.js',
-      'lib/coffee_script/source.rb'
-    ]
-
-    s.authors           = ['Jeremy Ashkenas']
-    s.email             = 'jashkenas@gmail.com'
-    s.rubyforge_project = 'coffee-script-source'
-  end
-
-  file = File.open("coffee-script-source.gem", "w")
-  Gem::Package.open(file, 'w') do |pkg|
-    pkg.metadata = gemspec.to_yaml
-
-    path = "lib/coffee_script/source.rb"
-    contents = <<-ERUBY
-module CoffeeScript
-  module Source
-    def self.bundled_path
-      File.expand_path("../coffee-script.js", __FILE__)
-    end
-  end
-end
-    ERUBY
-    pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
-      tar_io.write(contents)
-    end
-
-    contents = File.read("extras/coffee-script.js")
-    path = "lib/coffee_script/coffee-script.js"
-    pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
-      tar_io.write(contents)
-    end
-  end
-end

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/extras/jsl.conf
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/extras/jsl.conf b/weinre.server/node_modules/coffee-script/extras/jsl.conf
deleted file mode 100644
index 1190da5..0000000
--- a/weinre.server/node_modules/coffee-script/extras/jsl.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-# JavaScriptLint configuration file for CoffeeScript.
-
-+no_return_value              # function {0} does not always return a value
-+duplicate_formal             # duplicate formal argument {0}
--equal_as_assign              # test for equality (==) mistyped as assignment (=)?{0}
-+var_hides_arg                # variable {0} hides argument
-+redeclared_var               # redeclaration of {0} {1}
--anon_no_return_value         # anonymous function does not always return a value
-+missing_semicolon            # missing semicolon
-+meaningless_block            # meaningless block; curly braces have no impact
--comma_separated_stmts        # multiple statements separated by commas (use semicolons?)
-+unreachable_code             # unreachable code
-+missing_break                # missing break statement
--missing_break_for_last_case  # missing break statement for last case in switch
--comparison_type_conv         # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
--inc_dec_within_stmt          # increment (++) and decrement (--) operators used as part of greater statement
--useless_void                 # use of the void type may be unnecessary (void is always undefined)
-+multiple_plus_minus          # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
-+use_of_label                 # use of label
--block_without_braces         # block statement without curly braces
-+leading_decimal_point        # leading decimal point may indicate a number or an object member
-+trailing_decimal_point       # trailing decimal point may indicate a number or an object member
-+octal_number                 # leading zeros make an octal number
-+nested_comment               # nested comment
-+misplaced_regex              # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
-+ambiguous_newline            # unexpected end of line; it is ambiguous whether these lines are part of the same statement
-+empty_statement              # empty statement or extra semicolon
--missing_option_explicit      # the "option explicit" control comment is missing
-+partial_option_explicit      # the "option explicit" control comment, if used, must be in the first script tag
-+dup_option_explicit          # duplicate "option explicit" control comment
-+useless_assign               # useless assignment
-+ambiguous_nested_stmt        # block statements containing block statements should use curly braces to resolve ambiguity
-+ambiguous_else_stmt          # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
--missing_default_case         # missing default case in switch statement
-+duplicate_case_in_switch     # duplicate case in switch statements
-+default_not_at_end           # the default case is not at the end of the switch statement
-+legacy_cc_not_understood     # couldn't understand control comment using /*@keyword@*/ syntax
-+jsl_cc_not_understood        # couldn't understand control comment using /*jsl:keyword*/ syntax
-+useless_comparison           # useless comparison; comparing identical expressions
-+with_statement               # with statement hides undeclared variables; use temporary variable instead
-+trailing_comma_in_array      # extra comma is not recommended in array initializers
-+assign_to_function_call      # assignment to a function call
-+parseint_missing_radix       # parseInt missing radix parameter
-+lambda_assign_requires_semicolon

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/browser.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/browser.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/browser.js
index 825cbf3..da2830d 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/browser.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/browser.js
@@ -1,20 +1,22 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
-  var CoffeeScript, runScripts;
+  var CoffeeScript, compile, runScripts,
+    __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; };
 
   CoffeeScript = require('./coffee-script');
 
   CoffeeScript.require = require;
 
+  compile = CoffeeScript.compile;
+
   CoffeeScript["eval"] = function(code, options) {
-    var _ref;
     if (options == null) {
       options = {};
     }
-    if ((_ref = options.bare) == null) {
+    if (options.bare == null) {
       options.bare = true;
     }
-    return eval(CoffeeScript.compile(code, options));
+    return eval(compile(code, options));
   };
 
   CoffeeScript.run = function(code, options) {
@@ -22,30 +24,54 @@
       options = {};
     }
     options.bare = true;
-    return Function(CoffeeScript.compile(code, options))();
+    options.shiftLine = true;
+    return Function(compile(code, options))();
   };
 
   if (typeof window === "undefined" || window === null) {
     return;
   }
 
-  CoffeeScript.load = function(url, callback) {
+  if ((typeof btoa !== "undefined" && btoa !== null) && (typeof JSON !== "undefined" && JSON !== null) && (typeof unescape !== "undefined" && unescape !== null) && (typeof encodeURIComponent !== "undefined" && encodeURIComponent !== null)) {
+    compile = function(code, options) {
+      var js, v3SourceMap, _ref;
+      if (options == null) {
+        options = {};
+      }
+      options.sourceMap = true;
+      options.inline = true;
+      _ref = CoffeeScript.compile(code, options), js = _ref.js, v3SourceMap = _ref.v3SourceMap;
+      return "" + js + "\n//# sourceMappingURL=data:application/json;base64," + (btoa(unescape(encodeURIComponent(v3SourceMap)))) + "\n//# sourceURL=coffeescript";
+    };
+  }
+
+  CoffeeScript.load = function(url, callback, options, hold) {
     var xhr;
-    xhr = new (window.ActiveXObject || XMLHttpRequest)('Microsoft.XMLHTTP');
+    if (options == null) {
+      options = {};
+    }
+    if (hold == null) {
+      hold = false;
+    }
+    options.sourceFiles = [url];
+    xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new window.XMLHttpRequest();
     xhr.open('GET', url, true);
     if ('overrideMimeType' in xhr) {
       xhr.overrideMimeType('text/plain');
     }
     xhr.onreadystatechange = function() {
-      var _ref;
+      var param, _ref;
       if (xhr.readyState === 4) {
         if ((_ref = xhr.status) === 0 || _ref === 200) {
-          CoffeeScript.run(xhr.responseText);
+          param = [xhr.responseText, options];
+          if (!hold) {
+            CoffeeScript.run.apply(CoffeeScript, param);
+          }
         } else {
           throw new Error("Could not load " + url);
         }
         if (callback) {
-          return callback();
+          return callback(param);
         }
       }
     };
@@ -53,40 +79,56 @@
   };
 
   runScripts = function() {
-    var coffees, execute, index, length, s, scripts;
-    scripts = document.getElementsByTagName('script');
+    var coffees, coffeetypes, execute, i, index, s, script, scripts, _fn, _i, _len;
+    scripts = window.document.getElementsByTagName('script');
+    coffeetypes = ['text/coffeescript', 'text/literate-coffeescript'];
     coffees = (function() {
-      var _i, _len, _results;
+      var _i, _len, _ref, _results;
       _results = [];
       for (_i = 0, _len = scripts.length; _i < _len; _i++) {
         s = scripts[_i];
-        if (s.type === 'text/coffeescript') {
+        if (_ref = s.type, __indexOf.call(coffeetypes, _ref) >= 0) {
           _results.push(s);
         }
       }
       return _results;
     })();
     index = 0;
-    length = coffees.length;
-    (execute = function() {
-      var script;
-      script = coffees[index++];
-      if ((script != null ? script.type : void 0) === 'text/coffeescript') {
-        if (script.src) {
-          return CoffeeScript.load(script.src, execute);
-        } else {
-          CoffeeScript.run(script.innerHTML);
+    execute = function() {
+      var param;
+      param = coffees[index];
+      if (param instanceof Array) {
+        CoffeeScript.run.apply(CoffeeScript, param);
+        index++;
+        return execute();
+      }
+    };
+    _fn = function(script, i) {
+      var options;
+      options = {
+        literate: script.type === coffeetypes[1]
+      };
+      if (script.src) {
+        return CoffeeScript.load(script.src, function(param) {
+          coffees[i] = param;
           return execute();
-        }
+        }, options, true);
+      } else {
+        options.sourceFiles = ['embedded'];
+        return coffees[i] = [script.innerHTML, options];
       }
-    })();
-    return null;
+    };
+    for (i = _i = 0, _len = coffees.length; _i < _len; i = ++_i) {
+      script = coffees[i];
+      _fn(script, i);
+    }
+    return execute();
   };
 
   if (window.addEventListener) {
-    addEventListener('DOMContentLoaded', runScripts, false);
+    window.addEventListener('DOMContentLoaded', runScripts, false);
   } else {
-    attachEvent('onload', runScripts);
+    window.attachEvent('onload', runScripts);
   }
 
 }).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/cake.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/cake.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/cake.js
index 1523418..94ecd4c 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/cake.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/cake.js
@@ -1,4 +1,4 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
   var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;
 
@@ -12,6 +12,8 @@
 
   CoffeeScript = require('./coffee-script');
 
+  CoffeeScript.register();
+
   tasks = {};
 
   options = {};
@@ -44,7 +46,7 @@
   });
 
   exports.run = function() {
-    var arg, args, _i, _len, _ref, _results;
+    var arg, args, e, _i, _len, _ref, _results;
     global.__originalDirname = fs.realpathSync('.');
     process.chdir(cakefileDirectory(__originalDirname));
     args = process.argv.slice(2);
@@ -57,7 +59,8 @@
     }
     try {
       options = oparse.parse(args);
-    } catch (e) {
+    } catch (_error) {
+      e = _error;
       return fatalError("" + e);
     }
     _ref = options["arguments"];
@@ -98,7 +101,7 @@
 
   cakefileDirectory = function(dir) {
     var parent;
-    if (path.existsSync(path.join(dir, 'Cakefile'))) {
+    if (fs.existsSync(path.join(dir, 'Cakefile'))) {
       return dir;
     }
     parent = path.normalize(path.join(dir, '..'));

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/coffee-script.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/coffee-script.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/coffee-script.js
index c43fa49..9061c7e 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/coffee-script.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/coffee-script.js
@@ -1,89 +1,126 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
-  var Lexer, RESERVED, compile, fs, lexer, parser, path, vm, _ref,
-    __hasProp = {}.hasOwnProperty;
+  var Lexer, SourceMap, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, lexer, parser, path, sourceMaps, vm, withPrettyErrors, _base, _i, _len, _ref,
+    __hasProp = {}.hasOwnProperty,
+    __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; };
 
   fs = require('fs');
 
+  vm = require('vm');
+
   path = require('path');
 
-  _ref = require('./lexer'), Lexer = _ref.Lexer, RESERVED = _ref.RESERVED;
+  Lexer = require('./lexer').Lexer;
 
   parser = require('./parser').parser;
 
-  vm = require('vm');
+  helpers = require('./helpers');
 
-  if (require.extensions) {
-    require.extensions['.coffee'] = function(module, filename) {
-      var content;
-      content = compile(fs.readFileSync(filename, 'utf8'), {
-        filename: filename
-      });
-      return module._compile(content, filename);
-    };
-  } else if (require.registerExtension) {
-    require.registerExtension('.coffee', function(content) {
-      return compile(content);
-    });
-  }
+  SourceMap = require('./sourcemap');
 
-  exports.VERSION = '1.3.3';
+  exports.VERSION = '1.8.0';
 
-  exports.RESERVED = RESERVED;
+  exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
 
-  exports.helpers = require('./helpers');
+  exports.helpers = helpers;
 
-  exports.compile = compile = function(code, options) {
-    var header, js, merge;
-    if (options == null) {
-      options = {};
-    }
-    merge = exports.helpers.merge;
-    try {
-      js = (parser.parse(lexer.tokenize(code))).compile(options);
-      if (!options.header) {
-        return js;
+  withPrettyErrors = function(fn) {
+    return function(code, options) {
+      var err;
+      if (options == null) {
+        options = {};
       }
-    } catch (err) {
-      if (options.filename) {
-        err.message = "In " + options.filename + ", " + err.message;
+      try {
+        return fn.call(this, code, options);
+      } catch (_error) {
+        err = _error;
+        throw helpers.updateSyntaxError(err, code, options.filename);
       }
-      throw err;
-    }
-    header = "Generated by CoffeeScript " + this.VERSION;
-    return "// " + header + "\n" + js;
+    };
   };
 
-  exports.tokens = function(code, options) {
+  exports.compile = compile = withPrettyErrors(function(code, options) {
+    var answer, currentColumn, currentLine, extend, fragment, fragments, header, js, map, merge, newLines, _i, _len;
+    merge = helpers.merge, extend = helpers.extend;
+    options = extend({}, options);
+    if (options.sourceMap) {
+      map = new SourceMap;
+    }
+    fragments = parser.parse(lexer.tokenize(code, options)).compileToFragments(options);
+    currentLine = 0;
+    if (options.header) {
+      currentLine += 1;
+    }
+    if (options.shiftLine) {
+      currentLine += 1;
+    }
+    currentColumn = 0;
+    js = "";
+    for (_i = 0, _len = fragments.length; _i < _len; _i++) {
+      fragment = fragments[_i];
+      if (options.sourceMap) {
+        if (fragment.locationData) {
+          map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
+            noReplace: true
+          });
+        }
+        newLines = helpers.count(fragment.code, "\n");
+        currentLine += newLines;
+        if (newLines) {
+          currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
+        } else {
+          currentColumn += fragment.code.length;
+        }
+      }
+      js += fragment.code;
+    }
+    if (options.header) {
+      header = "Generated by CoffeeScript " + this.VERSION;
+      js = "// " + header + "\n" + js;
+    }
+    if (options.sourceMap) {
+      answer = {
+        js: js
+      };
+      answer.sourceMap = map;
+      answer.v3SourceMap = map.generate(options, code);
+      return answer;
+    } else {
+      return js;
+    }
+  });
+
+  exports.tokens = withPrettyErrors(function(code, options) {
     return lexer.tokenize(code, options);
-  };
+  });
 
-  exports.nodes = function(source, options) {
+  exports.nodes = withPrettyErrors(function(source, options) {
     if (typeof source === 'string') {
       return parser.parse(lexer.tokenize(source, options));
     } else {
       return parser.parse(source);
     }
-  };
+  });
 
   exports.run = function(code, options) {
-    var mainModule;
+    var answer, dir, mainModule, _ref;
     if (options == null) {
       options = {};
     }
     mainModule = require.main;
     mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';
     mainModule.moduleCache && (mainModule.moduleCache = {});
-    mainModule.paths = require('module')._nodeModulePaths(path.dirname(fs.realpathSync(options.filename)));
-    if (path.extname(mainModule.filename) !== '.coffee' || require.extensions) {
-      return mainModule._compile(compile(code, options), mainModule.filename);
-    } else {
-      return mainModule._compile(code, mainModule.filename);
+    dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
+    mainModule.paths = require('module')._nodeModulePaths(dir);
+    if (!helpers.isCoffee(mainModule.filename) || require.extensions) {
+      answer = compile(code, options);
+      code = (_ref = answer.js) != null ? _ref : answer;
     }
+    return mainModule._compile(code, mainModule.filename);
   };
 
   exports["eval"] = function(code, options) {
-    var Module, Script, js, k, o, r, sandbox, v, _i, _len, _module, _ref1, _ref2, _require;
+    var Module, Script, js, k, o, r, sandbox, v, _i, _len, _module, _ref, _ref1, _require;
     if (options == null) {
       options = {};
     }
@@ -97,10 +134,10 @@
           sandbox = options.sandbox;
         } else {
           sandbox = Script.createContext();
-          _ref1 = options.sandbox;
-          for (k in _ref1) {
-            if (!__hasProp.call(_ref1, k)) continue;
-            v = _ref1[k];
+          _ref = options.sandbox;
+          for (k in _ref) {
+            if (!__hasProp.call(_ref, k)) continue;
+            v = _ref[k];
             sandbox[k] = v;
           }
         }
@@ -117,9 +154,9 @@
           return Module._load(path, _module, true);
         };
         _module.filename = sandbox.__filename;
-        _ref2 = Object.getOwnPropertyNames(require);
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          r = _ref2[_i];
+        _ref1 = Object.getOwnPropertyNames(require);
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          r = _ref1[_i];
           if (r !== 'paths') {
             _require[r] = require[r];
           }
@@ -145,12 +182,55 @@
     }
   };
 
+  exports.register = function() {
+    return require('./register');
+  };
+
+  if (require.extensions) {
+    _ref = this.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      ext = _ref[_i];
+      if ((_base = require.extensions)[ext] == null) {
+        _base[ext] = function() {
+          throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");
+        };
+      }
+    }
+  }
+
+  exports._compileFile = function(filename, sourceMap) {
+    var answer, err, raw, stripped;
+    if (sourceMap == null) {
+      sourceMap = false;
+    }
+    raw = fs.readFileSync(filename, 'utf8');
+    stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
+    try {
+      answer = compile(stripped, {
+        filename: filename,
+        sourceMap: sourceMap,
+        literate: helpers.isLiterate(filename)
+      });
+    } catch (_error) {
+      err = _error;
+      throw helpers.updateSyntaxError(err, stripped, filename);
+    }
+    return answer;
+  };
+
   lexer = new Lexer;
 
   parser.lexer = {
     lex: function() {
-      var tag, _ref1;
-      _ref1 = this.tokens[this.pos++] || [''], tag = _ref1[0], this.yytext = _ref1[1], this.yylineno = _ref1[2];
+      var tag, token;
+      token = this.tokens[this.pos++];
+      if (token) {
+        tag = token[0], this.yytext = token[1], this.yylloc = token[2];
+        this.errorToken = token.origin || token;
+        this.yylineno = this.yylloc.first_line;
+      } else {
+        tag = '';
+      }
       return tag;
     },
     setInput: function(tokens) {
@@ -164,4 +244,104 @@
 
   parser.yy = require('./nodes');
 
+  parser.yy.parseError = function(message, _arg) {
+    var errorLoc, errorTag, errorText, errorToken, token, tokens, _ref1;
+    token = _arg.token;
+    _ref1 = parser.lexer, errorToken = _ref1.errorToken, tokens = _ref1.tokens;
+    errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];
+    errorText = errorToken === tokens[tokens.length - 1] ? 'end of input' : errorTag === 'INDENT' || errorTag === 'OUTDENT' ? 'indentation' : helpers.nameWhitespaceCharacter(errorText);
+    return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);
+  };
+
+  formatSourcePosition = function(frame, getSourceMapping) {
+    var as, column, fileLocation, fileName, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;
+    fileName = void 0;
+    fileLocation = '';
+    if (frame.isNative()) {
+      fileLocation = "native";
+    } else {
+      if (frame.isEval()) {
+        fileName = frame.getScriptNameOrSourceURL();
+        if (!fileName) {
+          fileLocation = "" + (frame.getEvalOrigin()) + ", ";
+        }
+      } else {
+        fileName = frame.getFileName();
+      }
+      fileName || (fileName = "<anonymous>");
+      line = frame.getLineNumber();
+      column = frame.getColumnNumber();
+      source = getSourceMapping(fileName, line, column);
+      fileLocation = source ? "" + fileName + ":" + source[0] + ":" + source[1] : "" + fileName + ":" + line + ":" + column;
+    }
+    functionName = frame.getFunctionName();
+    isConstructor = frame.isConstructor();
+    isMethodCall = !(frame.isToplevel() || isConstructor);
+    if (isMethodCall) {
+      methodName = frame.getMethodName();
+      typeName = frame.getTypeName();
+      if (functionName) {
+        tp = as = '';
+        if (typeName && functionName.indexOf(typeName)) {
+          tp = "" + typeName + ".";
+        }
+        if (methodName && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {
+          as = " [as " + methodName + "]";
+        }
+        return "" + tp + functionName + as + " (" + fileLocation + ")";
+      } else {
+        return "" + typeName + "." + (methodName || '<anonymous>') + " (" + fileLocation + ")";
+      }
+    } else if (isConstructor) {
+      return "new " + (functionName || '<anonymous>') + " (" + fileLocation + ")";
+    } else if (functionName) {
+      return "" + functionName + " (" + fileLocation + ")";
+    } else {
+      return fileLocation;
+    }
+  };
+
+  sourceMaps = {};
+
+  getSourceMap = function(filename) {
+    var answer, _ref1;
+    if (sourceMaps[filename]) {
+      return sourceMaps[filename];
+    }
+    if (_ref1 = path != null ? path.extname(filename) : void 0, __indexOf.call(exports.FILE_EXTENSIONS, _ref1) < 0) {
+      return;
+    }
+    answer = exports._compileFile(filename, true);
+    return sourceMaps[filename] = answer.sourceMap;
+  };
+
+  Error.prepareStackTrace = function(err, stack) {
+    var frame, frames, getSourceMapping;
+    getSourceMapping = function(filename, line, column) {
+      var answer, sourceMap;
+      sourceMap = getSourceMap(filename);
+      if (sourceMap) {
+        answer = sourceMap.sourceLocation([line - 1, column - 1]);
+      }
+      if (answer) {
+        return [answer[0] + 1, answer[1] + 1];
+      } else {
+        return null;
+      }
+    };
+    frames = (function() {
+      var _j, _len1, _results;
+      _results = [];
+      for (_j = 0, _len1 = stack.length; _j < _len1; _j++) {
+        frame = stack[_j];
+        if (frame.getFunction() === exports.run) {
+          break;
+        }
+        _results.push("  at " + (formatSourcePosition(frame, getSourceMapping)));
+      }
+      return _results;
+    })();
+    return "" + (err.toString()) + "\n" + (frames.join('\n')) + "\n";
+  };
+
 }).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/command.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/command.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/command.js
index e02da9f..357653b 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/command.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/command.js
@@ -1,6 +1,7 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
-  var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, forkNode, fs, helpers, hidden, joinTimeout, lint, loadRequires, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, sourceCode, sources, spawn, timeLog, unwatchDir, usage, version, wait, watch, watchDir, watchers, writeJs, _ref;
+  var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, findDirectoryIndex, forkNode, fs, helpers, hidden, joinTimeout, mkdirp, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, removeSourceDir, silentUnlink, sourceCode, sources, spawn, timeLog, usage, useWinPathSep, version, wait, watch, watchDir, watchedDirs, writeJs, _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; };
 
   fs = require('fs');
 
@@ -12,10 +13,14 @@
 
   CoffeeScript = require('./coffee-script');
 
+  mkdirp = require('mkdirp');
+
   _ref = require('child_process'), spawn = _ref.spawn, exec = _ref.exec;
 
   EventEmitter = require('events').EventEmitter;
 
+  useWinPathSep = path.sep === '\\';
+
   helpers.extend(CoffeeScript, new EventEmitter);
 
   printLine = function(line) {
@@ -32,7 +37,7 @@
 
   BANNER = 'Usage: coffee [options] path/to/script.coffee -- [args]\n\nIf called without options, `coffee` will run your script.';
 
-  SWITCHES = [['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-l', '--lint', 'pipe the compiled JavaScript through JavaScript Lint'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-r', '--require [FILE*]', 'require a library before executing your script'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-t', '--tokens', 'print out the tokens that the lexer/rewriter produce'], ['-v', '--version', 'dis
 play the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']];
+  SWITCHES = [['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-m', '--map', 'generate source map and save as .js.map files'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['--no-header', 'suppress the "Generated by" header'], ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-l', '--literate', 'treat stdio as literate style coffee-script'], ['-t', '--tokens', 'print out the tokens that the lexer/rewrite
 r produce'], ['-v', '--version', 'display the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']];
 
   opts = {};
 
@@ -42,13 +47,16 @@
 
   notSources = {};
 
-  watchers = {};
+  watchedDirs = {};
 
   optionParser = null;
 
   exports.run = function() {
-    var literals, source, _i, _len, _results;
+    var literals, replCliOpts, source, _i, _len, _ref1, _results;
     parseOptions();
+    replCliOpts = {
+      useGlobal: true
+    };
     if (opts.nodejs) {
       return forkNode();
     }
@@ -58,108 +66,132 @@
     if (opts.version) {
       return version();
     }
-    if (opts.require) {
-      loadRequires();
-    }
     if (opts.interactive) {
-      return require('./repl');
-    }
-    if (opts.watch && !fs.watch) {
-      return printWarn("The --watch feature depends on Node v0.6.0+. You are running " + process.version + ".");
+      return require('./repl').start(replCliOpts);
     }
     if (opts.stdio) {
       return compileStdio();
     }
     if (opts["eval"]) {
-      return compileScript(null, sources[0]);
+      return compileScript(null, opts["arguments"][0]);
     }
-    if (!sources.length) {
-      return require('./repl');
+    if (!opts["arguments"].length) {
+      return require('./repl').start(replCliOpts);
     }
-    literals = opts.run ? sources.splice(1) : [];
+    literals = opts.run ? opts["arguments"].splice(1) : [];
     process.argv = process.argv.slice(0, 2).concat(literals);
     process.argv[0] = 'coffee';
-    process.execPath = require.main.filename;
+    if (opts.output) {
+      opts.output = path.resolve(opts.output);
+    }
+    if (opts.join) {
+      opts.join = path.resolve(opts.join);
+      console.error('\nThe --join option is deprecated and will be removed in a future version.\n\nIf for some reason it\'s necessary to share local variables between files,\nreplace...\n\n    $ coffee --compile --join bundle.js -- a.coffee b.coffee c.coffee\n\nwith...\n\n    $ cat a.coffee b.coffee c.coffee | coffee --compile --stdio > bundle.js\n');
+    }
+    _ref1 = opts["arguments"];
     _results = [];
-    for (_i = 0, _len = sources.length; _i < _len; _i++) {
-      source = sources[_i];
-      _results.push(compilePath(source, true, path.normalize(source)));
+    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+      source = _ref1[_i];
+      source = path.resolve(source);
+      _results.push(compilePath(source, true, source));
     }
     return _results;
   };
 
   compilePath = function(source, topLevel, base) {
-    return fs.stat(source, function(err, stats) {
-      if (err && err.code !== 'ENOENT') {
-        throw err;
+    var code, err, file, files, stats, _i, _len, _results;
+    if (__indexOf.call(sources, source) >= 0 || watchedDirs[source] || !topLevel && (notSources[source] || hidden(source))) {
+      return;
+    }
+    try {
+      stats = fs.statSync(source);
+    } catch (_error) {
+      err = _error;
+      if (err.code === 'ENOENT') {
+        console.error("File not found: " + source);
+        process.exit(1);
+      }
+      throw err;
+    }
+    if (stats.isDirectory()) {
+      if (path.basename(source) === 'node_modules') {
+        notSources[source] = true;
+        return;
       }
-      if ((err != null ? err.code : void 0) === 'ENOENT') {
-        if (topLevel && source.slice(-7) !== '.coffee') {
-          source = sources[sources.indexOf(source)] = "" + source + ".coffee";
-          return compilePath(source, topLevel, base);
+      if (opts.run) {
+        compilePath(findDirectoryIndex(source), topLevel, base);
+        return;
+      }
+      if (opts.watch) {
+        watchDir(source, base);
+      }
+      try {
+        files = fs.readdirSync(source);
+      } catch (_error) {
+        err = _error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
         }
-        if (topLevel) {
-          console.error("File not found: " + source);
-          process.exit(1);
+      }
+      _results = [];
+      for (_i = 0, _len = files.length; _i < _len; _i++) {
+        file = files[_i];
+        _results.push(compilePath(path.join(source, file), false, base));
+      }
+      return _results;
+    } else if (topLevel || helpers.isCoffee(source)) {
+      sources.push(source);
+      sourceCode.push(null);
+      delete notSources[source];
+      if (opts.watch) {
+        watch(source, base);
+      }
+      try {
+        code = fs.readFileSync(source);
+      } catch (_error) {
+        err = _error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
         }
-        return;
       }
-      if (stats.isDirectory()) {
-        if (opts.watch) {
-          watchDir(source, base);
+      return compileScript(source, code.toString(), base);
+    } else {
+      return notSources[source] = true;
+    }
+  };
+
+  findDirectoryIndex = function(source) {
+    var err, ext, index, _i, _len, _ref1;
+    _ref1 = CoffeeScript.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+      ext = _ref1[_i];
+      index = path.join(source, "index" + ext);
+      try {
+        if ((fs.statSync(index)).isFile()) {
+          return index;
         }
-        return fs.readdir(source, function(err, files) {
-          var file, index, _ref1, _ref2;
-          if (err && err.code !== 'ENOENT') {
-            throw err;
-          }
-          if ((err != null ? err.code : void 0) === 'ENOENT') {
-            return;
-          }
-          index = sources.indexOf(source);
-          files = files.filter(function(file) {
-            return !hidden(file);
-          });
-          [].splice.apply(sources, [index, index - index + 1].concat(_ref1 = (function() {
-            var _i, _len, _results;
-            _results = [];
-            for (_i = 0, _len = files.length; _i < _len; _i++) {
-              file = files[_i];
-              _results.push(path.join(source, file));
-            }
-            return _results;
-          })())), _ref1;
-          [].splice.apply(sourceCode, [index, index - index + 1].concat(_ref2 = files.map(function() {
-            return null;
-          }))), _ref2;
-          return files.forEach(function(file) {
-            return compilePath(path.join(source, file), false, base);
-          });
-        });
-      } else if (topLevel || path.extname(source) === '.coffee') {
-        if (opts.watch) {
-          watch(source, base);
+      } catch (_error) {
+        err = _error;
+        if (err.code !== 'ENOENT') {
+          throw err;
         }
-        return fs.readFile(source, function(err, code) {
-          if (err && err.code !== 'ENOENT') {
-            throw err;
-          }
-          if ((err != null ? err.code : void 0) === 'ENOENT') {
-            return;
-          }
-          return compileScript(source, code.toString(), base);
-        });
-      } else {
-        notSources[source] = true;
-        return removeSource(source, base);
       }
-    });
+    }
+    console.error("Missing index.coffee or index.litcoffee in " + source);
+    return process.exit(1);
   };
 
   compileScript = function(file, input, base) {
-    var o, options, t, task;
+    var compiled, err, message, o, options, t, task;
+    if (base == null) {
+      base = null;
+    }
     o = opts;
-    options = compileOptions(file);
+    options = compileOptions(file, base);
     try {
       t = task = {
         file: file,
@@ -168,35 +200,45 @@
       };
       CoffeeScript.emit('compile', task);
       if (o.tokens) {
-        return printTokens(CoffeeScript.tokens(t.input));
+        return printTokens(CoffeeScript.tokens(t.input, t.options));
       } else if (o.nodes) {
-        return printLine(CoffeeScript.nodes(t.input).toString().trim());
+        return printLine(CoffeeScript.nodes(t.input, t.options).toString().trim());
       } else if (o.run) {
+        CoffeeScript.register();
         return CoffeeScript.run(t.input, t.options);
       } else if (o.join && t.file !== o.join) {
+        if (helpers.isLiterate(file)) {
+          t.input = helpers.invertLiterate(t.input);
+        }
         sourceCode[sources.indexOf(t.file)] = t.input;
         return compileJoin();
       } else {
-        t.output = CoffeeScript.compile(t.input, t.options);
+        compiled = CoffeeScript.compile(t.input, t.options);
+        t.output = compiled;
+        if (o.map) {
+          t.output = compiled.js;
+          t.sourceMap = compiled.v3SourceMap;
+        }
         CoffeeScript.emit('success', task);
         if (o.print) {
           return printLine(t.output.trim());
-        } else if (o.compile) {
-          return writeJs(t.file, t.output, base);
-        } else if (o.lint) {
-          return lint(t.file, t.output);
+        } else if (o.compile || o.map) {
+          return writeJs(base, t.file, t.output, options.jsPath, t.sourceMap);
         }
       }
-    } catch (err) {
+    } catch (_error) {
+      err = _error;
       CoffeeScript.emit('failure', err, task);
       if (CoffeeScript.listeners('failure').length) {
         return;
       }
+      message = err.stack || ("" + err);
       if (o.watch) {
-        return printLine(err.message + '\x07');
+        return printLine(message + '\x07');
+      } else {
+        printWarn(message);
+        return process.exit(1);
       }
-      printWarn(err instanceof Error && err.stack || ("ERROR: " + err));
-      return process.exit(1);
     }
   };
 
@@ -230,36 +272,24 @@
     }
   };
 
-  loadRequires = function() {
-    var realFilename, req, _i, _len, _ref1;
-    realFilename = module.filename;
-    module.filename = '.';
-    _ref1 = opts.require;
-    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-      req = _ref1[_i];
-      require(req);
-    }
-    return module.filename = realFilename;
-  };
-
   watch = function(source, base) {
-    var compile, compileTimeout, prevStats, rewatch, watchErr, watcher;
+    var compile, compileTimeout, err, prevStats, rewatch, startWatcher, watchErr, watcher;
+    watcher = null;
     prevStats = null;
     compileTimeout = null;
-    watchErr = function(e) {
-      if (e.code === 'ENOENT') {
-        if (sources.indexOf(source) === -1) {
-          return;
-        }
-        try {
-          rewatch();
-          return compile();
-        } catch (e) {
-          removeSource(source, base, true);
-          return compileJoin();
-        }
-      } else {
-        throw e;
+    watchErr = function(err) {
+      if (err.code !== 'ENOENT') {
+        throw err;
+      }
+      if (__indexOf.call(sources, source) < 0) {
+        return;
+      }
+      try {
+        rewatch();
+        return compile();
+      } catch (_error) {
+        removeSource(source, base);
+        return compileJoin();
       }
     };
     compile = function() {
@@ -283,138 +313,171 @@
         });
       });
     };
-    try {
-      watcher = fs.watch(source, compile);
-    } catch (e) {
-      watchErr(e);
-    }
-    return rewatch = function() {
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('change', compile).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return removeSource(source, base);
+      });
+    };
+    rewatch = function() {
       if (watcher != null) {
         watcher.close();
       }
-      return watcher = fs.watch(source, compile);
+      return startWatcher();
     };
+    try {
+      return startWatcher();
+    } catch (_error) {
+      err = _error;
+      return watchErr(err);
+    }
   };
 
   watchDir = function(source, base) {
-    var readdirTimeout, watcher;
+    var err, readdirTimeout, startWatcher, stopWatcher, watcher;
+    watcher = null;
     readdirTimeout = null;
-    try {
-      return watcher = fs.watch(source, function() {
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return stopWatcher();
+      }).on('change', function() {
         clearTimeout(readdirTimeout);
         return readdirTimeout = wait(25, function() {
-          return fs.readdir(source, function(err, files) {
-            var file, _i, _len, _results;
-            if (err) {
-              if (err.code !== 'ENOENT') {
-                throw err;
-              }
-              watcher.close();
-              return unwatchDir(source, base);
-            }
-            _results = [];
-            for (_i = 0, _len = files.length; _i < _len; _i++) {
-              file = files[_i];
-              if (!(!hidden(file) && !notSources[file])) {
-                continue;
-              }
-              file = path.join(source, file);
-              if (sources.some(function(s) {
-                return s.indexOf(file) >= 0;
-              })) {
-                continue;
-              }
-              sources.push(file);
-              sourceCode.push(null);
-              _results.push(compilePath(file, false, base));
+          var err, file, files, _i, _len, _results;
+          try {
+            files = fs.readdirSync(source);
+          } catch (_error) {
+            err = _error;
+            if (err.code !== 'ENOENT') {
+              throw err;
             }
-            return _results;
-          });
+            return stopWatcher();
+          }
+          _results = [];
+          for (_i = 0, _len = files.length; _i < _len; _i++) {
+            file = files[_i];
+            _results.push(compilePath(path.join(source, file), false, base));
+          }
+          return _results;
         });
       });
-    } catch (e) {
-      if (e.code !== 'ENOENT') {
-        throw e;
+    };
+    stopWatcher = function() {
+      watcher.close();
+      return removeSourceDir(source, base);
+    };
+    watchedDirs[source] = true;
+    try {
+      return startWatcher();
+    } catch (_error) {
+      err = _error;
+      if (err.code !== 'ENOENT') {
+        throw err;
       }
     }
   };
 
-  unwatchDir = function(source, base) {
-    var file, prevSources, toRemove, _i, _len;
-    prevSources = sources.slice(0);
-    toRemove = (function() {
-      var _i, _len, _results;
-      _results = [];
-      for (_i = 0, _len = sources.length; _i < _len; _i++) {
-        file = sources[_i];
-        if (file.indexOf(source) >= 0) {
-          _results.push(file);
-        }
+  removeSourceDir = function(source, base) {
+    var file, sourcesChanged, _i, _len;
+    delete watchedDirs[source];
+    sourcesChanged = false;
+    for (_i = 0, _len = sources.length; _i < _len; _i++) {
+      file = sources[_i];
+      if (!(source === path.dirname(file))) {
+        continue;
       }
-      return _results;
-    })();
-    for (_i = 0, _len = toRemove.length; _i < _len; _i++) {
-      file = toRemove[_i];
-      removeSource(file, base, true);
+      removeSource(file, base);
+      sourcesChanged = true;
     }
-    if (!sources.some(function(s, i) {
-      return prevSources[i] !== s;
-    })) {
-      return;
+    if (sourcesChanged) {
+      return compileJoin();
     }
-    return compileJoin();
   };
 
-  removeSource = function(source, base, removeJs) {
-    var index, jsPath;
+  removeSource = function(source, base) {
+    var index;
     index = sources.indexOf(source);
     sources.splice(index, 1);
     sourceCode.splice(index, 1);
-    if (removeJs && !opts.join) {
-      jsPath = outputPath(source, base);
-      return path.exists(jsPath, function(exists) {
-        if (exists) {
-          return fs.unlink(jsPath, function(err) {
-            if (err && err.code !== 'ENOENT') {
-              throw err;
-            }
-            return timeLog("removed " + source);
-          });
-        }
-      });
+    if (!opts.join) {
+      silentUnlink(outputPath(source, base));
+      silentUnlink(outputPath(source, base, '.js.map'));
+      return timeLog("removed " + source);
+    }
+  };
+
+  silentUnlink = function(path) {
+    var err, _ref1;
+    try {
+      return fs.unlinkSync(path);
+    } catch (_error) {
+      err = _error;
+      if ((_ref1 = err.code) !== 'ENOENT' && _ref1 !== 'EPERM') {
+        throw err;
+      }
     }
   };
 
-  outputPath = function(source, base) {
-    var baseDir, dir, filename, srcDir;
-    filename = path.basename(source, path.extname(source)) + '.js';
+  outputPath = function(source, base, extension) {
+    var basename, dir, srcDir;
+    if (extension == null) {
+      extension = ".js";
+    }
+    basename = helpers.baseFileName(source, true, useWinPathSep);
     srcDir = path.dirname(source);
-    baseDir = base === '.' ? srcDir : srcDir.substring(base.length);
-    dir = opts.output ? path.join(opts.output, baseDir) : srcDir;
-    return path.join(dir, filename);
+    if (!opts.output) {
+      dir = srcDir;
+    } else if (source === base) {
+      dir = opts.output;
+    } else {
+      dir = path.join(opts.output, path.relative(base, srcDir));
+    }
+    return path.join(dir, basename + extension);
   };
 
-  writeJs = function(source, js, base) {
-    var compile, jsDir, jsPath;
-    jsPath = outputPath(source, base);
+  writeJs = function(base, sourcePath, js, jsPath, generatedSourceMap) {
+    var compile, jsDir, sourceMapPath;
+    if (generatedSourceMap == null) {
+      generatedSourceMap = null;
+    }
+    sourceMapPath = outputPath(sourcePath, base, ".js.map");
     jsDir = path.dirname(jsPath);
     compile = function() {
-      if (js.length <= 0) {
-        js = ' ';
-      }
-      return fs.writeFile(jsPath, js, function(err) {
-        if (err) {
-          return printLine(err.message);
-        } else if (opts.compile && opts.watch) {
-          return timeLog("compiled " + source);
+      if (opts.compile) {
+        if (js.length <= 0) {
+          js = ' ';
         }
-      });
+        if (generatedSourceMap) {
+          js = "" + js + "\n//# sourceMappingURL=" + (helpers.baseFileName(sourceMapPath, false, useWinPathSep)) + "\n";
+        }
+        fs.writeFile(jsPath, js, function(err) {
+          if (err) {
+            printLine(err.message);
+            return process.exit(1);
+          } else if (opts.compile && opts.watch) {
+            return timeLog("compiled " + sourcePath);
+          }
+        });
+      }
+      if (generatedSourceMap) {
+        return fs.writeFile(sourceMapPath, generatedSourceMap, function(err) {
+          if (err) {
+            printLine("Could not write source map: " + err.message);
+            return process.exit(1);
+          }
+        });
+      }
     };
-    return path.exists(jsDir, function(exists) {
-      if (exists) {
+    return fs.exists(jsDir, function(itExists) {
+      if (itExists) {
         return compile();
       } else {
-        return exec("mkdir -p " + jsDir, compile);
+        return mkdirp(jsDir, compile);
       }
     });
   };
@@ -427,27 +490,15 @@
     return console.log("" + ((new Date).toLocaleTimeString()) + " - " + message);
   };
 
-  lint = function(file, js) {
-    var conf, jsl, printIt;
-    printIt = function(buffer) {
-      return printLine(file + ':\t' + buffer.toString().trim());
-    };
-    conf = __dirname + '/../../extras/jsl.conf';
-    jsl = spawn('jsl', ['-nologo', '-stdin', '-conf', conf]);
-    jsl.stdout.on('data', printIt);
-    jsl.stderr.on('data', printIt);
-    jsl.stdin.write(js);
-    return jsl.stdin.end();
-  };
-
   printTokens = function(tokens) {
     var strings, tag, token, value;
     strings = (function() {
-      var _i, _len, _ref1, _results;
+      var _i, _len, _results;
       _results = [];
       for (_i = 0, _len = tokens.length; _i < _len; _i++) {
         token = tokens[_i];
-        _ref1 = [token[0], token[1].toString().replace(/\n/, '\\n')], tag = _ref1[0], value = _ref1[1];
+        tag = token[0];
+        value = token[1].toString().replace(/\n/, '\\n');
         _results.push("[" + tag + " " + value + "]");
       }
       return _results;
@@ -456,37 +507,58 @@
   };
 
   parseOptions = function() {
-    var i, o, source, _i, _len;
+    var o;
     optionParser = new optparse.OptionParser(SWITCHES, BANNER);
     o = opts = optionParser.parse(process.argv.slice(2));
     o.compile || (o.compile = !!o.output);
-    o.run = !(o.compile || o.print || o.lint);
-    o.print = !!(o.print || (o["eval"] || o.stdio && o.compile));
-    sources = o["arguments"];
-    for (i = _i = 0, _len = sources.length; _i < _len; i = ++_i) {
-      source = sources[i];
-      sourceCode[i] = null;
-    }
+    o.run = !(o.compile || o.print || o.map);
+    return o.print = !!(o.print || (o["eval"] || o.stdio && o.compile));
   };
 
-  compileOptions = function(filename) {
-    return {
+  compileOptions = function(filename, base) {
+    var answer, cwd, jsDir, jsPath;
+    answer = {
       filename: filename,
+      literate: opts.literate || helpers.isLiterate(filename),
       bare: opts.bare,
-      header: opts.compile
+      header: opts.compile && !opts['no-header'],
+      sourceMap: opts.map
     };
+    if (filename) {
+      if (base) {
+        cwd = process.cwd();
+        jsPath = outputPath(filename, base);
+        jsDir = path.dirname(jsPath);
+        answer = helpers.merge(answer, {
+          jsPath: jsPath,
+          sourceRoot: path.relative(jsDir, cwd),
+          sourceFiles: [path.relative(cwd, filename)],
+          generatedFile: helpers.baseFileName(jsPath, false, useWinPathSep)
+        });
+      } else {
+        answer = helpers.merge(answer, {
+          sourceRoot: "",
+          sourceFiles: [helpers.baseFileName(filename, false, useWinPathSep)],
+          generatedFile: helpers.baseFileName(filename, true, useWinPathSep) + ".js"
+        });
+      }
+    }
+    return answer;
   };
 
   forkNode = function() {
-    var args, nodeArgs;
+    var args, nodeArgs, p;
     nodeArgs = opts.nodejs.split(/\s+/);
     args = process.argv.slice(1);
     args.splice(args.indexOf('--nodejs'), 2);
-    return spawn(process.execPath, nodeArgs.concat(args), {
+    p = spawn(process.execPath, nodeArgs.concat(args), {
       cwd: process.cwd(),
       env: process.env,
       customFds: [0, 1, 2]
     });
+    return p.on('exit', function(code) {
+      return process.exit(code);
+    });
   };
 
   usage = function() {

http://git-wip-us.apache.org/repos/asf/cordova-weinre/blob/03084bdb/weinre.server/node_modules/coffee-script/lib/coffee-script/grammar.js
----------------------------------------------------------------------
diff --git a/weinre.server/node_modules/coffee-script/lib/coffee-script/grammar.js b/weinre.server/node_modules/coffee-script/lib/coffee-script/grammar.js
index 5662138..cfcab24 100644
--- a/weinre.server/node_modules/coffee-script/lib/coffee-script/grammar.js
+++ b/weinre.server/node_modules/coffee-script/lib/coffee-script/grammar.js
@@ -1,4 +1,4 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.8.0
 (function() {
   var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
 
@@ -7,22 +7,32 @@
   unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/;
 
   o = function(patternString, action, options) {
-    var match;
+    var addLocationDataFn, match, patternCount;
     patternString = patternString.replace(/\s{2,}/g, ' ');
+    patternCount = patternString.split(' ').length;
     if (!action) {
       return [patternString, '$$ = $1;', options];
     }
     action = (match = unwrap.exec(action)) ? match[1] : "(" + action + "())";
     action = action.replace(/\bnew /g, '$&yy.');
     action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&');
-    return [patternString, "$$ = " + action + ";", options];
+    addLocationDataFn = function(first, last) {
+      if (!last) {
+        return "yy.addLocationDataFn(@" + first + ")";
+      } else {
+        return "yy.addLocationDataFn(@" + first + ", @" + last + ")";
+      }
+    };
+    action = action.replace(/LOC\(([0-9]*)\)/g, addLocationDataFn('$1'));
+    action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2'));
+    return [patternString, "$$ = " + (addLocationDataFn(1, patternCount)) + "(" + action + ");", options];
   };
 
   grammar = {
     Root: [
       o('', function() {
         return new Block;
-      }), o('Body'), o('Block TERMINATOR')
+      }), o('Body')
     ],
     Body: [
       o('Line', function() {
@@ -85,10 +95,9 @@
       o('ObjAssignable', function() {
         return new Value($1);
       }), o('ObjAssignable : Expression', function() {
-        return new Assign(new Value($1), $3, 'object');
-      }), o('ObjAssignable :\
-       INDENT Expression OUTDENT', function() {
-        return new Assign(new Value($1), $4, 'object');
+        return new Assign(LOC(1)(new Value($1)), $3, 'object');
+      }), o('ObjAssignable : INDENT Expression OUTDENT', function() {
+        return new Assign(LOC(1)(new Value($1)), $4, 'object');
       }), o('Comment')
     ],
     ObjAssignable: [o('Identifier'), o('AlphaNumeric'), o('ThisProperty')],
@@ -139,6 +148,8 @@
         return new Param($1, null, true);
       }), o('ParamVar = Expression', function() {
         return new Param($1, $3);
+      }), o('...', function() {
+        return new Expansion;
       })
     ],
     ParamVar: [o('Identifier'), o('ThisProperty'), o('Array'), o('Object')],
@@ -178,7 +189,9 @@
       }), o('?. Identifier', function() {
         return new Access($2, 'soak');
       }), o(':: Identifier', function() {
-        return [new Access(new Literal('prototype')), new Access($2)];
+        return [LOC(1)(new Access(new Literal('prototype'))), LOC(2)(new Access($2))];
+      }), o('?:: Identifier', function() {
+        return [LOC(1)(new Access(new Literal('prototype'), 'soak')), LOC(2)(new Access($2))];
       }), o('::', function() {
         return new Access(new Literal('prototype'));
       }), o('Index')
@@ -270,7 +283,7 @@
     ],
     ThisProperty: [
       o('@ Identifier', function() {
-        return new Value(new Literal('this'), [new Access($2)], 'this');
+        return new Value(LOC(1)(new Literal('this')), [LOC(2)(new Access($2))], 'this');
       })
     ],
     Array: [
@@ -316,7 +329,11 @@
         return $1.concat($4);
       })
     ],
-    Arg: [o('Expression'), o('Splat')],
+    Arg: [
+      o('Expression'), o('Splat'), o('...', function() {
+        return new Expansion;
+      })
+    ],
     SimpleArgs: [
       o('Expression'), o('SimpleArgs , Expression', function() {
         return [].concat($1, $3);
@@ -336,6 +353,10 @@
     Catch: [
       o('CATCH Identifier Block', function() {
         return [$2, $3];
+      }), o('CATCH Object Block', function() {
+        return [LOC(2)(new Value($2)), $3];
+      }), o('CATCH Block', function() {
+        return [null, $2];
       })
     ],
     Throw: [
@@ -372,18 +393,18 @@
       o('WhileSource Block', function() {
         return $1.addBody($2);
       }), o('Statement  WhileSource', function() {
-        return $2.addBody(Block.wrap([$1]));
+        return $2.addBody(LOC(1)(Block.wrap([$1])));
       }), o('Expression WhileSource', function() {
-        return $2.addBody(Block.wrap([$1]));
+        return $2.addBody(LOC(1)(Block.wrap([$1])));
       }), o('Loop', function() {
         return $1;
       })
     ],
     Loop: [
       o('LOOP Block', function() {
-        return new While(new Literal('true')).addBody($2);
+        return new While(LOC(1)(new Literal('true'))).addBody($2);
       }), o('LOOP Expression', function() {
-        return new While(new Literal('true')).addBody(Block.wrap([$2]));
+        return new While(LOC(1)(new Literal('true'))).addBody(LOC(2)(Block.wrap([$2])));
       })
     ],
     For: [
@@ -398,7 +419,7 @@
     ForBody: [
       o('FOR Range', function() {
         return {
-          source: new Value($2)
+          source: LOC(2)(new Value($2))
         };
       }), o('ForStart ForSource', function() {
         $2.own = $1.own;
@@ -498,21 +519,21 @@
           type: $1
         });
       }), o('IfBlock ELSE IF Expression Block', function() {
-        return $1.addElse(new If($4, $5, {
+        return $1.addElse(LOC(3, 5)(new If($4, $5, {
           type: $3
-        }));
+        })));
       })
     ],
     If: [
       o('IfBlock'), o('IfBlock ELSE Block', function() {
         return $1.addElse($3);
       }), o('Statement  POST_IF Expression', function() {
-        return new If($3, Block.wrap([$1]), {
+        return new If($3, LOC(1)(Block.wrap([$1])), {
           type: $2,
           statement: true
         });
       }), o('Expression POST_IF Expression', function() {
-        return new If($3, Block.wrap([$1]), {
+        return new If($3, LOC(1)(Block.wrap([$1])), {
           type: $2,
           statement: true
         });
@@ -521,14 +542,16 @@
     Operation: [
       o('UNARY Expression', function() {
         return new Op($1, $2);
+      }), o('UNARY_MATH Expression', function() {
+        return new Op($1, $2);
       }), o('-     Expression', (function() {
         return new Op('-', $2);
       }), {
-        prec: 'UNARY'
+        prec: 'UNARY_MATH'
       }), o('+     Expression', (function() {
         return new Op('+', $2);
       }), {
-        prec: 'UNARY'
+        prec: 'UNARY_MATH'
       }), o('-- SimpleAssignable', function() {
         return new Op('--', $2);
       }), o('++ SimpleAssignable', function() {
@@ -545,6 +568,8 @@
         return new Op('-', $1, $3);
       }), o('Expression MATH     Expression', function() {
         return new Op($2, $1, $3);
+      }), o('Expression **       Expression', function() {
+        return new Op($2, $1, $3);
       }), o('Expression SHIFT    Expression', function() {
         return new Op($2, $1, $3);
       }), o('Expression COMPARE  Expression', function() {
@@ -557,11 +582,11 @@
         } else {
           return new Op($2, $1, $3);
         }
-      }), o('SimpleAssignable COMPOUND_ASSIGN\
-       Expression', function() {
+      }), o('SimpleAssignable COMPOUND_ASSIGN Expression', function() {
         return new Assign($1, $3, $2);
-      }), o('SimpleAssignable COMPOUND_ASSIGN\
-       INDENT Expression OUTDENT', function() {
+      }), o('SimpleAssignable COMPOUND_ASSIGN INDENT Expression OUTDENT', function() {
+        return new Assign($1, $4, $2);
+      }), o('SimpleAssignable COMPOUND_ASSIGN TERMINATOR Expression', function() {
         return new Assign($1, $4, $2);
       }), o('SimpleAssignable EXTENDS Expression', function() {
         return new Extends($1, $3);
@@ -569,7 +594,7 @@
     ]
   };
 
-  operators = [['left', '.', '?.', '::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['right', 'POST_IF']];
+  operators = [['left', '.', '?.', '::', '?::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['right', '**'], ['right', 'UNARY_MATH'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['left', 'POST_IF']];
 
   tokens = [];