You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2016/03/04 13:35:54 UTC

[07/14] cordova-browser git commit: CB-10788 Updated checked in node_modules

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
index 9e2800d..ee5179d 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
@@ -1 +1 @@
-(function(){var r,t,e,n,i,o,a,s;t={},s=this,"undefined"!=typeof module&&null!==module&&module.exports?module.exports=t:s.ipaddr=t,a=function(r,t,e,n){var i,o;if(r.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;n>0;){if(o=e-n,0>o&&(o=0),r[i]>>o!==t[i]>>o)return!1;n-=e,i+=1}return!0},t.subnetMatch=function(r,t,e){var n,i,o,a,s;null==e&&(e="unicast");for(n in t)for(i=t[n],"[object Array]"!==toString.call(i[0])&&(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],r.match.apply(r,o))return n;return e},t.IPv4=function(){function r(r){var t,e,n;if(4!==r.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(e=0,n=r.length;n>e;e++)if(t=r[e],!(t>=0&&255>=t))throw new Error("ipaddr: ipv4 octet is a byte");this.octets=r}return r.prototype.kind=function(){return"ipv4"},r.prototype.toString=function(){return this.octets.join(".")},r.prototype.toByteArray=function(){return this.octets.slice(0)},r.prototype.match=function(r,t){var e;if(vo
 id 0===t&&(e=r,r=e[0],t=e[1]),"ipv4"!==r.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,r.octets,8,t)},r.prototype.SpecialRanges={unspecified:[[new r([0,0,0,0]),8]],broadcast:[[new r([255,255,255,255]),32]],multicast:[[new r([224,0,0,0]),4]],linkLocal:[[new r([169,254,0,0]),16]],loopback:[[new r([127,0,0,0]),8]],"private":[[new r([10,0,0,0]),8],[new r([172,16,0,0]),12],[new r([192,168,0,0]),16]],reserved:[[new r([192,0,0,0]),24],[new r([192,0,2,0]),24],[new r([192,88,99,0]),24],[new r([198,51,100,0]),24],[new r([203,0,113,0]),24],[new r([240,0,0,0]),4]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.toIPv4MappedAddress=function(){return t.IPv6.parse("::ffff:"+this.toString())},r}(),e="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+e+"\\."+e+"\\."+e+"\\."+e+"$","i"),longValue:new RegExp("^"+e+"$","i")},t.IPv4.parser=function(r){var t,e,i,o,a;if(e=function(r){return"0"===r[0]&&"x"!==r[1]?p
 arseInt(r,8):parseInt(r)},t=r.match(n.fourOctet))return function(){var r,n,o,a;for(o=t.slice(1,6),a=[],r=0,n=o.length;n>r;r++)i=o[r],a.push(e(i));return a}();if(t=r.match(n.longValue)){if(a=e(t[1]),a>4294967295||0>a)throw new Error("ipaddr: address outside defined range");return function(){var r,t;for(t=[],o=r=0;24>=r;o=r+=8)t.push(a>>o&255);return t}().reverse()}return null},t.IPv6=function(){function r(r){var t,e,n;if(8!==r.length)throw new Error("ipaddr: ipv6 part count should be 8");for(e=0,n=r.length;n>e;e++)if(t=r[e],!(t>=0&&65535>=t))throw new Error("ipaddr: ipv6 part should fit to two octets");this.parts=r}return r.prototype.kind=function(){return"ipv6"},r.prototype.toString=function(){var r,t,e,n,i,o,a;for(i=function(){var r,e,n,i;for(n=this.parts,i=[],r=0,e=n.length;e>r;r++)t=n[r],i.push(t.toString(16));return i}.call(this),r=[],e=function(t){return r.push(t)},n=0,o=0,a=i.length;a>o;o++)switch(t=i[o],n){case 0:e("0"===t?"":t),n=1;break;case 1:"0"===t?n=2:e(t);break;case 2:
 "0"!==t&&(e(""),e(t),n=3);break;case 3:e(t)}return 2===n&&(e(""),e("")),r.join(":")},r.prototype.toByteArray=function(){var r,t,e,n,i;for(r=[],i=this.parts,e=0,n=i.length;n>e;e++)t=i[e],r.push(t>>8),r.push(255&t);return r},r.prototype.toNormalizedString=function(){var r;return function(){var t,e,n,i;for(n=this.parts,i=[],t=0,e=n.length;e>t;t++)r=n[t],i.push(r.toString(16));return i}.call(this).join(":")},r.prototype.match=function(r,t){var e;if(void 0===t&&(e=r,r=e[0],t=e[1]),"ipv6"!==r.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,r.parts,16,t)},r.prototype.SpecialRanges={unspecified:[new r([0,0,0,0,0,0,0,0]),128],linkLocal:[new r([65152,0,0,0,0,0,0,0]),10],multicast:[new r([65280,0,0,0,0,0,0,0]),8],loopback:[new r([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new r([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new r([0,0,0,0,0,65535,0,0]),96],rfc6145:[new r([0,0,0,0,65535,0,0,0]),96],rfc6052:[new r([100,65435,0,0,0,0,0,0]),96],"6to4":[new r([8194
 ,0,0,0,0,0,0,0]),16],teredo:[new r([8193,0,0,0,0,0,0,0]),32],reserved:[[new r([8193,3512,0,0,0,0,0,0]),32]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},r.prototype.toIPv4Address=function(){var r,e,n;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return n=this.parts.slice(-2),r=n[0],e=n[1],new t.IPv4([r>>8,255&r,e>>8,255&e])},r}(),i="(?:[0-9a-f]+::?)+",o={"native":new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+e+"\\."+e+"\\."+e+"\\."+e+"$"),"i")},r=function(r,t){var e,n,i,o,a;if(r.indexOf("::")!==r.lastIndexOf("::"))return null;for(e=0,n=-1;(n=r.indexOf(":",n+1))>=0;)e++;if(":"===r[0]&&e--,":"===r[r.length-1]&&e--,e>t)return null;for(a=t-e,o=":";a--;)o+="0:";return r=r.replace("::",o),":"===r[0]&&(r=r.slice(1)),":"===r[r.length-1]&&(r=r.slice(0,-1)),fun
 ction(){var t,e,n,o;for(n=r.split(":"),o=[],t=0,e=n.length;e>t;t++)i=n[t],o.push(parseInt(i,16));return o}()},t.IPv6.parser=function(t){var e,n;return t.match(o["native"])?r(t,8):(e=t.match(o.transitional))&&(n=r(e[1].slice(0,-1),6))?(n.push(parseInt(e[2])<<8|parseInt(e[3])),n.push(parseInt(e[4])<<8|parseInt(e[5])),n):null},t.IPv4.isIPv4=t.IPv6.isIPv6=function(r){return null!==this.parser(r)},t.IPv4.isValid=t.IPv6.isValid=function(r){var t;try{return new this(this.parser(r)),!0}catch(e){return t=e,!1}},t.IPv4.parse=t.IPv6.parse=function(r){var t;if(t=this.parser(r),null===t)throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},t.IPv4.parseCIDR=t.IPv6.parseCIDR=function(r){var t;if(t=r.match(/^(.+)\/(\d+)$/))return[this.parse(t[1]),parseInt(t[2])];throw new Error("ipaddr: string is not formatted like a CIDR range")},t.isValid=function(r){return t.IPv6.isValid(r)||t.IPv4.isValid(r)},t.parse=function(r){if(t.IPv6.isValid(r))return t.IPv6.parse(r);if(t.I
 Pv4.isValid(r))return t.IPv4.parse(r);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},t.parseCIDR=function(r){var e;try{return t.IPv6.parseCIDR(r)}catch(n){e=n;try{return t.IPv4.parseCIDR(r)}catch(n){throw e=n,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},t.process=function(r){var t;return t=this.parse(r),"ipv6"===t.kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(this);
\ No newline at end of file
+(function(){var r,t,n,e,i,o,a,s;t={},s=this,"undefined"!=typeof module&&null!==module&&module.exports?module.exports=t:s.ipaddr=t,a=function(r,t,n,e){var i,o;if(r.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;e>0;){if(o=n-e,0>o&&(o=0),r[i]>>o!==t[i]>>o)return!1;e-=n,i+=1}return!0},t.subnetMatch=function(r,t,n){var e,i,o,a,s;null==n&&(n="unicast");for(e in t)for(i=t[e],!i[0]||i[0]instanceof Array||(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],r.match.apply(r,o))return e;return n},t.IPv4=function(){function r(r){var t,n,e;if(4!==r.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(n=0,e=r.length;e>n;n++)if(t=r[n],!(t>=0&&255>=t))throw new Error("ipaddr: ipv4 octet is a byte");this.octets=r}return r.prototype.kind=function(){return"ipv4"},r.prototype.toString=function(){return this.octets.join(".")},r.prototype.toByteArray=function(){return this.octets.slice(0)},r.prototype.match=function(r,t){var n;if(void 0===t&&(
 n=r,r=n[0],t=n[1]),"ipv4"!==r.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,r.octets,8,t)},r.prototype.SpecialRanges={unspecified:[[new r([0,0,0,0]),8]],broadcast:[[new r([255,255,255,255]),32]],multicast:[[new r([224,0,0,0]),4]],linkLocal:[[new r([169,254,0,0]),16]],loopback:[[new r([127,0,0,0]),8]],"private":[[new r([10,0,0,0]),8],[new r([172,16,0,0]),12],[new r([192,168,0,0]),16]],reserved:[[new r([192,0,0,0]),24],[new r([192,0,2,0]),24],[new r([192,88,99,0]),24],[new r([198,51,100,0]),24],[new r([203,0,113,0]),24],[new r([240,0,0,0]),4]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.toIPv4MappedAddress=function(){return t.IPv6.parse("::ffff:"+this.toString())},r}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},t.IPv4.parser=function(r){var t,n,i,o,a;if(n=function(r){return"0"===r[0]&&"x"!==r[1]?parseInt(r,8
 ):parseInt(r)},t=r.match(e.fourOctet))return function(){var r,e,o,a;for(o=t.slice(1,6),a=[],r=0,e=o.length;e>r;r++)i=o[r],a.push(n(i));return a}();if(t=r.match(e.longValue)){if(a=n(t[1]),a>4294967295||0>a)throw new Error("ipaddr: address outside defined range");return function(){var r,t;for(t=[],o=r=0;24>=r;o=r+=8)t.push(a>>o&255);return t}().reverse()}return null},t.IPv6=function(){function r(r){var t,n,e;if(8!==r.length)throw new Error("ipaddr: ipv6 part count should be 8");for(n=0,e=r.length;e>n;n++)if(t=r[n],!(t>=0&&65535>=t))throw new Error("ipaddr: ipv6 part should fit to two octets");this.parts=r}return r.prototype.kind=function(){return"ipv6"},r.prototype.toString=function(){var r,t,n,e,i,o,a;for(i=function(){var r,n,e,i;for(e=this.parts,i=[],r=0,n=e.length;n>r;r++)t=e[r],i.push(t.toString(16));return i}.call(this),r=[],n=function(t){return r.push(t)},e=0,o=0,a=i.length;a>o;o++)switch(t=i[o],e){case 0:n("0"===t?"":t),e=1;break;case 1:"0"===t?e=2:n(t);break;case 2:"0"!==t&&(n
 (""),n(t),e=3);break;case 3:n(t)}return 2===e&&(n(""),n("")),r.join(":")},r.prototype.toByteArray=function(){var r,t,n,e,i;for(r=[],i=this.parts,n=0,e=i.length;e>n;n++)t=i[n],r.push(t>>8),r.push(255&t);return r},r.prototype.toNormalizedString=function(){var r;return function(){var t,n,e,i;for(e=this.parts,i=[],t=0,n=e.length;n>t;t++)r=e[t],i.push(r.toString(16));return i}.call(this).join(":")},r.prototype.match=function(r,t){var n;if(void 0===t&&(n=r,r=n[0],t=n[1]),"ipv6"!==r.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,r.parts,16,t)},r.prototype.SpecialRanges={unspecified:[new r([0,0,0,0,0,0,0,0]),128],linkLocal:[new r([65152,0,0,0,0,0,0,0]),10],multicast:[new r([65280,0,0,0,0,0,0,0]),8],loopback:[new r([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new r([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new r([0,0,0,0,0,65535,0,0]),96],rfc6145:[new r([0,0,0,0,65535,0,0,0]),96],rfc6052:[new r([100,65435,0,0,0,0,0,0]),96],"6to4":[new r([8194,0,0,0,0,0,
 0,0]),16],teredo:[new r([8193,0,0,0,0,0,0,0]),32],reserved:[[new r([8193,3512,0,0,0,0,0,0]),32]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},r.prototype.toIPv4Address=function(){var r,n,e;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=this.parts.slice(-2),r=e[0],n=e[1],new t.IPv4([r>>8,255&r,n>>8,255&n])},r}(),i="(?:[0-9a-f]+::?)+",o={"native":new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+n+"\\."+n+"\\."+n+"\\."+n+"$"),"i")},r=function(r,t){var n,e,i,o,a;if(r.indexOf("::")!==r.lastIndexOf("::"))return null;for(n=0,e=-1;(e=r.indexOf(":",e+1))>=0;)n++;if("::"===r.substr(0,2)&&n--,"::"===r.substr(-2,2)&&n--,n>t)return null;for(a=t-n,o=":";a--;)o+="0:";return r=r.replace("::",o),":"===r[0]&&(r=r.slice(1)),":"===r[r.length-1]&&(r=r.slice(0,-1)),fu
 nction(){var t,n,e,o;for(e=r.split(":"),o=[],t=0,n=e.length;n>t;t++)i=e[t],o.push(parseInt(i,16));return o}()},t.IPv6.parser=function(t){var n,e;return t.match(o["native"])?r(t,8):(n=t.match(o.transitional))&&(e=r(n[1].slice(0,-1),6))?(e.push(parseInt(n[2])<<8|parseInt(n[3])),e.push(parseInt(n[4])<<8|parseInt(n[5])),e):null},t.IPv4.isIPv4=t.IPv6.isIPv6=function(r){return null!==this.parser(r)},t.IPv4.isValid=function(r){var t;try{return new this(this.parser(r)),!0}catch(n){return t=n,!1}},t.IPv6.isValid=function(r){var t;if("string"==typeof r&&-1===r.indexOf(":"))return!1;try{return new this(this.parser(r)),!0}catch(n){return t=n,!1}},t.IPv4.parse=t.IPv6.parse=function(r){var t;if(t=this.parser(r),null===t)throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},t.IPv4.parseCIDR=function(r){var t,n;if((n=r.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&32>=t))return[this.parse(n[1]),t];throw new Error("ipaddr: string is not formatted like an IPv4 CIDR
  range")},t.IPv6.parseCIDR=function(r){var t,n;if((n=r.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&128>=t))return[this.parse(n[1]),t];throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},t.isValid=function(r){return t.IPv6.isValid(r)||t.IPv4.isValid(r)},t.parse=function(r){if(t.IPv6.isValid(r))return t.IPv6.parse(r);if(t.IPv4.isValid(r))return t.IPv4.parse(r);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},t.parseCIDR=function(r){var n;try{return t.IPv6.parseCIDR(r)}catch(e){n=e;try{return t.IPv4.parseCIDR(r)}catch(e){throw n=e,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},t.process=function(r){var t;return t=this.parse(r),"ipv6"===t.kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
index 5d99e08..ef179b4 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
@@ -38,7 +38,7 @@
     }
     for (rangeName in rangeList) {
       rangeSubnets = rangeList[rangeName];
-      if (toString.call(rangeSubnets[0]) !== '[object Array]') {
+      if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {
         rangeSubnets = [rangeSubnets];
       }
       for (_i = 0, _len = rangeSubnets.length; _i < _len; _i++) {
@@ -317,10 +317,10 @@
     while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {
       colonCount++;
     }
-    if (string[0] === ':') {
+    if (string.substr(0, 2) === '::') {
       colonCount--;
     }
-    if (string[string.length - 1] === ':') {
+    if (string.substr(-2, 2) === '::') {
       colonCount--;
     }
     if (colonCount > parts) {
@@ -369,8 +369,22 @@
     return this.parser(string) !== null;
   };
 
-  ipaddr.IPv4.isValid = ipaddr.IPv6.isValid = function(string) {
+  ipaddr.IPv4.isValid = function(string) {
+    var e;
+    try {
+      new this(this.parser(string));
+      return true;
+    } catch (_error) {
+      e = _error;
+      return false;
+    }
+  };
+
+  ipaddr.IPv6.isValid = function(string) {
     var e;
+    if (typeof string === "string" && string.indexOf(":") === -1) {
+      return false;
+    }
     try {
       new this(this.parser(string));
       return true;
@@ -389,12 +403,26 @@
     return new this(parts);
   };
 
-  ipaddr.IPv4.parseCIDR = ipaddr.IPv6.parseCIDR = function(string) {
-    var match;
+  ipaddr.IPv4.parseCIDR = function(string) {
+    var maskLength, match;
+    if (match = string.match(/^(.+)\/(\d+)$/)) {
+      maskLength = parseInt(match[2]);
+      if (maskLength >= 0 && maskLength <= 32) {
+        return [this.parse(match[1]), maskLength];
+      }
+    }
+    throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range");
+  };
+
+  ipaddr.IPv6.parseCIDR = function(string) {
+    var maskLength, match;
     if (match = string.match(/^(.+)\/(\d+)$/)) {
-      return [this.parse(match[1]), parseInt(match[2])];
+      maskLength = parseInt(match[2]);
+      if (maskLength >= 0 && maskLength <= 128) {
+        return [this.parse(match[1]), maskLength];
+      }
     }
-    throw new Error("ipaddr: string is not formatted like a CIDR range");
+    throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range");
   };
 
   ipaddr.isValid = function(string) {

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
index 1bacc3e..6b61f32 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
@@ -1,9 +1,9 @@
 {
   "name": "ipaddr.js",
   "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.",
-  "version": "1.0.1",
+  "version": "1.0.5",
   "author": {
-    "name": "Peter Zotov",
+    "name": "whitequark",
     "email": "whitequark@whitequark.org"
   },
   "directories": {
@@ -12,7 +12,7 @@
   "dependencies": {},
   "devDependencies": {
     "coffee-script": "~1.6",
-    "nodeunit": "~0.5.3",
+    "nodeunit": ">=0.8.2 <0.8.7",
     "uglify-js": "latest"
   },
   "scripts": {
@@ -29,17 +29,32 @@
   },
   "main": "./lib/ipaddr",
   "engines": {
-    "node": ">= 0.2.5"
+    "node": ">= 0.10"
   },
   "license": "MIT",
-  "readme": "# ipaddr.js — an IPv6 and IPv4 address manipulation library\n\nipaddr.js is a small (1.9K minified and gzipped) library for manipulating\nIP addresses in JavaScript environments. It runs on both CommonJS runtimes\n(e.g. [nodejs]) and in a web browser.\n\nipaddr.js allows you to verify and parse string representation of an IP\naddress, match it against a CIDR range or range list, determine if it falls\ninto some reserved ranges (examples include loopback and private ranges),\nand convert between IPv4 and IPv4-mapped IPv6 addresses.\n\n[nodejs]: http://nodejs.org\n\n## Installation\n\n`npm install ipaddr.js`\n\n## API\n\nipaddr.js defines one object in the global scope: `ipaddr`. In CommonJS,\nit is exported from the module:\n\n```js\nvar ipaddr = require('ipaddr.js');\n```\n\nThe API consists of several global methods and two classes: ipaddr.IPv6 and ipaddr.IPv4.\n\n### Global methods\n\nThere are three global methods defined: `ipaddr.isValid`, `ipaddr.parse` and\n`ipa
 ddr.process`. All of them receive a string as a single parameter.\n\nThe `ipaddr.isValid` method returns `true` if the address is a valid IPv4 or\nIPv6 address, and `false` otherwise. It does not throw any exceptions.\n\nThe `ipaddr.parse` method returns an object representing the IP address,\nor throws an `Error` if the passed string is not a valid representation of an\nIP address.\n\nThe `ipaddr.process` method works just like the `ipaddr.parse` one, but it\nautomatically converts IPv4-mapped IPv6 addresses to their IPv4 couterparts\nbefore returning. It is useful when you have a Node.js instance listening\non an IPv6 socket, and the `net.ivp6.bindv6only` sysctl parameter (or its\nequivalent on non-Linux OS) is set to 0. In this case, you can accept IPv4\nconnections on your IPv6-only socket, but the remote address will be mangled.\nUse `ipaddr.process` method to automatically demangle it.\n\n### Object representation\n\nParsing methods return an object which descends from `ipaddr
 .IPv6` or\n`ipaddr.IPv4`. These objects share some properties, but most of them differ.\n\n#### Shared properties\n\nOne can determine the type of address by calling `addr.kind()`. It will return\neither `\"ipv6\"` or `\"ipv4\"`.\n\nAn address can be converted back to its string representation with `addr.toString()`.\nNote that this method:\n * does not return the original string used to create the object (in fact, there is\n   no way of getting that string)\n * returns a compact representation (when it is applicable)\n\nA `match(range, bits)` method can be used to check if the address falls into a\ncertain CIDR range.\nNote that an address can be (obviously) matched only against an address of the same type.\n\nFor example:\n\n```js\nvar addr = ipaddr.parse(\"2001:db8:1234::1\");\nvar range = ipaddr.parse(\"2001:db8::\");\n\naddr.match(range, 32); // => true\n```\n\nAlternatively, `match` can also be called as `match([range, bits])`. In this way,\nit can be used together with the `p
 arseCIDR(string)` method, which parses an IP\naddress together with a CIDR range.\n\nFor example:\n\n```js\nvar addr = ipaddr.parse(\"2001:db8:1234::1\");\n\naddr.match(ipaddr.parseCIDR(\"2001:db8::/32\")); // => true\n```\n\nA `range()` method returns one of predefined names for several special ranges defined\nby IP protocols. The exact names (and their respective CIDR ranges) can be looked up\nin the source: [IPv6 ranges] and [IPv4 ranges]. Some common ones include `\"unicast\"`\n(the default one) and `\"reserved\"`.\n\nYou can match against your own range list by using\n`ipaddr.subnetMatch(address, rangeList, defaultName)` method. It can work with both\nIPv6 and IPv4 addresses, and accepts a name-to-subnet map as the range list. For example:\n\n```js\nvar rangeList = {\n  documentationOnly: [ ipaddr.parse('2001:db8::'), 32 ],\n  tunnelProviders: [\n    [ ipaddr.parse('2001:470::'), 32 ], // he.net\n    [ ipaddr.parse('2001:5c0::'), 32 ]  // freenet6\n  ]\n};\nipaddr.subnetMatch(i
 paddr.parse('2001:470:8:66::1'), rangeList, 'unknown'); // => \"he.net\"\n```\n\nThe addresses can be converted to their byte representation with `toByteArray()`.\n(Actually, JavaScript mostly does not know about byte buffers. They are emulated with\narrays of numbers, each in range of 0..255.)\n\n```js\nvar bytes = ipaddr.parse('2a00:1450:8007::68').toByteArray(); // ipv6.google.com\nbytes // => [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, <zeroes...>, 0x00, 0x68 ]\n```\n\nThe `ipaddr.IPv4` and `ipaddr.IPv6` objects have some methods defined, too. All of them\nhave the same interface for both protocols, and are similar to global methods.\n\n`ipaddr.IPvX.isValid(string)` can be used to check if the string is a valid address\nfor particular protocol, and `ipaddr.IPvX.parse(string)` is the error-throwing parser.\n\n[IPv6 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L186\n[IPv4 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#
 L71\n\n#### IPv6 properties\n\nSometimes you will want to convert IPv6 not to a compact string representation (with\nthe `::` substitution); the `toNormalizedString()` method will return an address where\nall zeroes are explicit.\n\nFor example:\n\n```js\nvar addr = ipaddr.parse(\"2001:0db8::0001\");\naddr.toString(); // => \"2001:db8::1\"\naddr.toNormalizedString(); // => \"2001:db8:0:0:0:0:0:1\"\n```\n\nThe `isIPv4MappedAddress()` method will return `true` if this address is an IPv4-mapped\none, and `toIPv4Address()` will return an IPv4 object address.\n\nTo access the underlying binary representation of the address, use `addr.parts`.\n\n```js\nvar addr = ipaddr.parse(\"2001:db8:10::1234:DEAD\");\naddr.parts // => [0x2001, 0xdb8, 0x10, 0, 0, 0, 0x1234, 0xdead]\n```\n\n#### IPv4 properties\n\n`toIPv4MappedAddress()` will return a corresponding IPv4-mapped IPv6 address.\n\nTo access the underlying representation of the address, use `addr.octets`.\n\n```js\nvar addr = ipaddr.parse(\"
 192.168.1.1\");\naddr.octets // => [192, 168, 1, 1]\n```\n",
-  "readmeFilename": "README.md",
+  "gitHead": "46438c8bfa187505b7007a277f09a4a9e73d5686",
   "bugs": {
     "url": "https://github.com/whitequark/ipaddr.js/issues"
   },
-  "homepage": "https://github.com/whitequark/ipaddr.js#readme",
-  "_id": "ipaddr.js@1.0.1",
-  "_shasum": "5f38801dc73e0400fc7076386f6ed5215fbd8f95",
-  "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz",
-  "_from": "ipaddr.js@1.0.1"
+  "_id": "ipaddr.js@1.0.5",
+  "_shasum": "5fa78cf301b825c78abc3042d812723049ea23c7",
+  "_from": "ipaddr.js@1.0.5",
+  "_npmVersion": "1.4.21",
+  "_npmUser": {
+    "name": "whitequark",
+    "email": "whitequark@whitequark.org"
+  },
+  "maintainers": [
+    {
+      "name": "whitequark",
+      "email": "whitequark@whitequark.org"
+    }
+  ],
+  "dist": {
+    "shasum": "5fa78cf301b825c78abc3042d812723049ea23c7",
+    "tarball": "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz"
+  },
+  "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz",
+  "readme": "ERROR: No README data found!",
+  "homepage": "https://github.com/whitequark/ipaddr.js#readme"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
index 0a48080..550174f 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
@@ -31,7 +31,7 @@ matchCIDR = (first, second, partSize, cidrBits) ->
 ipaddr.subnetMatch = (address, rangeList, defaultName='unicast') ->
   for rangeName, rangeSubnets of rangeList
     # ECMA5 Array.isArray isn't available everywhere
-    if toString.call(rangeSubnets[0]) != '[object Array]'
+    if rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)
       rangeSubnets = [ rangeSubnets ]
 
     for subnet in rangeSubnets
@@ -279,8 +279,8 @@ expandIPv6 = (string, parts) ->
     colonCount++
 
   # 0::0 is two parts more than ::
-  colonCount-- if string[0] == ':'
-  colonCount-- if string[string.length-1] == ':'
+  colonCount-- if string.substr(0, 2) == '::'
+  colonCount-- if string.substr(-2, 2) == '::'
 
   # The following loop would hang if colonCount > parts
   if colonCount > parts
@@ -321,7 +321,19 @@ ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = (string) ->
   return @parser(string) != null
 
 # Checks if a given string is a valid IPv4/IPv6 address.
-ipaddr.IPv4.isValid = ipaddr.IPv6.isValid = (string) ->
+ipaddr.IPv4.isValid = (string) ->
+  try
+    new this(@parser(string))
+    return true
+  catch e
+    return false
+
+ipaddr.IPv6.isValid = (string) ->
+  # Since IPv6.isValid is always called first, this shortcut
+  # provides a substantial performance gain.
+  if typeof string == "string" and string.indexOf(":") == -1
+    return false
+
   try
     new this(@parser(string))
     return true
@@ -337,11 +349,21 @@ ipaddr.IPv4.parse = ipaddr.IPv6.parse = (string) ->
 
   return new this(parts)
 
-ipaddr.IPv4.parseCIDR = ipaddr.IPv6.parseCIDR = (string) ->
+ipaddr.IPv4.parseCIDR = (string) ->
+  if match = string.match(/^(.+)\/(\d+)$/)
+    maskLength = parseInt(match[2])
+    if maskLength >= 0 and maskLength <= 32
+      return [@parse(match[1]), maskLength]
+
+  throw new Error "ipaddr: string is not formatted like an IPv4 CIDR range"
+
+ipaddr.IPv6.parseCIDR = (string) ->
   if match = string.match(/^(.+)\/(\d+)$/)
-    return [@parse(match[1]), parseInt(match[2])]
+    maskLength = parseInt(match[2])
+    if maskLength >= 0 and maskLength <= 128
+      return [@parse(match[1]), maskLength]
 
-  throw new Error "ipaddr: string is not formatted like a CIDR range"
+  throw new Error "ipaddr: string is not formatted like an IPv6 CIDR range"
 
 # Checks if the address is valid IP address
 ipaddr.isValid = (string) ->

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
index 361561e..17739e2 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
@@ -87,6 +87,10 @@ module.exports =
     test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.5.0.1/32')), true)
     test.throws ->
       ipaddr.IPv4.parseCIDR('10.5.0.1')
+    test.throws ->
+      ipaddr.IPv4.parseCIDR('0.0.0.0/-1')
+    test.throws ->
+      ipaddr.IPv4.parseCIDR('0.0.0.0/33')
     test.done()
 
   'detects reserved IPv4 networks': (test) ->
@@ -142,13 +146,15 @@ module.exports =
     test.done()
 
   'validates IPv6 addresses': (test) ->
-    test.equal(ipaddr.IPv6.isValid('2001:db8:F53A::1'),    true)
-    test.equal(ipaddr.IPv6.isValid('200001::1'),           false)
+    test.equal(ipaddr.IPv6.isValid('2001:db8:F53A::1'),     true)
+    test.equal(ipaddr.IPv6.isValid('200001::1'),            false)
     test.equal(ipaddr.IPv6.isValid('::ffff:192.168.1.1'),   true)
     test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1'),   false)
     test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1:0'), false)
-    test.equal(ipaddr.IPv6.isValid('2001:db8::F53A::1'),   false)
-    test.equal(ipaddr.IPv6.isValid('fe80::wtf'),           false)
+    test.equal(ipaddr.IPv6.isValid('2001:db8::F53A::1'),    false)
+    test.equal(ipaddr.IPv6.isValid('fe80::wtf'),            false)
+    test.equal(ipaddr.IPv6.isValid('2002::2:'),             false)
+    test.equal(ipaddr.IPv6.isValid(undefined),              false)
     test.done()
 
   'parses IPv6 in different formats': (test) ->
@@ -186,6 +192,10 @@ module.exports =
     test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/128')),  true)
     test.throws ->
       ipaddr.IPv6.parseCIDR('2001:db8:f53a::1')
+    test.throws ->
+      ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/-1')
+    test.throws ->
+      ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/129')
     test.done()
 
   'converts between IPv4-mapped IPv6 addresses and IPv4 addresses': (test) ->
@@ -260,3 +270,13 @@ module.exports =
   'does not hang on ::8:8:8:8:8:8:8:8:8': (test) ->
     test.equal(ipaddr.IPv6.isValid('::8:8:8:8:8:8:8:8:8'), false)
     test.done()
+
+  'subnetMatch does not fail on empty range': (test) ->
+    ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {}, false)
+    ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {subnet: []}, false)
+    test.done()
+
+  'subnetMatch returns default subnet on empty range': (test) ->
+    test.equal(ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {}, false), false)
+    test.equal(ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {subnet: []}, false), false)
+    test.done()

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/package.json
index 5c9c054..04af756 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/proxy-addr/package.json
@@ -1,7 +1,7 @@
 {
   "name": "proxy-addr",
   "description": "Determine address of proxied request",
-  "version": "1.0.8",
+  "version": "1.0.10",
   "author": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
@@ -18,12 +18,12 @@
   },
   "dependencies": {
     "forwarded": "~0.1.0",
-    "ipaddr.js": "1.0.1"
+    "ipaddr.js": "1.0.5"
   },
   "devDependencies": {
     "benchmark": "1.0.0",
     "beautify-benchmark": "0.2.4",
-    "istanbul": "0.3.9",
+    "istanbul": "0.4.1",
     "mocha": "~1.21.5"
   },
   "files": [
@@ -41,14 +41,50 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
   },
-  "readme": "# proxy-addr\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nDetermine address of proxied request\n\n## Install\n\n```sh\n$ npm install proxy-addr\n```\n\n## API\n\n```js\nvar proxyaddr = require('proxy-addr')\n```\n\n### proxyaddr(req, trust)\n\nReturn the address of the request, using the given `trust` parameter.\n\nThe `trust` argument is a function that returns `true` if you trust\nthe address, `false` if you don't. The closest untrusted address is\nreturned.\n\n```js\nproxyaddr(req, function(addr){ return addr === '127.0.0.1' })\nproxyaddr(req, function(addr, i){ return i < 1 })\n```\n\nThe `trust` arugment may also be a single IP address string or an\narray of trusted addresses, as plain IP addresses, CIDR-formatted\nstrings, or IP/netmask strings.\n\n```js\nproxy
 addr(req, '127.0.0.1')\nproxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8'])\nproxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0'])\n```\n\nThis module also supports IPv6. Your IPv6 addresses will be normalized\nautomatically (i.e. `fe80::00ed:1` equals `fe80:0:0:0:0:0:ed:1`).\n\n```js\nproxyaddr(req, '::1')\nproxyaddr(req, ['::1/128', 'fe80::/10'])\nproxyaddr(req, ['fe80::/ffc0::'])\n```\n\nThis module will automatically work with IPv4-mapped IPv6 addresses\nas well to support node.js in IPv6-only mode. This means that you do\nnot have to specify both `::ffff:a00:1` and `10.0.0.1`.\n\nAs a convenience, this module also takes certain pre-defined names\nin addition to IP addresses, which expand into IP addresses:\n\n```js\nproxyaddr(req, 'loopback')\nproxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64'])\n```\n\n  * `loopback`: IPv4 and IPv6 loopback addresses (like `::1` and\n    `127.0.0.1`).\n  * `linklocal`: IPv4 and IPv6 link-local addresses (like\n    `fe80::1:1:1:1` and 
 `169.254.0.1`).\n  * `uniquelocal`: IPv4 private addresses and IPv6 unique-local\n    addresses (like `fc00:ac:1ab5:fff::1` and `192.168.0.1`).\n\nWhen `trust` is specified as a function, it will be called for each\naddress to determine if it is a trusted address. The function is\ngiven two arguments: `addr` and `i`, where `addr` is a string of\nthe address to check and `i` is a number that represents the distance\nfrom the socket address.\n\n### proxyaddr.all(req, [trust])\n\nReturn all the addresses of the request, optionally stopping at the\nfirst untrusted. This array is ordered from closest to furthest\n(i.e. `arr[0] === req.connection.remoteAddress`).\n\n```js\nproxyaddr.all(req)\n```\n\nThe optional `trust` argument takes the same arguments as `trust`\ndoes in `proxyaddr(req, trust)`.\n\n```js\nproxyaddr.all(req, 'loopback')\n```\n\n### proxyaddr.compile(val)\n\nCompiles argument `val` into a `trust` function. This function takes\nthe same arguments as `trust` does in `proxya
 ddr(req, trust)` and\nreturns a function suitable for `proxyaddr(req, trust)`.\n\n```js\nvar trust = proxyaddr.compile('localhost')\nvar addr  = proxyaddr(req, trust)\n```\n\nThis function is meant to be optimized for use against every request.\nIt is recommend to compile a trust function up-front for the trusted\nconfiguration and pass that to `proxyaddr(req, trust)` for each request.\n\n## Testing\n\n```sh\n$ npm test\n```\n\n## Benchmarks\n\n```sh\n$ npm run-script bench\n```\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/proxy-addr.svg\n[npm-url]: https://npmjs.org/package/proxy-addr\n[node-version-image]: https://img.shields.io/node/v/proxy-addr.svg\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/proxy-addr/master.svg\n[travis-url]: https://travis-ci.org/jshttp/proxy-addr\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/proxy-addr/master.svg\n[coveralls-url]: https://coveralls.io/r/j
 shttp/proxy-addr?branch=master\n[downloads-image]: https://img.shields.io/npm/dm/proxy-addr.svg\n[downloads-url]: https://npmjs.org/package/proxy-addr\n",
-  "readmeFilename": "README.md",
+  "gitHead": "0cdb6444100a7930285ed2555d0c3c687690a7a5",
   "bugs": {
     "url": "https://github.com/jshttp/proxy-addr/issues"
   },
-  "homepage": "https://github.com/jshttp/proxy-addr#readme",
-  "_id": "proxy-addr@1.0.8",
-  "_shasum": "db54ec878bcc1053d57646609219b3715678bafe",
-  "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz",
-  "_from": "proxy-addr@>=1.0.8 <1.1.0"
+  "homepage": "https://github.com/jshttp/proxy-addr",
+  "_id": "proxy-addr@1.0.10",
+  "_shasum": "0d40a82f801fc355567d2ecb65efe3f077f121c5",
+  "_from": "proxy-addr@>=1.0.10 <1.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "jongleberry",
+      "email": "jonathanrichardong@gmail.com"
+    },
+    {
+      "name": "tjholowaychuk",
+      "email": "tj@vision-media.ca"
+    },
+    {
+      "name": "mscdex",
+      "email": "mscdex@mscdex.net"
+    },
+    {
+      "name": "fishrock123",
+      "email": "fishrock123@rocketmail.com"
+    },
+    {
+      "name": "defunctzombie",
+      "email": "shtylman@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "0d40a82f801fc355567d2ecb65efe3f077f121c5",
+    "tarball": "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz",
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/HISTORY.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/HISTORY.md b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/HISTORY.md
index 1bb53bd..f640bea 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/HISTORY.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/HISTORY.md
@@ -1,3 +1,8 @@
+unreleased
+==========
+
+  * perf: enable strict mode
+
 1.0.2 / 2014-09-08
 ==================
 

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/README.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/README.md b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/README.md
index 6a2682f..32f58f6 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/README.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/README.md
@@ -14,35 +14,44 @@ Range header field parser.
 $ npm install range-parser
 ```
 
-## Examples
+## API
 
 ```js
-assert(-1 == parse(200, 'bytes=500-20'));
-assert(-2 == parse(200, 'bytes=malformed'));
-parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));
-parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));
-parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));
-parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
-parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));
-parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
-parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));
-parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));
-parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));
-parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));
-parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));
+var parseRange = require('range-parser')
+```
+
+### parseRange(size, header)
+
+Parse the given `header` string where `size` is the maximum size of the resource.
+An array of ranges will be returned or negative numbers indicating an error parsing.
+
+  * `-2` signals a malformed header string
+  * `-1` signals an invalid range
+
+```js
+// parse header from request
+var range = parseRange(req.headers.range)
+
+// the type of the range
+if (range.type === 'bytes') {
+  // the ranges
+  range.forEach(function (r) {
+    // do something with r.start and r.end
+  })
+}
 ```
 
 ## License
 
 [MIT](LICENSE)
 
-[npm-image]: https://img.shields.io/npm/v/range-parser.svg?style=flat
+[npm-image]: https://img.shields.io/npm/v/range-parser.svg
 [npm-url]: https://npmjs.org/package/range-parser
-[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat
+[node-version-image]: https://img.shields.io/node/v/range-parser.svg
 [node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg?style=flat
+[travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg
 [travis-url]: https://travis-ci.org/jshttp/range-parser
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg?style=flat
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg
 [coveralls-url]: https://coveralls.io/r/jshttp/range-parser
-[downloads-image]: https://img.shields.io/npm/dm/range-parser.svg?style=flat
+[downloads-image]: https://img.shields.io/npm/dm/range-parser.svg
 [downloads-url]: https://npmjs.org/package/range-parser

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/index.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/index.js b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/index.js
index 09a6c40..814e533 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/index.js
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/index.js
@@ -1,3 +1,17 @@
+/*!
+ * range-parser
+ * Copyright(c) 2012-2014 TJ Holowaychuk
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = rangeParser;
 
 /**
  * Parse "Range" header `str` relative to the given file `size`.
@@ -5,10 +19,10 @@
  * @param {Number} size
  * @param {String} str
  * @return {Array}
- * @api public
+ * @public
  */
 
-module.exports = function(size, str){
+function rangeParser(size, str) {
   var valid = true;
   var i = str.indexOf('=');
 
@@ -46,4 +60,4 @@ module.exports = function(size, str){
   arr.type = str.slice(0, i);
 
   return valid ? arr : -1;
-};
+}

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/package.json
index e9a4d9a..5d4411b 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/range-parser/package.json
@@ -6,7 +6,7 @@
     "url": "http://tjholowaychuk.com"
   },
   "description": "Range header field string parser",
-  "version": "1.0.2",
+  "version": "1.0.3",
   "license": "MIT",
   "keywords": [
     "range",
@@ -18,9 +18,8 @@
     "url": "git+https://github.com/jshttp/range-parser.git"
   },
   "devDependencies": {
-    "istanbul": "0",
-    "mocha": "1",
-    "should": "2"
+    "istanbul": "0.4.0",
+    "mocha": "1.21.5"
   },
   "files": [
     "HISTORY.md",
@@ -31,18 +30,46 @@
     "node": ">= 0.6"
   },
   "scripts": {
-    "test": "mocha --reporter spec --require should",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --require should",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot --require should"
+    "test": "mocha --reporter spec",
+    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
+    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
   },
-  "readme": "# range-parser\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nRange header field parser.\n\n## Installation\n\n```\n$ npm install range-parser\n```\n\n## Examples\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eq
 l(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/range-parser.svg?style=flat\n[npm-url]: https://npmjs.org/package/range-parser\n[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg?style=flat\n[travis-url]: https://travis-ci.org/jshttp/range-parser\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg?style=flat\n[coveralls-url]: https://coveralls.io/r/jshttp/range-parser\n[downloads-imag
 e]: https://img.shields.io/npm/dm/range-parser.svg?style=flat\n[downloads-url]: https://npmjs.org/package/range-parser\n",
-  "readmeFilename": "README.md",
+  "gitHead": "18e46a3de74afff9f4e22717f11ddd6e9aa6d845",
   "bugs": {
     "url": "https://github.com/jshttp/range-parser/issues"
   },
-  "homepage": "https://github.com/jshttp/range-parser#readme",
-  "_id": "range-parser@1.0.2",
-  "_shasum": "06a12a42e5131ba8e457cd892044867f2344e549",
-  "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz",
-  "_from": "range-parser@>=1.0.2 <1.1.0"
+  "homepage": "https://github.com/jshttp/range-parser",
+  "_id": "range-parser@1.0.3",
+  "_shasum": "6872823535c692e2c2a0103826afd82c2e0ff175",
+  "_from": "range-parser@>=1.0.3 <1.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "tjholowaychuk",
+      "email": "tj@vision-media.ca"
+    },
+    {
+      "name": "jonathanong",
+      "email": "jonathanrichardong@gmail.com"
+    },
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "jongleberry",
+      "email": "jonathanrichardong@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "6872823535c692e2c2a0103826afd82c2e0ff175",
+    "tarball": "http://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz",
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/HISTORY.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/HISTORY.md b/node_modules/cordova-serve/node_modules/express/node_modules/send/HISTORY.md
index 1fa40b5..d3dca9c 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/HISTORY.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/HISTORY.md
@@ -1,3 +1,18 @@
+0.13.1 / 2016-01-16
+===================
+
+  * deps: depd@~1.1.0
+    - Support web browser loading
+    - perf: enable strict mode
+  * deps: destroy@~1.0.4
+    - perf: enable strict mode
+  * deps: escape-html@~1.0.3
+    - perf: enable strict mode
+    - perf: optimize string replacement
+    - perf: use faster string coercion
+  * deps: range-parser@~1.0.3
+    - perf: enable strict mode
+
 0.13.0 / 2015-06-16
 ===================
 

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/LICENSE b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/LICENSE
new file mode 100644
index 0000000..a7ae8ee
--- /dev/null
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+
+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-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/README.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/README.md b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/README.md
index 665acb7..6474bc3 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/README.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/README.md
@@ -3,20 +3,44 @@
 [![NPM version][npm-image]][npm-url]
 [![Build status][travis-image]][travis-url]
 [![Test coverage][coveralls-image]][coveralls-url]
-[![Dependency Status][david-image]][david-url]
 [![License][license-image]][license-url]
 [![Downloads][downloads-image]][downloads-url]
 [![Gittip][gittip-image]][gittip-url]
 
 Destroy a stream.
 
+This module is meant to ensure a stream gets destroyed, handling different APIs
+and Node.js bugs.
+
 ## API
 
 ```js
 var destroy = require('destroy')
+```
+
+### destroy(stream)
+
+Destroy the given stream. In most cases, this is identical to a simple
+`stream.destroy()` call. The rules are as follows for a given stream:
+
+  1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()`
+     and add a listener to the `open` event to call `stream.close()` if it is
+     fired. This is for a Node.js bug that will leak a file descriptor if
+     `.destroy()` is called before `open`.
+  2. If the `stream` is not an instance of `Stream`, then nothing happens.
+  3. If the `stream` has a `.destroy()` method, then call it.
+
+The function returns the `stream` passed in as the argument.
+
+## Example
+
+```js
+var destroy = require('destroy')
 
 var fs = require('fs')
 var stream = fs.createReadStream('package.json')
+
+// ... and later
 destroy(stream)
 ```
 
@@ -28,8 +52,6 @@ destroy(stream)
 [travis-url]: https://travis-ci.org/stream-utils/destroy
 [coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square
 [coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
-[david-image]: http://img.shields.io/david/stream-utils/destroy.svg?style=flat-square
-[david-url]: https://david-dm.org/stream-utils/destroy
 [license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
 [license-url]: LICENSE.md
 [downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/index.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/index.js b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/index.js
index b455217..6da2d26 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/index.js
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/index.js
@@ -1,7 +1,34 @@
+/*!
+ * destroy
+ * Copyright(c) 2014 Jonathan Ong
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
 var ReadStream = require('fs').ReadStream
 var Stream = require('stream')
 
-module.exports = function destroy(stream) {
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = destroy
+
+/**
+ * Destroy a stream.
+ *
+ * @param {object} stream
+ * @public
+ */
+
+function destroy(stream) {
   if (stream instanceof ReadStream) {
     return destroyReadStream(stream)
   }
@@ -17,18 +44,30 @@ module.exports = function destroy(stream) {
   return stream
 }
 
+/**
+ * Destroy a ReadStream.
+ *
+ * @param {object} stream
+ * @private
+ */
+
 function destroyReadStream(stream) {
   stream.destroy()
 
   if (typeof stream.close === 'function') {
     // node.js core bug work-around
-    stream.on('open', onopenClose)
+    stream.on('open', onOpenClose)
   }
 
   return stream
 }
 
-function onopenClose() {
+/**
+ * On open handler to close stream.
+ * @private
+ */
+
+function onOpenClose() {
   if (typeof this.fd === 'number') {
     // actually close down the fd
     this.close()

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/package.json
index b0c16a2..f7f3f16 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/destroy/package.json
@@ -1,7 +1,7 @@
 {
   "name": "destroy",
   "description": "destroy a stream if possible",
-  "version": "1.0.3",
+  "version": "1.0.4",
   "author": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
@@ -19,8 +19,8 @@
     "url": "git+https://github.com/stream-utils/destroy.git"
   },
   "devDependencies": {
-    "istanbul": "0",
-    "mocha": "1"
+    "istanbul": "0.4.2",
+    "mocha": "2.3.4"
   },
   "scripts": {
     "test": "mocha --reporter spec",
@@ -28,7 +28,8 @@
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
   },
   "files": [
-    "index.js"
+    "index.js",
+    "LICENSE"
   ],
   "keywords": [
     "stream",
@@ -38,14 +39,34 @@
     "leak",
     "fd"
   ],
-  "readme": "# Destroy\n\n[![NPM version][npm-image]][npm-url]\n[![Build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n[![Dependency Status][david-image]][david-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n[![Gittip][gittip-image]][gittip-url]\n\nDestroy a stream.\n\n## API\n\n```js\nvar destroy = require('destroy')\n\nvar fs = require('fs')\nvar stream = fs.createReadStream('package.json')\ndestroy(stream)\n```\n\n[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/destroy\n[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square\n[github-url]: https://github.com/stream-utils/destroy/tags\n[travis-image]: https://img.shields.io/travis/stream-utils/destroy.svg?style=flat-square\n[travis-url]: https://travis-ci.org/stream-utils/destroy\n[coveralls-image]: https://img.shields.io/coveralls/stream-utils/de
 stroy.svg?style=flat-square\n[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master\n[david-image]: http://img.shields.io/david/stream-utils/destroy.svg?style=flat-square\n[david-url]: https://david-dm.org/stream-utils/destroy\n[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square\n[license-url]: LICENSE.md\n[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square\n[downloads-url]: https://npmjs.org/package/destroy\n[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square\n[gittip-url]: https://www.gittip.com/jonathanong/\n",
-  "readmeFilename": "README.md",
+  "gitHead": "86edea01456f5fa1027f6a47250c34c713cbcc3b",
   "bugs": {
     "url": "https://github.com/stream-utils/destroy/issues"
   },
-  "homepage": "https://github.com/stream-utils/destroy#readme",
-  "_id": "destroy@1.0.3",
-  "_shasum": "b433b4724e71fd8551d9885174851c5fc377e2c9",
-  "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
-  "_from": "destroy@1.0.3"
+  "homepage": "https://github.com/stream-utils/destroy",
+  "_id": "destroy@1.0.4",
+  "_shasum": "978857442c44749e4206613e37946205826abd80",
+  "_from": "destroy@>=1.0.4 <1.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "jongleberry",
+      "email": "jonathanrichardong@gmail.com"
+    },
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
+  "dist": {
+    "shasum": "978857442c44749e4206613e37946205826abd80",
+    "tarball": "http://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
index 933382a..93d5078 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
@@ -22,14 +22,29 @@
   "scripts": {
     "test": "node test"
   },
-  "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom
  it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n  superclass\n* new version overwrites current prototype while old one preserves any\n  existing fields on it\n",
-  "readmeFilename": "README.md",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
   },
-  "homepage": "https://github.com/isaacs/inherits#readme",
   "_id": "inherits@2.0.1",
+  "dist": {
+    "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
+    "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+  },
+  "_from": "inherits@>=2.0.1 <2.1.0",
+  "_npmVersion": "1.3.8",
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    }
+  ],
+  "directories": {},
   "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
   "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-  "_from": "inherits@>=2.0.1 <2.1.0"
+  "readme": "ERROR: No README data found!",
+  "homepage": "https://github.com/isaacs/inherits#readme"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/package.json
index d26894c..41f845d 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/http-errors/package.json
@@ -48,14 +48,38 @@
     "LICENSE",
     "README.md"
   ],
-  "readme": "# http-errors\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nCreate HTTP errors for Express, Koa, Connect, etc. with ease.\n\n## Example\n\n```js\nvar createError = require('http-errors');\n\napp.use(function (req, res, next) {\n  if (!req.user) return next(createError(401, 'Please login to view this page.'));\n  next();\n})\n```\n\n## API\n\nThis is the current API, currently extracted from Koa and subject to change.\n\n### Error Properties\n\n- `message`\n- `status` and `statusCode` - the status code of the error, defaulting to `500`\n\n### createError([status], [message], [properties])\n\n```js\nvar err = createError(404, 'This video does not exist!');\n```\n\n- `status: 500` - the status code as a number\n- `message` - the message of the error, defaulting to node's
  text for that status code.\n- `properties` - custom properties to attach to the object\n\n### new createError\\[code || name\\](\\[msg]\\))\n\n```js\nvar err = new createError.NotFound();\n```\n\n- `code` - the status code as a number\n- `name` - the name of the error as a \"bumpy case\", i.e. `NotFound` or `InternalServerError`.\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/http-errors.svg?style=flat\n[npm-url]: https://npmjs.org/package/http-errors\n[node-version-image]: https://img.shields.io/node/v/http-errors.svg?style=flat\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/http-errors.svg?style=flat\n[travis-url]: https://travis-ci.org/jshttp/http-errors\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/http-errors.svg?style=flat\n[coveralls-url]: https://coveralls.io/r/jshttp/http-errors\n[downloads-image]: https://img.shields.io/npm/dm/http-errors.svg?style=flat\n[downloads-url]: ht
 tps://npmjs.org/package/http-errors\n",
-  "readmeFilename": "README.md",
+  "gitHead": "89a8502b40d5dd42da2908f265275e2eeb8d0699",
   "bugs": {
     "url": "https://github.com/jshttp/http-errors/issues"
   },
-  "homepage": "https://github.com/jshttp/http-errors#readme",
+  "homepage": "https://github.com/jshttp/http-errors",
   "_id": "http-errors@1.3.1",
   "_shasum": "197e22cdebd4198585e8694ef6786197b91ed942",
+  "_from": "http-errors@>=1.3.1 <1.4.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "egeste",
+      "email": "npm@egeste.net"
+    },
+    {
+      "name": "jongleberry",
+      "email": "jonathanrichardong@gmail.com"
+    },
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
+  "dist": {
+    "shasum": "197e22cdebd4198585e8694ef6786197b91ed942",
+    "tarball": "http://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz"
+  },
+  "directories": {},
   "_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
-  "_from": "http-errors@>=1.3.1 <1.4.0"
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/mime/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/mime/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/mime/package.json
index 3a4a61e..31e7669 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/mime/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/mime/package.json
@@ -40,14 +40,34 @@
     "type": "git"
   },
   "version": "1.3.4",
-  "readme": "# mime\n\nComprehensive MIME type mapping API based on mime-db module.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n    npm install mime\n\n## Contributing / Testing\n\n    npm run test\n\n## Command Line\n\n    mime [path_string]\n\nE.g.\n\n    > mime scripts/jquery.js\n    application/javascript\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.').  E.g.\n\n```js\nvar mime = require('mime');\n\nmime.lookup('/path/to/file.txt');         // => 'text/plain'\nmime.lookup('file.txt');                  // => 'text/plain'\nmime.lookup('.TXT');                      // => 'text/plain'\nmime.lookup('htm');                       // => 'text/html'\n```\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension 
 searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n```js\nmime.extension('text/html');                 // => 'html'\nmime.extension('application/octet-stream');  // => 'bin'\n```\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n```js\nmime.charsets.lookup('text/plain');        // => 'UTF-8'\n```\n\n(The logic for charset lookups is pretty rudimentary.  Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nCustom type mappings can be added on a per-project basis via the following APIs.\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n```js\nmime.define({\n    'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n    'application/x-my-type': ['x-mt', 'x-mtt'],\n    // etc ...\n});\n\nmime.lookup('x-sft');                 // => 'text/x-some-format'\n```\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n```js\nmime.extension('text/x-some-
 format'); // => 'x-sf'\n```\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n```js\nmime.load('./my_project.types');\n```\nThe .types file format is simple -  See the `types` dir for examples.\n",
-  "readmeFilename": "README.md",
+  "gitHead": "1628f6e0187095009dcef4805c3a49706f137974",
   "bugs": {
     "url": "https://github.com/broofa/node-mime/issues"
   },
-  "homepage": "https://github.com/broofa/node-mime#readme",
+  "homepage": "https://github.com/broofa/node-mime",
   "_id": "mime@1.3.4",
   "_shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53",
+  "_from": "mime@1.3.4",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "broofa",
+    "email": "robert@broofa.com"
+  },
+  "maintainers": [
+    {
+      "name": "broofa",
+      "email": "robert@broofa.com"
+    },
+    {
+      "name": "bentomas",
+      "email": "benjamin@benjaminthomas.org"
+    }
+  ],
+  "dist": {
+    "shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53",
+    "tarball": "http://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
+  },
+  "directories": {},
   "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
-  "_from": "mime@1.3.4"
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/ms/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/ms/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/ms/package.json
index 7b5d86d..253335e 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/ms/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/ms/package.json
@@ -17,14 +17,32 @@
       "ms/index.js": "index.js"
     }
   },
-  "readme": "# ms.js: miliseconds conversion utility\n\n```js\nms('2 days')  // 172800000\nms('1d')      // 86400000\nms('10h')     // 36000000\nms('2.5 hrs') // 9000000\nms('2h')      // 7200000\nms('1m')      // 60000\nms('5s')      // 5000\nms('100')     // 100\n```\n\n```js\nms(60000)             // \"1m\"\nms(2 * 60000)         // \"2m\"\nms(ms('10 hours'))    // \"10h\"\n```\n\n```js\nms(60000, { long: true })             // \"1 minute\"\nms(2 * 60000, { long: true })         // \"2 minutes\"\nms(ms('10 hours'), { long: true })    // \"10 hours\"\n```\n\n- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).\n- If a number is supplied to `ms`, a string with a unit is returned.\n- If a string that contains the number is supplied, it returns it as\na number (e.g: it returns `100` for `'100'`).\n- If you pass a string with a number and a valid unit, the number of\nequivalent ms is returned.\n\n## License\n\nMIT\n",
-  "readmeFilename": "README.md",
+  "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909",
   "bugs": {
     "url": "https://github.com/guille/ms.js/issues"
   },
-  "homepage": "https://github.com/guille/ms.js#readme",
+  "homepage": "https://github.com/guille/ms.js",
   "_id": "ms@0.7.1",
+  "scripts": {},
   "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+  "_from": "ms@0.7.1",
+  "_npmVersion": "2.7.5",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "rauchg",
+    "email": "rauchg@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "rauchg",
+      "email": "rauchg@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+    "tarball": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+  },
+  "directories": {},
   "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-  "_from": "ms@0.7.1"
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/statuses/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/statuses/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/statuses/package.json
index 4ebd7ee..81aba72 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/statuses/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/node_modules/statuses/package.json
@@ -35,14 +35,50 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks"
   },
-  "readme": "# Statuses\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nHTTP status utility for node.\n\n## API\n\n```js\nvar status = require('statuses');\n```\n\n### var code = status(Integer || String)\n\nIf `Integer` or `String` is a valid HTTP code or status message, then the appropriate `code` will be returned. Otherwise, an error will be thrown.\n\n```js\nstatus(403) // => 'Forbidden'\nstatus('403') // => 'Forbidden'\nstatus('forbidden') // => 403\nstatus('Forbidden') // => 403\nstatus(306) // throws, as it's not supported by node.js\n```\n\n### status.codes\n\nReturns an array of all the status codes as `Integer`s.\n\n### var msg = status[code]\n\nMap of `code` to `status message`. `undefined` for invalid `code`s.\n\n```js\nstatus[404] // => 'Not Found'\n```\n\n### var code 
 = status[msg]\n\nMap of `status message` to `code`. `msg` can either be title-cased or lower-cased. `undefined` for invalid `status message`s.\n\n```js\nstatus['not found'] // => 404\nstatus['Not Found'] // => 404\n```\n\n### status.redirect[code]\n\nReturns `true` if a status code is a valid redirect status.\n\n```js\nstatus.redirect[200] // => undefined\nstatus.redirect[301] // => true\n```\n\n### status.empty[code]\n\nReturns `true` if a status code expects an empty body.\n\n```js\nstatus.empty[200] // => undefined\nstatus.empty[204] // => true\nstatus.empty[304] // => true\n```\n\n### status.retry[code]\n\nReturns `true` if you should retry the rest.\n\n```js\nstatus.retry[501] // => undefined\nstatus.retry[503] // => true\n```\n\n### statuses/codes.json\n\n```js\nvar codes = require('statuses/codes.json');\n```\n\nThis is a JSON file of the status codes\ntaken from `require('http').STATUS_CODES`.\nThis is saved so that codes are consistent even in older node.js versions.\nFor e
 xample, `308` will be added in v0.12.\n\n## Adding Status Codes\n\nThe status codes are primarily sourced from http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv.\nAdditionally, custom codes are added from http://en.wikipedia.org/wiki/List_of_HTTP_status_codes.\nThese are added manually in the `lib/*.json` files.\nIf you would like to add a status code, add it to the appropriate JSON file.\n\nTo rebuild `codes.json`, run the following:\n\n```bash\n# update src/iana.json\nnpm run update\n# build codes.json\nnpm run build\n```\n\n[npm-image]: https://img.shields.io/npm/v/statuses.svg?style=flat\n[npm-url]: https://npmjs.org/package/statuses\n[node-version-image]: http://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/statuses.svg?style=flat\n[travis-url]: https://travis-ci.org/jshttp/statuses\n[coveralls-image]: https://img.shields.io/coveral
 ls/jshttp/statuses.svg?style=flat\n[coveralls-url]: https://coveralls.io/r/jshttp/statuses?branch=master\n[downloads-image]: http://img.shields.io/npm/dm/statuses.svg?style=flat\n[downloads-url]: https://npmjs.org/package/statuses\n",
-  "readmeFilename": "README.md",
+  "gitHead": "49e6ac7ae4c63ee8186f56cb52112a7eeda28ed7",
   "bugs": {
     "url": "https://github.com/jshttp/statuses/issues"
   },
-  "homepage": "https://github.com/jshttp/statuses#readme",
+  "homepage": "https://github.com/jshttp/statuses",
   "_id": "statuses@1.2.1",
   "_shasum": "dded45cc18256d51ed40aec142489d5c61026d28",
+  "_from": "statuses@>=1.2.1 <1.3.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "jongleberry",
+      "email": "jonathanrichardong@gmail.com"
+    },
+    {
+      "name": "tjholowaychuk",
+      "email": "tj@vision-media.ca"
+    },
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "shtylman",
+      "email": "shtylman@gmail.com"
+    },
+    {
+      "name": "mscdex",
+      "email": "mscdex@mscdex.net"
+    },
+    {
+      "name": "fishrock123",
+      "email": "fishrock123@rocketmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "dded45cc18256d51ed40aec142489d5c61026d28",
+    "tarball": "http://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
+  },
+  "directories": {},
   "_resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
-  "_from": "statuses@>=1.2.1 <1.3.0"
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/send/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/send/package.json b/node_modules/cordova-serve/node_modules/express/node_modules/send/package.json
index bfe7697..38fcf6f 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/send/package.json
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/send/package.json
@@ -1,7 +1,7 @@
 {
   "name": "send",
   "description": "Better streaming static file server with Range and conditional-GET support",
-  "version": "0.13.0",
+  "version": "0.13.1",
   "author": {
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca"
@@ -15,7 +15,7 @@
   "license": "MIT",
   "repository": {
     "type": "git",
-    "url": "https://github.com/pillarjs/send"
+    "url": "git+https://github.com/pillarjs/send.git"
   },
   "keywords": [
     "static",
@@ -24,23 +24,23 @@
   ],
   "dependencies": {
     "debug": "~2.2.0",
-    "depd": "~1.0.1",
-    "destroy": "1.0.3",
-    "escape-html": "1.0.2",
+    "depd": "~1.1.0",
+    "destroy": "~1.0.4",
+    "escape-html": "~1.0.3",
     "etag": "~1.7.0",
     "fresh": "0.3.0",
     "http-errors": "~1.3.1",
     "mime": "1.3.4",
     "ms": "0.7.1",
     "on-finished": "~2.3.0",
-    "range-parser": "~1.0.2",
+    "range-parser": "~1.0.3",
     "statuses": "~1.2.1"
   },
   "devDependencies": {
     "after": "0.8.1",
-    "istanbul": "0.3.9",
-    "mocha": "2.2.5",
-    "supertest": "1.0.1"
+    "istanbul": "0.4.2",
+    "mocha": "2.3.4",
+    "supertest": "1.1.0"
   },
   "files": [
     "HISTORY.md",
@@ -56,14 +56,14 @@
     "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot"
   },
-  "gitHead": "80cfa7f54ce87c75e92619d5bc510406bd69133a",
+  "gitHead": "dbce43fc7102c14b475c25cde918b726063cc991",
   "bugs": {
     "url": "https://github.com/pillarjs/send/issues"
   },
   "homepage": "https://github.com/pillarjs/send",
-  "_id": "send@0.13.0",
-  "_shasum": "518f921aeb0560aec7dcab2990b14cf6f3cce5de",
-  "_from": "send@0.13.0",
+  "_id": "send@0.13.1",
+  "_shasum": "a30d5f4c82c8a9bae9ad00a1d9b1bdbe6f199ed7",
+  "_from": "send@0.13.1",
   "_npmVersion": "1.4.28",
   "_npmUser": {
     "name": "dougwilson",
@@ -80,9 +80,10 @@
     }
   ],
   "dist": {
-    "shasum": "518f921aeb0560aec7dcab2990b14cf6f3cce5de",
-    "tarball": "http://registry.npmjs.org/send/-/send-0.13.0.tgz"
+    "shasum": "a30d5f4c82c8a9bae9ad00a1d9b1bdbe6f199ed7",
+    "tarball": "http://registry.npmjs.org/send/-/send-0.13.1.tgz"
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz"
+  "_resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz",
+  "readme": "ERROR: No README data found!"
 }

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/HISTORY.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/HISTORY.md b/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/HISTORY.md
index 744b6f1..da30741 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/HISTORY.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/HISTORY.md
@@ -1,3 +1,22 @@
+1.10.2 / 2016-01-19
+===================
+
+  * deps: parseurl@~1.3.1
+    - perf: enable strict mode
+
+1.10.1 / 2016-01-16
+===================
+
+  * deps: escape-html@~1.0.3
+    - perf: enable strict mode
+    - perf: optimize string replacement
+    - perf: use faster string coercion
+  * deps: send@0.13.1
+    - deps: depd@~1.1.0
+    - deps: destroy@~1.0.4
+    - deps: escape-html@~1.0.3
+    - deps: range-parser@~1.0.3
+
 1.10.0 / 2015-06-17
 ===================
 

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/55abeab9/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/README.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/README.md b/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/README.md
index 1a7b054..62104b1 100644
--- a/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/README.md
+++ b/node_modules/cordova-serve/node_modules/express/node_modules/serve-static/README.md
@@ -38,12 +38,13 @@ disk. If `root` is specified, only the dotfiles above the root are
 checked (i.e. the root itself can be within a dotfile when set
 to "deny").
 
-The default value is `'ignore'`.
-
   - `'allow'` No special treatment for dotfiles.
   - `'deny'` Deny a request for a dotfile and 403/`next()`.
   - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`.
 
+The default value is similar to `'ignore'`, with the exception that this
+default will not ignore the files within a directory that begins with a dot.
+
 ##### etag
 
 Enable or disable etag generation, defaults to true.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org