You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ni...@apache.org on 2016/05/31 17:29:25 UTC

[3/4] android commit: Bundle updated node modules

Bundle updated node modules


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/d6fe1a65
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/d6fe1a65
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/d6fe1a65

Branch: refs/heads/master
Commit: d6fe1a65ebfd8b772cdf4759e759d1a7eb3ccd2b
Parents: 72bbe9f
Author: Jason Ginchereau <ja...@microsoft.com>
Authored: Wed May 25 16:31:28 2016 -0700
Committer: Nikhil Khandelwal <ni...@microsoft.com>
Committed: Tue May 31 10:27:39 2016 -0700

----------------------------------------------------------------------
 node_modules/.bin/istanbul                      |  15 -
 node_modules/.bin/istanbul.cmd                  |   7 -
 node_modules/.bin/nopt                          |  16 +-
 node_modules/.bin/nopt.cmd                      |   7 +
 node_modules/.bin/shjs                          |  16 +-
 node_modules/.bin/shjs.cmd                      |   7 +
 node_modules/abbrev/package.json                |  12 +-
 node_modules/ansi/package.json                  |   4 +-
 node_modules/balanced-match/.npmignore          |   7 +-
 node_modules/balanced-match/.travis.yml         |   3 -
 node_modules/balanced-match/Makefile            |   6 -
 node_modules/balanced-match/README.md           |   4 +-
 node_modules/balanced-match/example.js          |   5 -
 node_modules/balanced-match/index.js            |   8 +
 node_modules/balanced-match/package.json        |  64 +--
 node_modules/balanced-match/test/balanced.js    |  84 ----
 node_modules/base64-js/package.json             |   6 +-
 node_modules/big-integer/package.json           |   4 +-
 node_modules/bplist-parser/package.json         |   6 +-
 node_modules/brace-expansion/package.json       |  52 +--
 node_modules/concat-map/package.json            |  20 +-
 node_modules/cordova-common/RELEASENOTES.md     |  54 +--
 node_modules/cordova-common/cordova-common.js   |  50 ++-
 node_modules/cordova-common/package.json        |  43 +-
 .../src/ConfigChanges/ConfigFile.js             |  48 ++-
 .../cordova-common/src/CordovaLogger.js         |  10 +-
 node_modules/cordova-common/src/FileUpdater.js  | 422 +++++++++++++++++++
 .../cordova-common/src/PluginInfo/PluginInfo.js |   2 +-
 node_modules/cordova-common/src/events.js       |   2 +-
 .../cordova-common/src/util/addProperty.js      |  32 ++
 .../cordova-registry-mapper/package.json        |   4 +-
 node_modules/elementtree/package.json           |  26 +-
 node_modules/glob/package.json                  |  16 +-
 node_modules/inflight/.eslintrc                 |  17 -
 node_modules/inflight/package.json              |  53 ++-
 node_modules/inflight/test.js                   |  97 -----
 node_modules/inherits/package.json              |  22 +-
 node_modules/lodash/package.json                |   4 +-
 node_modules/minimatch/package.json             |  25 +-
 node_modules/nopt/package.json                  |  20 +-
 node_modules/once/package.json                  |  14 +-
 node_modules/os-homedir/package.json            |   6 +-
 node_modules/os-tmpdir/package.json             |   6 +-
 node_modules/osenv/package.json                 |   6 +-
 node_modules/path-is-absolute/package.json      |  36 +-
 node_modules/plist/package.json                 |   6 +-
 node_modules/properties-parser/package.json     |  18 +-
 node_modules/q/package.json                     |  38 +-
 node_modules/sax/package.json                   |  44 +-
 node_modules/semver/package.json                |   4 +-
 node_modules/shelljs/package.json               |  22 +-
 node_modules/underscore/package.json            |   4 +-
 node_modules/unorm/package.json                 |   4 +-
 node_modules/util-deprecate/package.json        |   6 +-
 node_modules/wrappy/package.json                |  45 +-
 node_modules/wrappy/test/basic.js               |  51 ---
 node_modules/xmlbuilder/package.json            |   4 +-
 node_modules/xmldom/package.json                |   6 +-
 58 files changed, 943 insertions(+), 677 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/istanbul
----------------------------------------------------------------------
diff --git a/node_modules/.bin/istanbul b/node_modules/.bin/istanbul
deleted file mode 100644
index 6d0d614..0000000
--- a/node_modules/.bin/istanbul
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
-    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
-  "$basedir/node"  "$basedir/../istanbul/lib/cli.js" "$@"
-  ret=$?
-else 
-  node  "$basedir/../istanbul/lib/cli.js" "$@"
-  ret=$?
-fi
-exit $ret

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/istanbul.cmd
----------------------------------------------------------------------
diff --git a/node_modules/.bin/istanbul.cmd b/node_modules/.bin/istanbul.cmd
deleted file mode 100644
index 6635d19..0000000
--- a/node_modules/.bin/istanbul.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
-@IF EXIST "%~dp0\node.exe" (
-  "%~dp0\node.exe"  "%~dp0\..\istanbul\lib\cli.js" %*
-) ELSE (
-  @SETLOCAL
-  @SET PATHEXT=%PATHEXT:;.JS;=;%
-  node  "%~dp0\..\istanbul\lib\cli.js" %*
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/nopt
----------------------------------------------------------------------
diff --git a/node_modules/.bin/nopt b/node_modules/.bin/nopt
index 6b6566e..714334e 120000
--- a/node_modules/.bin/nopt
+++ b/node_modules/.bin/nopt
@@ -1 +1,15 @@
-../nopt/bin/nopt.js
\ No newline at end of file
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
+fi
+exit $ret

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/nopt.cmd
----------------------------------------------------------------------
diff --git a/node_modules/.bin/nopt.cmd b/node_modules/.bin/nopt.cmd
new file mode 100644
index 0000000..1626454
--- /dev/null
+++ b/node_modules/.bin/nopt.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+  "%~dp0\node.exe"  "%~dp0\..\nopt\bin\nopt.js" %*
+) ELSE (
+  @SETLOCAL
+  @SET PATHEXT=%PATHEXT:;.JS;=;%
+  node  "%~dp0\..\nopt\bin\nopt.js" %*
+)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/shjs
----------------------------------------------------------------------
diff --git a/node_modules/.bin/shjs b/node_modules/.bin/shjs
index a044997..1d45691 120000
--- a/node_modules/.bin/shjs
+++ b/node_modules/.bin/shjs
@@ -1 +1,15 @@
-../shelljs/bin/shjs
\ No newline at end of file
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../shelljs/bin/shjs" "$@"
+  ret=$?
+else 
+  node  "$basedir/../shelljs/bin/shjs" "$@"
+  ret=$?
+fi
+exit $ret

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/.bin/shjs.cmd
----------------------------------------------------------------------
diff --git a/node_modules/.bin/shjs.cmd b/node_modules/.bin/shjs.cmd
new file mode 100644
index 0000000..3d98b0b
--- /dev/null
+++ b/node_modules/.bin/shjs.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+  "%~dp0\node.exe"  "%~dp0\..\shelljs\bin\shjs" %*
+) ELSE (
+  @SETLOCAL
+  @SET PATHEXT=%PATHEXT:;.JS;=;%
+  node  "%~dp0\..\shelljs\bin\shjs" %*
+)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/abbrev/package.json
----------------------------------------------------------------------
diff --git a/node_modules/abbrev/package.json b/node_modules/abbrev/package.json
index 700d159..343fa3b 100644
--- a/node_modules/abbrev/package.json
+++ b/node_modules/abbrev/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "abbrev@1",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/nopt"
+      "D:\\Cordova\\cordova-android\\node_modules\\nopt"
     ]
   ],
   "_from": "abbrev@>=1.0.0 <2.0.0",
@@ -28,11 +28,11 @@
   "_requiredBy": [
     "/nopt"
   ],
-  "_resolved": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz",
+  "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz",
   "_shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
   "_shrinkwrap": null,
   "_spec": "abbrev@1",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/nopt",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\nopt",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter"
@@ -48,7 +48,7 @@
   "directories": {},
   "dist": {
     "shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
-    "tarball": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
+    "tarball": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
   },
   "gitHead": "821d09ce7da33627f91bbd8ed631497ed6f760c2",
   "homepage": "https://github.com/isaacs/abbrev-js#readme",
@@ -56,8 +56,8 @@
   "main": "abbrev.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "i@izs.me"
+      "email": "i@izs.me",
+      "name": "isaacs"
     }
   ],
   "name": "abbrev",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/ansi/package.json
----------------------------------------------------------------------
diff --git a/node_modules/ansi/package.json b/node_modules/ansi/package.json
index 4fcd379..7e3d6aa 100644
--- a/node_modules/ansi/package.json
+++ b/node_modules/ansi/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "ansi@^0.3.1",
-      "d:\\cordova\\cordova-android\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-android\\node_modules\\cordova-common"
     ]
   ],
   "_from": "ansi@>=0.3.1 <0.4.0",
@@ -32,7 +32,7 @@
   "_shasum": "0c42d4fb17160d5a9af1e484bace1c66922c1b21",
   "_shrinkwrap": null,
   "_spec": "ansi@^0.3.1",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\cordova-common",
   "author": {
     "email": "nathan@tootallnate.net",
     "name": "Nathan Rajlich",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/.npmignore b/node_modules/balanced-match/.npmignore
index fd4f2b0..ae5d8c3 100644
--- a/node_modules/balanced-match/.npmignore
+++ b/node_modules/balanced-match/.npmignore
@@ -1,2 +1,5 @@
-node_modules
-.DS_Store
+test
+.gitignore
+.travis.yml
+Makefile
+example.js

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/.travis.yml
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/.travis.yml b/node_modules/balanced-match/.travis.yml
deleted file mode 100644
index 6e5919d..0000000
--- a/node_modules/balanced-match/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/Makefile
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/Makefile b/node_modules/balanced-match/Makefile
deleted file mode 100644
index fa5da71..0000000
--- a/node_modules/balanced-match/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-
-test:
-	@node_modules/.bin/tape test/*.js
-
-.PHONY: test
-

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/README.md
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md
index 421f3aa..d6880b2 100644
--- a/node_modules/balanced-match/README.md
+++ b/node_modules/balanced-match/README.md
@@ -1,6 +1,6 @@
 # balanced-match
 
-Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`.
+Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!
 
 [![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
 [![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
@@ -16,6 +16,7 @@ var balanced = require('balanced-match');
 
 console.log(balanced('{', '}', 'pre{in{nested}}post'));
 console.log(balanced('{', '}', 'pre{first}between{second}post'));
+console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre  {   in{nest}   }  post'));
 ```
 
 The matches are:
@@ -28,6 +29,7 @@ $ node example.js
   pre: 'pre',
   body: 'first',
   post: 'between{second}post' }
+{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }
 ```
 
 ## API

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/example.js
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/example.js b/node_modules/balanced-match/example.js
deleted file mode 100644
index c02ad34..0000000
--- a/node_modules/balanced-match/example.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var balanced = require('./');
-
-console.log(balanced('{', '}', 'pre{in{nested}}post'));
-console.log(balanced('{', '}', 'pre{first}between{second}post'));
-

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/index.js
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js
index 75f3d71..4670f7f 100644
--- a/node_modules/balanced-match/index.js
+++ b/node_modules/balanced-match/index.js
@@ -1,5 +1,8 @@
 module.exports = balanced;
 function balanced(a, b, str) {
+  if (a instanceof RegExp) a = maybeMatch(a, str);
+  if (b instanceof RegExp) b = maybeMatch(b, str);
+
   var r = range(a, b, str);
 
   return r && {
@@ -11,6 +14,11 @@ function balanced(a, b, str) {
   };
 }
 
+function maybeMatch(reg, str) {
+  var m = str.match(reg);
+  return m ? m[0] : null;
+}
+
 balanced.range = range;
 function range(a, b, str) {
   var begs, beg, left, right, result;

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/package.json
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
index 044a171..5044b4e 100644
--- a/node_modules/balanced-match/package.json
+++ b/node_modules/balanced-match/package.json
@@ -1,38 +1,42 @@
 {
   "_args": [
     [
-      "balanced-match@^0.3.0",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion"
+      "balanced-match@^0.4.1",
+      "D:\\Cordova\\cordova-android\\node_modules\\brace-expansion"
     ]
   ],
-  "_from": "balanced-match@>=0.3.0 <0.4.0",
-  "_id": "balanced-match@0.3.0",
+  "_from": "balanced-match@>=0.4.1 <0.5.0",
+  "_id": "balanced-match@0.4.1",
   "_inCache": true,
   "_installable": true,
   "_location": "/balanced-match",
-  "_nodeVersion": "4.2.1",
+  "_nodeVersion": "6.0.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144"
+  },
   "_npmUser": {
     "email": "julian@juliangruber.com",
     "name": "juliangruber"
   },
-  "_npmVersion": "2.14.7",
+  "_npmVersion": "3.8.6",
   "_phantomChildren": {},
   "_requested": {
     "name": "balanced-match",
-    "raw": "balanced-match@^0.3.0",
-    "rawSpec": "^0.3.0",
+    "raw": "balanced-match@^0.4.1",
+    "rawSpec": "^0.4.1",
     "scope": null,
-    "spec": ">=0.3.0 <0.4.0",
+    "spec": ">=0.4.1 <0.5.0",
     "type": "range"
   },
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz",
-  "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz",
+  "_shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
   "_shrinkwrap": null,
-  "_spec": "balanced-match@^0.3.0",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion",
+  "_spec": "balanced-match@^0.4.1",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\brace-expansion",
   "author": {
     "email": "mail@juliangruber.com",
     "name": "Julian Gruber",
@@ -44,28 +48,28 @@
   "dependencies": {},
   "description": "Match balanced character pairs, like \"{\" and \"}\"",
   "devDependencies": {
-    "tape": "~4.2.2"
+    "tape": "~4.5.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
-    "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
+    "shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
+    "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz"
   },
-  "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5",
+  "gitHead": "7004b289baaaab6a832f4901735e29d37cc2a863",
   "homepage": "https://github.com/juliangruber/balanced-match",
   "keywords": [
-    "balanced",
     "match",
-    "parse",
     "regexp",
-    "test"
+    "test",
+    "balanced",
+    "parse"
   ],
   "license": "MIT",
   "main": "index.js",
   "maintainers": [
     {
-      "name": "juliangruber",
-      "email": "julian@juliangruber.com"
+      "email": "julian@juliangruber.com",
+      "name": "juliangruber"
     }
   ],
   "name": "balanced-match",
@@ -80,19 +84,19 @@
   },
   "testling": {
     "browsers": [
-      "android-browser/4.2..latest",
-      "chrome/25..latest",
-      "chrome/canary",
+      "ie/8..latest",
       "firefox/20..latest",
       "firefox/nightly",
-      "ie/8..latest",
-      "ipad/6.0..latest",
-      "iphone/6.0..latest",
+      "chrome/25..latest",
+      "chrome/canary",
       "opera/12..latest",
       "opera/next",
-      "safari/5.1..latest"
+      "safari/5.1..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2..latest"
     ],
     "files": "test/*.js"
   },
-  "version": "0.3.0"
+  "version": "0.4.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/balanced-match/test/balanced.js
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/test/balanced.js b/node_modules/balanced-match/test/balanced.js
deleted file mode 100644
index f5e98e3..0000000
--- a/node_modules/balanced-match/test/balanced.js
+++ /dev/null
@@ -1,84 +0,0 @@
-var test = require('tape');
-var balanced = require('..');
-
-test('balanced', function(t) {
-  t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), {
-    start: 3,
-    end: 12,
-    pre: 'pre',
-    body: 'in{nest}',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), {
-    start: 8,
-    end: 11,
-    pre: '{{{{{{{{',
-    body: 'in',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{', '}', 'pre{body{in}post'), {
-    start: 8,
-    end: 11,
-    pre: 'pre{body',
-    body: 'in',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), {
-    start: 4,
-    end: 13,
-    pre: 'pre}',
-    body: 'in{nest}',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), {
-    start: 3,
-    end: 8,
-    pre: 'pre',
-    body: 'body',
-    post: 'between{body2}post'
-  });
-  t.notOk(balanced('{', '}', 'nope'), 'should be notOk');
-  t.deepEqual(balanced('<b>', '</b>', 'pre<b>in<b>nest</b></b>post'), {
-    start: 3,
-    end: 19,
-    pre: 'pre',
-    body: 'in<b>nest</b>',
-    post: 'post'
-  });
-  t.deepEqual(balanced('<b>', '</b>', 'pre</b><b>in<b>nest</b></b>post'), {
-    start: 7,
-    end: 23,
-    pre: 'pre</b>',
-    body: 'in<b>nest</b>',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{{', '}}', 'pre{{{in}}}post'), {
-    start: 3,
-    end: 9,
-    pre: 'pre',
-    body: '{in}',
-    post: 'post'
-  });
-  t.deepEqual(balanced('{{{', '}}', 'pre{{{in}}}post'), {
-    start: 3,
-    end: 8,
-    pre: 'pre',
-    body: 'in',
-    post: '}post'
-  });
-  t.deepEqual(balanced('{', '}', 'pre{{first}in{second}post'), {
-    start: 4,
-    end: 10,
-    pre: 'pre{',
-    body: 'first',
-    post: 'in{second}post'
-  });
-  t.deepEqual(balanced('<?', '?>', 'pre<?>post'), {
-    start: 3,
-    end: 4,
-    pre: 'pre',
-    body: '',
-    post: 'post'
-  });
-  t.end();
-});

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/base64-js/package.json
----------------------------------------------------------------------
diff --git a/node_modules/base64-js/package.json b/node_modules/base64-js/package.json
index 9d0a60c..5f21386 100644
--- a/node_modules/base64-js/package.json
+++ b/node_modules/base64-js/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "base64-js@0.0.8",
-      "d:\\cordova\\cordova-android\\node_modules\\plist"
+      "D:\\Cordova\\cordova-android\\node_modules\\plist"
     ]
   ],
   "_from": "base64-js@0.0.8",
@@ -32,7 +32,7 @@
   "_shasum": "1101e9544f4a76b1bc3b26d452ca96d7a35e7978",
   "_shrinkwrap": null,
   "_spec": "base64-js@0.0.8",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\plist",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\plist",
   "author": {
     "email": "t.jameson.little@gmail.com",
     "name": "T. Jameson Little"
@@ -48,7 +48,7 @@
   "directories": {},
   "dist": {
     "shasum": "1101e9544f4a76b1bc3b26d452ca96d7a35e7978",
-    "tarball": "http://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz"
+    "tarball": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz"
   },
   "engines": {
     "node": ">= 0.4"

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/big-integer/package.json
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/package.json b/node_modules/big-integer/package.json
index 5674371..c0f37fb 100644
--- a/node_modules/big-integer/package.json
+++ b/node_modules/big-integer/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "big-integer@^1.6.7",
-      "d:\\cordova\\cordova-android\\node_modules\\bplist-parser"
+      "D:\\Cordova\\cordova-android\\node_modules\\bplist-parser"
     ]
   ],
   "_from": "big-integer@>=1.6.7 <2.0.0",
@@ -36,7 +36,7 @@
   "_shasum": "33d27d3b7388dfcc4b86d3130c10740cec01fb9e",
   "_shrinkwrap": null,
   "_spec": "big-integer@^1.6.7",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\bplist-parser",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\bplist-parser",
   "author": {
     "email": "peter.e.c.olson+npm@gmail.com",
     "name": "Peter Olson"

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/bplist-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/bplist-parser/package.json b/node_modules/bplist-parser/package.json
index abdeb4c..eaae4d5 100644
--- a/node_modules/bplist-parser/package.json
+++ b/node_modules/bplist-parser/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "bplist-parser@^0.1.0",
-      "d:\\cordova\\cordova-android\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-android\\node_modules\\cordova-common"
     ]
   ],
   "_from": "bplist-parser@>=0.1.0 <0.2.0",
@@ -32,7 +32,7 @@
   "_shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
   "_shrinkwrap": null,
   "_spec": "bplist-parser@^0.1.0",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\cordova-common",
   "author": {
     "email": "joe.ferner@nearinfinity.com",
     "name": "Joe Ferner"
@@ -50,7 +50,7 @@
   "directories": {},
   "dist": {
     "shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
-    "tarball": "http://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz"
+    "tarball": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz"
   },
   "gitHead": "c4f22650de2cc95edd21a6e609ff0654a2b951bd",
   "homepage": "https://github.com/nearinfinity/node-bplist-parser#readme",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/brace-expansion/package.json
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index d6d2f78..55f4281 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -2,24 +2,24 @@
   "_args": [
     [
       "brace-expansion@^1.0.0",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch"
+      "D:\\Cordova\\cordova-android\\node_modules\\minimatch"
     ]
   ],
   "_from": "brace-expansion@>=1.0.0 <2.0.0",
-  "_id": "brace-expansion@1.1.3",
+  "_id": "brace-expansion@1.1.4",
   "_inCache": true,
   "_installable": true,
   "_location": "/brace-expansion",
-  "_nodeVersion": "5.5.0",
+  "_nodeVersion": "6.0.0",
   "_npmOperationalInternal": {
-    "host": "packages-6-west.internal.npmjs.com",
-    "tmp": "tmp/brace-expansion-1.1.3.tgz_1455216688668_0.948847763473168"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/brace-expansion-1.1.4.tgz_1462130058897_0.14984136167913675"
   },
   "_npmUser": {
     "email": "julian@juliangruber.com",
     "name": "juliangruber"
   },
-  "_npmVersion": "3.3.12",
+  "_npmVersion": "3.8.6",
   "_phantomChildren": {},
   "_requested": {
     "name": "brace-expansion",
@@ -32,11 +32,11 @@
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz",
-  "_shasum": "46bff50115d47fc9ab89854abb87d98078a10991",
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz",
+  "_shasum": "464a204c77f482c085c2a36c456bbfbafb67a127",
   "_shrinkwrap": null,
   "_spec": "brace-expansion@^1.0.0",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\minimatch",
   "author": {
     "email": "mail@juliangruber.com",
     "name": "Julian Gruber",
@@ -46,31 +46,31 @@
     "url": "https://github.com/juliangruber/brace-expansion/issues"
   },
   "dependencies": {
-    "balanced-match": "^0.3.0",
+    "balanced-match": "^0.4.1",
     "concat-map": "0.0.1"
   },
   "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
-    "tape": "4.4.0"
+    "tape": "4.5.1"
   },
   "directories": {},
   "dist": {
-    "shasum": "46bff50115d47fc9ab89854abb87d98078a10991",
-    "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz"
+    "shasum": "464a204c77f482c085c2a36c456bbfbafb67a127",
+    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz"
   },
-  "gitHead": "f0da1bb668e655f67b6b2d660c6e1c19e2a6f231",
+  "gitHead": "1660b75d0bf03b022e7888b576cd5a4080692c1d",
   "homepage": "https://github.com/juliangruber/brace-expansion",
   "keywords": [],
   "license": "MIT",
   "main": "index.js",
   "maintainers": [
     {
-      "name": "juliangruber",
-      "email": "julian@juliangruber.com"
+      "email": "julian@juliangruber.com",
+      "name": "juliangruber"
     },
     {
-      "name": "isaacs",
-      "email": "isaacs@npmjs.com"
+      "email": "isaacs@npmjs.com",
+      "name": "isaacs"
     }
   ],
   "name": "brace-expansion",
@@ -86,19 +86,19 @@
   },
   "testling": {
     "browsers": [
-      "android-browser/4.2..latest",
-      "chrome/25..latest",
-      "chrome/canary",
+      "ie/8..latest",
       "firefox/20..latest",
       "firefox/nightly",
-      "ie/8..latest",
-      "ipad/6.0..latest",
-      "iphone/6.0..latest",
+      "chrome/25..latest",
+      "chrome/canary",
       "opera/12..latest",
       "opera/next",
-      "safari/5.1..latest"
+      "safari/5.1..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2..latest"
     ],
     "files": "test/*.js"
   },
-  "version": "1.1.3"
+  "version": "1.1.4"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/concat-map/package.json
----------------------------------------------------------------------
diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json
index 3ebe787..a011e1c 100644
--- a/node_modules/concat-map/package.json
+++ b/node_modules/concat-map/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "concat-map@0.0.1",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion"
+      "D:\\Cordova\\cordova-android\\node_modules\\brace-expansion"
     ]
   ],
   "_from": "concat-map@0.0.1",
@@ -27,11 +27,11 @@
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+  "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
   "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
   "_shrinkwrap": null,
   "_spec": "concat-map@0.0.1",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\brace-expansion",
   "author": {
     "email": "mail@substack.net",
     "name": "James Halliday",
@@ -51,22 +51,22 @@
   },
   "dist": {
     "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
-    "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+    "tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
   },
   "homepage": "https://github.com/substack/node-concat-map",
   "keywords": [
     "concat",
     "concatMap",
+    "map",
     "functional",
-    "higher-order",
-    "map"
+    "higher-order"
   ],
   "license": "MIT",
   "main": "index.js",
   "maintainers": [
     {
-      "name": "substack",
-      "email": "mail@substack.net"
+      "email": "mail@substack.net",
+      "name": "substack"
     }
   ],
   "name": "concat-map",
@@ -86,9 +86,9 @@
         22
       ],
       "ff": [
+        3.5,
         10,
-        15,
-        3.5
+        15
       ],
       "ie": [
         6,

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 350d5c9..7a99cc9 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,39 +20,45 @@
 -->
 # Cordova-common Release Notes
 
+### 1.3.0 (May 12, 2016)
+* [CB-11259](https://issues.apache.org/jira/browse/CB-11259): Improving prepare and build logging
+* [CB-11194](https://issues.apache.org/jira/browse/CB-11194) Improve cordova load time
+* [CB-1117](https://issues.apache.org/jira/browse/CB-1117) Add `FileUpdater` module to `cordova-common`.
+* [CB-11131](https://issues.apache.org/jira/browse/CB-11131) Fix `TypeError: message.toUpperCase` is not a function in `CordovaLogger`
+
 ### 1.2.0 (Apr 18, 2016)
-* CB-11022 Save modulesMetadata to both www and platform_www when necessary
-* CB-10833 Deduplicate common logic for plugin installation/uninstallation
-* CB-10822 Manage plugins/modules metadata using PlatformJson
-* CB-10940 Can't add Android platform from path
-* CB-10965 xml helper allows multiple instances to be merge in config.xml
+* [CB-11022](https://issues.apache.org/jira/browse/CB-11022) Save modulesMetadata to both www and platform_www when necessary
+* [CB-10833](https://issues.apache.org/jira/browse/CB-10833) Deduplicate common logic for plugin installation/uninstallation
+* [CB-10822](https://issues.apache.org/jira/browse/CB-10822) Manage plugins/modules metadata using PlatformJson
+* [CB-10940](https://issues.apache.org/jira/browse/CB-10940) Can't add Android platform from path
+* [CB-10965](https://issues.apache.org/jira/browse/CB-10965) xml helper allows multiple instances to be merge in config.xml
 
 ### 1.1.1 (Mar 18, 2016)
-* CB-10694 Update test to reflect merging of CB-9264 fix
-* CB-10694 Platform-specific configuration preferences don't override global settings
-* CB-9264 Duplicate entries in `config.xml`
-* CB-10791 Add `adjustLoggerLevel` to `cordova-common.CordovaLogger`
-* CB-10662 Add tests for `ConfigParser.getStaticResources`
-* CB-10622 fix target attribute being ignored for images in `config.xml`.
-* CB-10583 Protect plugin preferences from adding extra Array properties.
+* [CB-10694](https://issues.apache.org/jira/browse/CB-10694) Update test to reflect merging of [CB-9264](https://issues.apache.org/jira/browse/CB-9264) fix
+* [CB-10694](https://issues.apache.org/jira/browse/CB-10694) Platform-specific configuration preferences don't override global settings
+* [CB-9264](https://issues.apache.org/jira/browse/CB-9264) Duplicate entries in `config.xml`
+* [CB-10791](https://issues.apache.org/jira/browse/CB-10791) Add `adjustLoggerLevel` to `cordova-common.CordovaLogger`
+* [CB-10662](https://issues.apache.org/jira/browse/CB-10662) Add tests for `ConfigParser.getStaticResources`
+* [CB-10622](https://issues.apache.org/jira/browse/CB-10622) fix target attribute being ignored for images in `config.xml`.
+* [CB-10583](https://issues.apache.org/jira/browse/CB-10583) Protect plugin preferences from adding extra Array properties.
 
 ### 1.1.0 (Feb 16, 2016)
-* CB-10482 Remove references to windows8 from cordova-lib/cli
-* CB-10430 Adds forwardEvents method to easily connect two EventEmitters
-* CB-10176 Adds CordovaLogger class, based on logger module from cordova-cli
-* CB-10052 Expose child process' io streams via promise progress notification
-* CB-10497 Prefer .bat over .cmd on windows platform
-* CB-9984 Bumps plist version and fixes failing cordova-common test
+* [CB-10482](https://issues.apache.org/jira/browse/CB-10482) Remove references to windows8 from cordova-lib/cli
+* [CB-10430](https://issues.apache.org/jira/browse/CB-10430) Adds forwardEvents method to easily connect two EventEmitters
+* [CB-10176](https://issues.apache.org/jira/browse/CB-10176) Adds CordovaLogger class, based on logger module from cordova-cli
+* [CB-10052](https://issues.apache.org/jira/browse/CB-10052) Expose child process' io streams via promise progress notification
+* [CB-10497](https://issues.apache.org/jira/browse/CB-10497) Prefer .bat over .cmd on windows platform
+* [CB-9984](https://issues.apache.org/jira/browse/CB-9984) Bumps plist version and fixes failing cordova-common test
 
 ### 1.0.0 (Oct 29, 2015)
 
-* CB-9890 Documents cordova-common
-* CB-9598 Correct cordova-lib -> cordova-common in README
+* [CB-9890](https://issues.apache.org/jira/browse/CB-9890) Documents cordova-common
+* [CB-9598](https://issues.apache.org/jira/browse/CB-9598) Correct cordova-lib -> cordova-common in README
 * Pick ConfigParser changes from apache@0c3614e
-* CB-9743 Removes system frameworks handling from ConfigChanges
-* CB-9598 Cleans out code which has been moved to `cordova-common`
+* [CB-9743](https://issues.apache.org/jira/browse/CB-9743) Removes system frameworks handling from ConfigChanges
+* [CB-9598](https://issues.apache.org/jira/browse/CB-9598) Cleans out code which has been moved to `cordova-common`
 * Pick ConfigParser changes from apache@ddb027b
 * Picking CordovaError changes from apache@a3b1fca
-* CB-9598 Adds tests and fixtures based on existing cordova-lib ones
-* CB-9598 Initial implementation for cordova-common
+* [CB-9598](https://issues.apache.org/jira/browse/CB-9598) Adds tests and fixtures based on existing cordova-lib ones
+* [CB-9598](https://issues.apache.org/jira/browse/CB-9598) Initial implementation for cordova-common
 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/cordova-common.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/cordova-common.js b/node_modules/cordova-common/cordova-common.js
index 1f97b66..dcaf7a4 100644
--- a/node_modules/cordova-common/cordova-common.js
+++ b/node_modules/cordova-common/cordova-common.js
@@ -17,26 +17,30 @@
     under the License.
 */
 
-exports = module.exports = {
-    events: require('./src/events'),
-    superspawn: require('./src/superspawn'),
-
-    ActionStack: require('./src/ActionStack'),
-    CordovaError: require('./src/CordovaError/CordovaError'),
-    CordovaLogger: require('./src/CordovaLogger'),
-    CordovaExternalToolErrorContext: require('./src/CordovaError/CordovaExternalToolErrorContext'),
-    PlatformJson: require('./src/PlatformJson'),
-    ConfigParser: require('./src/ConfigParser/ConfigParser.js'),
-
-    PluginInfo: require('./src/PluginInfo/PluginInfo.js'),
-    PluginInfoProvider: require('./src/PluginInfo/PluginInfoProvider.js'),
-    
-    PluginManager: require('./src/PluginManager'),
-
-    ConfigChanges: require('./src/ConfigChanges/ConfigChanges.js'),
-    ConfigKeeper: require('./src/ConfigChanges/ConfigKeeper.js'),
-    ConfigFile: require('./src/ConfigChanges/ConfigFile.js'),
-    mungeUtil: require('./src/ConfigChanges/munge-util.js'),
-
-    xmlHelpers: require('./src/util/xml-helpers')
-};
+var addProperty = require('./src/util/addProperty');
+
+module.exports = { };
+
+addProperty(module, 'events', './src/events');
+addProperty(module, 'superspawn', './src/superspawn');
+
+addProperty(module, 'ActionStack', './src/ActionStack');
+addProperty(module, 'CordovaError', './src/CordovaError/CordovaError');
+addProperty(module, 'CordovaLogger', './src/CordovaLogger');
+addProperty(module, 'CordovaExternalToolErrorContext', './src/CordovaError/CordovaExternalToolErrorContext');
+addProperty(module, 'PlatformJson', './src/PlatformJson');
+addProperty(module, 'ConfigParser', './src/ConfigParser/ConfigParser');
+addProperty(module, 'FileUpdater', './src/FileUpdater');
+
+addProperty(module, 'PluginInfo', './src/PluginInfo/PluginInfo');
+addProperty(module, 'PluginInfoProvider', './src/PluginInfo/PluginInfoProvider');
+
+addProperty(module, 'PluginManager', './src/PluginManager');
+
+addProperty(module, 'ConfigChanges', './src/ConfigChanges/ConfigChanges');
+addProperty(module, 'ConfigKeeper', './src/ConfigChanges/ConfigKeeper');
+addProperty(module, 'ConfigFile', './src/ConfigChanges/ConfigFile');
+addProperty(module, 'mungeUtil', './src/ConfigChanges/munge-util');
+
+addProperty(module, 'xmlHelpers', './src/util/xml-helpers');
+

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index 9a1edb3..d4dddc4 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -1,42 +1,42 @@
 {
   "_args": [
     [
-      "cordova-common@1.2.0",
-      "d:\\cordova\\cordova-android"
+      "cordova-common@^1.3.0",
+      "D:\\Cordova\\cordova-android"
     ]
   ],
-  "_from": "cordova-common@1.2.0",
-  "_id": "cordova-common@1.2.0",
+  "_from": "cordova-common@>=1.3.0 <2.0.0",
+  "_id": "cordova-common@1.3.0",
   "_inCache": true,
   "_installable": true,
   "_location": "/cordova-common",
-  "_nodeVersion": "5.9.1",
+  "_nodeVersion": "5.4.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/cordova-common-1.2.0.tgz_1461227352417_0.14771279646083713"
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/cordova-common-1.3.0.tgz_1464130094288_0.48495062021538615"
   },
   "_npmUser": {
-    "email": "kotikov.vladimir@gmail.com",
-    "name": "kotikov.vladimir"
+    "email": "stevengill97@gmail.com",
+    "name": "stevegill"
   },
-  "_npmVersion": "3.8.5",
+  "_npmVersion": "3.9.0",
   "_phantomChildren": {},
   "_requested": {
     "name": "cordova-common",
-    "raw": "cordova-common@1.2.0",
-    "rawSpec": "1.2.0",
+    "raw": "cordova-common@^1.3.0",
+    "rawSpec": "^1.3.0",
     "scope": null,
-    "spec": "1.2.0",
-    "type": "version"
+    "spec": ">=1.3.0 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "file:cordova-dist\\tools\\cordova-common-1.2.0.tgz",
-  "_shasum": "474b7f77c6c89d3f995c947d96046edf2e8c404d",
+  "_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz",
+  "_shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491",
   "_shrinkwrap": null,
-  "_spec": "cordova-common@1.2.0",
-  "_where": "d:\\cordova\\cordova-android",
+  "_spec": "cordova-common@^1.3.0",
+  "_where": "D:\\Cordova\\cordova-android",
   "author": {
     "name": "Apache Software Foundation"
   },
@@ -51,6 +51,7 @@
     "cordova-registry-mapper": "^1.1.8",
     "elementtree": "^0.1.6",
     "glob": "^5.0.13",
+    "minimatch": "^3.0.0",
     "osenv": "^0.1.3",
     "plist": "^1.2.0",
     "q": "^1.4.1",
@@ -69,8 +70,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "474b7f77c6c89d3f995c947d96046edf2e8c404d",
-    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.2.0.tgz"
+    "shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491",
+    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz"
   },
   "engineStrict": true,
   "engines": {
@@ -117,5 +118,5 @@
     "jshint": "node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint spec",
     "test": "npm run jshint && npm run jasmine"
   },
-  "version": "1.2.0"
+  "version": "1.3.0"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
index dd9ebbc..9c540b9 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
@@ -17,13 +17,17 @@
 var fs = require('fs');
 var path = require('path');
 
-var bplist = require('bplist-parser');
-var et   = require('elementtree');
-var glob = require('glob');
-var plist = require('plist');
-
-var plist_helpers = require('../util/plist-helpers');
-var xml_helpers = require('../util/xml-helpers');
+var modules = {};
+var addProperty = require('../util/addProperty');
+
+// Use delay loading to ensure plist and other node modules to not get loaded
+// on Android, Windows platforms
+addProperty(module, 'bplist', 'bplist-parser', modules);
+addProperty(module, 'et', 'elementtree', modules);
+addProperty(module, 'glob', 'glob', modules);
+addProperty(module, 'plist', 'plist', modules);
+addProperty(module, 'plist_helpers', '../util/plist-helpers', modules);
+addProperty(module, 'xml_helpers', '../util/xml-helpers', modules);
 
 /******************************************************************************
 * ConfigFile class
@@ -67,7 +71,7 @@ function ConfigFile_load() {
     // the same in a future release
     if (ext == '.xml' || ext == '.appxmanifest') {
         self.type = 'xml';
-        self.data = xml_helpers.parseElementtreeSync(filepath);
+        self.data = modules.xml_helpers.parseElementtreeSync(filepath);
     } else {
         // plist file
         self.type = 'plist';
@@ -76,8 +80,8 @@ function ConfigFile_load() {
         //       Do we still need to support binary plist?
         //       If yes, use plist.parseStringSync() and read the file once.
         self.data = isBinaryPlist(filepath) ?
-                bplist.parseBuffer(fs.readFileSync(filepath)) :
-                plist.parse(fs.readFileSync(filepath, 'utf8'));
+                modules.bplist.parseBuffer(fs.readFileSync(filepath)) :
+                modules.plist.parse(fs.readFileSync(filepath, 'utf8'));
     }
 }
 
@@ -88,7 +92,7 @@ ConfigFile.prototype.save = function ConfigFile_save() {
     } else {
         // plist
         var regExp = new RegExp('<string>[ \t\r\n]+?</string>', 'g');
-        fs.writeFileSync(self.filepath, plist.build(self.data).replace(regExp, '<string></string>'));
+        fs.writeFileSync(self.filepath, modules.plist.build(self.data).replace(regExp, '<string></string>'));
     }
     self.is_changed = false;
 };
@@ -98,16 +102,16 @@ ConfigFile.prototype.graft_child = function ConfigFile_graft_child(selector, xml
     var filepath = self.filepath;
     var result;
     if (self.type === 'xml') {
-        var xml_to_graft = [et.XML(xml_child.xml)];
-        result = xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
+        var xml_to_graft = [modules.et.XML(xml_child.xml)];
+        result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
         if ( !result) {
-            throw new Error('grafting xml at selector "' + selector + '" from "' + filepath + '" during config install went bad :(');
+            throw new Error('Unable to graft xml at selector "' + selector + '" from "' + filepath + '" during config install');
         }
     } else {
         // plist file
-        result = plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
+        result = modules.plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
         if ( !result ) {
-            throw new Error('grafting to plist "' + filepath + '" during config install went bad :(');
+            throw new Error('Unable to graft plist "' + filepath + '" during config install');
         }
     }
     self.is_changed = true;
@@ -118,11 +122,11 @@ ConfigFile.prototype.prune_child = function ConfigFile_prune_child(selector, xml
     var filepath = self.filepath;
     var result;
     if (self.type === 'xml') {
-        var xml_to_graft = [et.XML(xml_child.xml)];
-        result = xml_helpers.pruneXML(self.data, xml_to_graft, selector);
+        var xml_to_graft = [modules.et.XML(xml_child.xml)];
+        result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector);
     } else {
         // plist file
-        result = plist_helpers.prunePLIST(self.data, xml_child.xml, selector);
+        result = modules.plist_helpers.prunePLIST(self.data, xml_child.xml, selector);
     }
     if (!result) {
         var err_msg = 'Pruning at selector "' + selector + '" from "' + filepath + '" went bad.';
@@ -140,7 +144,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
 
     if (file.indexOf('*') > -1) {
         // handle wildcards in targets using glob.
-        matches = glob.sync(path.join(project_dir, '**', file));
+        matches = modules.glob.sync(path.join(project_dir, '**', file));
         if (matches.length) filepath = matches[0];
 
         // [CB-5989] multiple Info.plist files may exist. default to $PROJECT_NAME-Info.plist
@@ -167,7 +171,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
         } else if (platform == 'android') {
             filepath = path.join(project_dir, 'res', 'xml', 'config.xml');
         } else {
-            matches = glob.sync(path.join(project_dir, '**', 'config.xml'));
+            matches = modules.glob.sync(path.join(project_dir, '**', 'config.xml'));
             if (matches.length) filepath = matches[0];
         }
         return filepath;
@@ -180,7 +184,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
 // Find out the real name of an iOS project
 // TODO: glob is slow, need a better way or caching, or avoid using more than once.
 function getIOSProjectname(project_dir) {
-    var matches = glob.sync(path.join(project_dir, '*.xcodeproj'));
+    var matches = modules.glob.sync(path.join(project_dir, '*.xcodeproj'));
     var iospath;
     if (matches.length === 1) {
         iospath = path.basename(matches[0],'.xcodeproj');

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/CordovaLogger.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/CordovaLogger.js b/node_modules/cordova-common/src/CordovaLogger.js
index 852d298..71bc7e8 100644
--- a/node_modules/cordova-common/src/CordovaLogger.js
+++ b/node_modules/cordova-common/src/CordovaLogger.js
@@ -89,7 +89,7 @@ CordovaLogger.prototype.log = function (logLevel, message) {
     var isVerbose = this.logLevel === 'verbose';
     var cursor = this.stdoutCursor;
 
-    if(message instanceof Error || logLevel === CordovaLogger.ERROR) {
+    if (message instanceof Error || logLevel === CordovaLogger.ERROR) {
         message = formatError(message, isVerbose);
         cursor = this.stderrCursor;
     }
@@ -196,10 +196,10 @@ CordovaLogger.prototype.subscribe = function (eventEmitter) {
 function formatError(error, isVerbose) {
     var message = '';
 
-    if(error instanceof CordovaError) {
+    if (error instanceof CordovaError) {
         message = error.toString(isVerbose);
-    } else if(error instanceof Error) {
-        if(isVerbose) {
+    } else if (error instanceof Error) {
+        if (isVerbose) {
             message = error.stack;
         } else {
             message = error.message;
@@ -209,7 +209,7 @@ function formatError(error, isVerbose) {
         message = error;
     }
 
-    if(message.toUpperCase().indexOf('ERROR:') !== 0) {
+    if (typeof message === 'string' && message.toUpperCase().indexOf('ERROR:') !== 0) {
         // Needed for backward compatibility with external tools
         message = 'Error: ' + message;
     }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/FileUpdater.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/FileUpdater.js b/node_modules/cordova-common/src/FileUpdater.js
new file mode 100644
index 0000000..a09f39c
--- /dev/null
+++ b/node_modules/cordova-common/src/FileUpdater.js
@@ -0,0 +1,422 @@
+/**
+    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.
+*/
+
+"use strict";
+
+var fs = require("fs");
+var path = require("path");
+var shell = require("shelljs");
+var minimatch = require("minimatch");
+
+/**
+ * Logging callback used in the FileUpdater methods.
+ * @callback loggingCallback
+ * @param {string} message A message describing a single file update operation.
+ */
+
+/**
+ * Updates a target file or directory with a source file or directory. (Directory updates are
+ * not recursive.) Stats for target and source items must be passed in. This is an internal
+ * helper function used by other methods in this module.
+ *
+ * @param {?string} sourcePath Source file or directory to be used to update the
+ *     destination. If the source is null, then the destination is deleted if it exists.
+ * @param {?fs.Stats} sourceStats An instance of fs.Stats for the source path, or null if
+ *     the source does not exist.
+ * @param {string} targetPath Required destination file or directory to be updated. If it does
+ *     not exist, it will be created.
+ * @param {?fs.Stats} targetStats An instance of fs.Stats for the target path, or null if
+ *     the target does not exist.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ *     and source path parameters are relative; may be omitted if the paths are absolute. The
+ *     rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ *     Otherwise, a file is copied if the source's last-modified time is greather than or
+ *     equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ *     describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ *     and everything was up to date
+ */
+function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, options, log) {
+    var updated = false;
+
+    var rootDir = (options && options.rootDir) || "";
+    var copyAll = (options && options.all) || false;
+
+    var targetFullPath = path.join(rootDir || "", targetPath);
+
+    if (sourceStats) {
+        var sourceFullPath = path.join(rootDir || "", sourcePath);
+
+        if (targetStats) {
+            // The target exists. But if the directory status doesn't match the source, delete it.
+            if (targetStats.isDirectory() && !sourceStats.isDirectory()) {
+                log("rmdir  " + targetPath + " (source is a file)");
+                shell.rm("-rf", targetFullPath);
+                targetStats = null;
+                updated = true;
+            } else if (!targetStats.isDirectory() && sourceStats.isDirectory()) {
+                log("delete " + targetPath + " (source is a directory)");
+                shell.rm("-f", targetFullPath);
+                targetStats = null;
+                updated = true;
+            }
+        }
+
+        if (!targetStats) {
+            if (sourceStats.isDirectory()) {
+                // The target directory does not exist, so it should be created.
+                log("mkdir " + targetPath);
+                shell.mkdir("-p", targetFullPath);
+                updated = true;
+            } else if (sourceStats.isFile()) {
+                // The target file does not exist, so it should be copied from the source.
+                log("copy  " + sourcePath + " " + targetPath + (copyAll ? "" : " (new file)"));
+                shell.cp("-f", sourceFullPath, targetFullPath);
+                updated = true;
+            }
+        } else if (sourceStats.isFile() && targetStats.isFile()) {
+            // The source and target paths both exist and are files.
+            if (copyAll) {
+                // The caller specified all files should be copied.
+                log("copy  " + sourcePath + " " + targetPath);
+                shell.cp("-f", sourceFullPath, targetFullPath);
+                updated = true;
+            } else {
+                // Copy if the source has been modified since it was copied to the target, or if
+                // the file sizes are different. (The latter catches most cases in which something
+                // was done to the file after copying.) Comparison is >= rather than > to allow
+                // for timestamps lacking sub-second precision in some filesystems.
+                if (sourceStats.mtime.getTime() >= targetStats.mtime.getTime() ||
+                        sourceStats.size !== targetStats.size) {
+                    log("copy  " + sourcePath + " " + targetPath + " (updated file)");
+                    shell.cp("-f", sourceFullPath, targetFullPath);
+                    updated = true;
+                }
+            }
+        }
+    } else if (targetStats) {
+        // The target exists but the source is null, so the target should be deleted.
+        if (targetStats.isDirectory()) {
+            log("rmdir  " + targetPath + (copyAll ? "" : " (no source)"));
+            shell.rm("-rf", targetFullPath);
+        } else {
+            log("delete " + targetPath + (copyAll ? "" : " (no source)"));
+            shell.rm("-f", targetFullPath);
+        }
+        updated = true;
+    }
+
+    return updated;
+}
+
+/**
+ * Helper for updatePath and updatePaths functions. Queries stats for source and target
+ * and ensures target directory exists before copying a file.
+ */
+function updatePathInternal(sourcePath, targetPath, options, log) {
+    var rootDir = (options && options.rootDir) || "";
+    var targetFullPath = path.join(rootDir, targetPath);
+    var targetStats = fs.existsSync(targetFullPath) ? fs.statSync(targetFullPath) : null;
+    var sourceStats = null;
+
+    if (sourcePath) {
+        // A non-null source path was specified. It should exist.
+        var sourceFullPath = path.join(rootDir, sourcePath);
+        if (!fs.existsSync(sourceFullPath)) {
+            throw new Error("Source path does not exist: " + sourcePath);
+        }
+
+        sourceStats = fs.statSync(sourceFullPath);
+
+        // Create the target's parent directory if it doesn't exist.
+        var parentDir = path.dirname(targetFullPath);
+        if (!fs.existsSync(parentDir)) {
+            shell.mkdir("-p", parentDir);
+        }
+    }
+
+    return updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, options, log);
+}
+
+/**
+ * Updates a target file or directory with a source file or directory. (Directory updates are
+ * not recursive.)
+ *
+ * @param {?string} sourcePath Source file or directory to be used to update the
+ *     destination. If the source is null, then the destination is deleted if it exists.
+ * @param {string} targetPath Required destination file or directory to be updated. If it does
+ *     not exist, it will be created.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ *     and source path parameters are relative; may be omitted if the paths are absolute. The
+ *     rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ *     Otherwise, a file is copied if the source's last-modified time is greather than or
+ *     equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ *     describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ *     and everything was up to date
+ */
+function updatePath(sourcePath, targetPath, options, log) {
+    if (sourcePath !== null && typeof sourcePath !== "string") {
+        throw new Error("A source path (or null) is required.");
+    }
+
+    if (!targetPath || typeof targetPath !== "string") {
+        throw new Error("A target path is required.");
+    }
+
+    log = log || function(message) { };
+
+    return updatePathInternal(sourcePath, targetPath, options, log);
+}
+
+/**
+ * Updates files and directories based on a mapping from target paths to source paths. Targets
+ * with null sources in the map are deleted.
+ *
+ * @param {Object} pathMap A dictionary mapping from target paths to source paths.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ *     and source path parameters are relative; may be omitted if the paths are absolute. The
+ *     rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ *     Otherwise, a file is copied if the source's last-modified time is greather than or
+ *     equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ *     describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ *     and everything was up to date
+ */
+function updatePaths(pathMap, options, log) {
+    if (!pathMap || typeof pathMap !== "object" || Array.isArray(pathMap)) {
+        throw new Error("An object mapping from target paths to source paths is required.");
+    }
+
+    log = log || function(message) { };
+
+    var updated = false;
+
+    // Iterate in sorted order to ensure directories are created before files under them.
+    Object.keys(pathMap).sort().forEach(function (targetPath) {
+        var sourcePath = pathMap[targetPath];
+        updated = updatePathInternal(sourcePath, targetPath, options, log) || updated;
+    });
+
+    return updated;
+}
+
+/**
+ * Updates a target directory with merged files and subdirectories from source directories.
+ *
+ * @param {string|string[]} sourceDirs Required source directory or array of source directories
+ *     to be merged into the target. The directories are listed in order of precedence; files in
+ *     directories later in the array supersede files in directories earlier in the array
+ *     (regardless of timestamps).
+ * @param {string} targetDir Required destination directory to be updated. If it does not exist,
+ *     it will be created. If it exists, newer files from source directories will be copied over,
+ *     and files missing in the source directories will be deleted.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ *     and source path parameters are relative; may be omitted if the paths are absolute. The
+ *     rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ *     Otherwise, a file is copied if the source's last-modified time is greather than or
+ *     equal to the target's last-modified time, or if the file sizes are different.
+ * @param {string|string[]} [options.include] Optional glob string or array of glob strings that
+ *     are tested against both target and source relative paths to determine if they are included
+ *     in the merge-and-update. If unspecified, all items are included.
+ * @param {string|string[]} [options.exclude] Optional glob string or array of glob strings that
+ *     are tested against both target and source relative paths to determine if they are excluded
+ *     from the merge-and-update. Exclusions override inclusions. If unspecified, no items are
+ *     excluded.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ *     describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ *     and everything was up to date
+ */
+function mergeAndUpdateDir(sourceDirs, targetDir, options, log) {
+    if (sourceDirs && typeof sourceDirs === "string") {
+        sourceDirs = [ sourceDirs ];
+    } else if (!Array.isArray(sourceDirs)) {
+        throw new Error("A source directory path or array of paths is required.");
+    }
+
+    if (!targetDir || typeof targetDir !== "string") {
+        throw new Error("A target directory path is required.");
+    }
+
+    log = log || function(message) { };
+
+    var rootDir = (options && options.rootDir) || "";
+
+    var include = (options && options.include) || [ "**" ];
+    if (typeof include === "string") {
+        include = [ include ];
+    } else if (!Array.isArray(include)) {
+        throw new Error("Include parameter must be a glob string or array of glob strings.");
+    }
+
+    var exclude = (options && options.exclude) || [];
+    if (typeof exclude === "string") {
+        exclude = [ exclude ];
+    } else if (!Array.isArray(exclude)) {
+        throw new Error("Exclude parameter must be a glob string or array of glob strings.");
+    }
+
+    // Scan the files in each of the source directories.
+    var sourceMaps = [];
+    for (var i in sourceDirs) {
+        var sourceFullPath = path.join(rootDir, sourceDirs[i]);
+        if (!fs.existsSync(sourceFullPath)) {
+            throw new Error("Source directory does not exist: " + sourceDirs[i]);
+        }
+        sourceMaps[i] = mapDirectory(rootDir, sourceDirs[i], include, exclude);
+    }
+
+    // Scan the files in the target directory, if it exists.
+    var targetMap = {};
+    var targetFullPath = path.join(rootDir, targetDir);
+    if (fs.existsSync(targetFullPath)) {
+        targetMap = mapDirectory(rootDir, targetDir, include, exclude);
+    }
+
+    var pathMap = mergePathMaps(sourceMaps, targetMap, targetDir);
+
+    var updated = false;
+
+    // Iterate in sorted order to ensure directories are created before files under them.
+    Object.keys(pathMap).sort().forEach(function (subPath) {
+        var entry = pathMap[subPath];
+        updated = updatePathWithStats(
+            entry.sourcePath,
+            entry.sourceStats,
+            entry.targetPath,
+            entry.targetStats,
+            options,
+            log) || updated;
+    });
+
+    return updated;
+}
+
+/**
+ * Creates a dictionary map of all files and directories under a path.
+ */
+function mapDirectory(rootDir, subDir, include, exclude) {
+    var dirMap = { "": { subDir: subDir, stats: fs.statSync(path.join(rootDir, subDir)) } };
+    mapSubdirectory(rootDir, subDir, "", include, exclude, dirMap);
+    return dirMap;
+
+    function mapSubdirectory(rootDir, subDir, relativeDir, include, exclude, dirMap) {
+        var itemMapped = false;
+        var items = fs.readdirSync(path.join(rootDir, subDir, relativeDir));
+        for (var i in items) {
+            var relativePath = path.join(relativeDir, items[i]);
+
+            // Skip any files or directories (and everything under) that match an exclude glob.
+            if (matchGlobArray(relativePath, exclude)) {
+                continue;
+            }
+
+            // Stats obtained here (required at least to know where to recurse in directories)
+            // are saved for later, where the modified times may also be used. This minimizes
+            // the number of file I/O operations performed.
+            var fullPath = path.join(rootDir, subDir, relativePath);
+            var stats = fs.statSync(fullPath);
+
+            if (stats.isDirectory()) {
+                // Directories are included if either something under them is included or they
+                // match an include glob.
+                if (mapSubdirectory(rootDir, subDir, relativePath, include, exclude, dirMap) ||
+                        matchGlobArray(relativePath, include)) {
+                    dirMap[relativePath] = { subDir: subDir, stats: stats };
+                    itemMapped = true;
+                }
+            } else if (stats.isFile()) {
+                // Files are included only if they match an include glob.
+                if (matchGlobArray(relativePath, include)) {
+                    dirMap[relativePath] = { subDir: subDir, stats: stats };
+                    itemMapped = true;
+                }
+            }
+        }
+        return itemMapped;
+    }
+
+    function matchGlobArray(path, globs) {
+        for (var i in globs) {
+            if (minimatch(path, globs[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
+
+/**
+ * Merges together multiple source maps and a target map into a single mapping from
+ * relative paths to objects with target and source paths and stats.
+ */
+function mergePathMaps(sourceMaps, targetMap, targetDir) {
+    // Merge multiple source maps together, along with target path info.
+    // Entries in later source maps override those in earlier source maps.
+    // Target stats will be filled in below for targets that exist.
+    var pathMap = {};
+    sourceMaps.forEach(function (sourceMap) {
+        for (var sourceSubPath in sourceMap) {
+            var sourceEntry = sourceMap[sourceSubPath];
+            pathMap[sourceSubPath] = {
+                targetPath: path.join(targetDir, sourceSubPath),
+                targetStats: null,
+                sourcePath: path.join(sourceEntry.subDir, sourceSubPath),
+                sourceStats: sourceEntry.stats
+            };
+        }
+    });
+
+    // Fill in target stats for targets that exist, and create entries
+    // for targets that don't have any corresponding sources.
+    for (var subPath in targetMap) {
+        var entry = pathMap[subPath];
+        if (entry) {
+            entry.targetStats = targetMap[subPath].stats;
+        } else {
+            pathMap[subPath] = {
+                targetPath: path.join(targetDir, subPath),
+                targetStats: targetMap[subPath].stats,
+                sourcePath: null,
+                sourceStats: null
+            };
+        }
+    }
+
+    return pathMap;
+}
+
+module.exports = {
+    updatePath: updatePath,
+    updatePaths: updatePaths,
+    mergeAndUpdateDir: mergeAndUpdateDir
+};
+

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
index e1a1b31..77199ec 100644
--- a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
+++ b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
@@ -331,7 +331,7 @@ function PluginInfo(dirname) {
     ///// PluginInfo Constructor logic  /////
     self.filepath = path.join(dirname, 'plugin.xml');
     if (!fs.existsSync(self.filepath)) {
-        throw new CordovaError('Cannot find plugin.xml for plugin \'' + path.basename(dirname) + '\'. Please try adding it again.');
+        throw new CordovaError('Cannot find plugin.xml for plugin "' + path.basename(dirname) + '". Please try adding it again.');
     }
 
     self.dir = dirname;

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/events.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/events.js b/node_modules/cordova-common/src/events.js
index 8751976..e702bd8 100644
--- a/node_modules/cordova-common/src/events.js
+++ b/node_modules/cordova-common/src/events.js
@@ -40,7 +40,7 @@ module.exports.forwardEventsTo = function (eventEmitter) {
     }
 
     if (!(eventEmitter instanceof EventEmitter))
-        throw new Error('Cordova events could be redirected to another EventEmitter instance only');
+        throw new Error('Cordova events can be redirected to another EventEmitter instance only');
 
     // CB-10940 Skipping forwarding to self to avoid infinite recursion.
     // This is the case when the modules are npm-linked.

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-common/src/util/addProperty.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/addProperty.js b/node_modules/cordova-common/src/util/addProperty.js
new file mode 100644
index 0000000..7dc4dc1
--- /dev/null
+++ b/node_modules/cordova-common/src/util/addProperty.js
@@ -0,0 +1,32 @@
+/*
+       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.
+*/
+
+module.exports = function addProperty(module, property, modulePath, obj) {
+    
+    obj = obj || module.exports;
+    // Add properties as getter to delay load the modules on first invocation
+    Object.defineProperty(obj, property, {
+        configurable: true,
+        get: function () {
+            var delayLoadedModule = module.require(modulePath);
+            obj[property] = delayLoadedModule;
+            return delayLoadedModule;
+        }
+    });
+};

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/cordova-registry-mapper/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/package.json b/node_modules/cordova-registry-mapper/package.json
index 01b208c..d9c8324 100644
--- a/node_modules/cordova-registry-mapper/package.json
+++ b/node_modules/cordova-registry-mapper/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "cordova-registry-mapper@^1.1.8",
-      "d:\\cordova\\cordova-android\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-android\\node_modules\\cordova-common"
     ]
   ],
   "_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "e244b9185b8175473bff6079324905115f83dc7c",
   "_shrinkwrap": null,
   "_spec": "cordova-registry-mapper@^1.1.8",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\cordova-common",
   "author": {
     "name": "Steve Gill"
   },

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/elementtree/package.json
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/package.json b/node_modules/elementtree/package.json
index f1a5f14..eadd6a4 100644
--- a/node_modules/elementtree/package.json
+++ b/node_modules/elementtree/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "elementtree@^0.1.6",
-      "/Users/steveng/repo/cordova/cordova-android"
+      "D:\\Cordova\\cordova-android"
     ]
   ],
   "_from": "elementtree@>=0.1.6 <0.2.0",
@@ -28,11 +28,11 @@
     "/",
     "/cordova-common"
   ],
-  "_resolved": "http://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
+  "_resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
   "_shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
   "_shrinkwrap": null,
   "_spec": "elementtree@^0.1.6",
-  "_where": "/Users/steveng/repo/cordova/cordova-android",
+  "_where": "D:\\Cordova\\cordova-android",
   "author": {
     "name": "Rackspace US, Inc."
   },
@@ -41,12 +41,12 @@
   },
   "contributors": [
     {
-      "name": "Paul Querna",
-      "email": "paul.querna@rackspace.com"
+      "email": "paul.querna@rackspace.com",
+      "name": "Paul Querna"
     },
     {
-      "name": "Tomaz Muraus",
-      "email": "tomaz.muraus@rackspace.com"
+      "email": "tomaz.muraus@rackspace.com",
+      "name": "Tomaz Muraus"
     }
   ],
   "dependencies": {
@@ -61,18 +61,18 @@
   },
   "dist": {
     "shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
-    "tarball": "http://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz"
+    "tarball": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz"
   },
   "engines": {
     "node": ">= 0.4.0"
   },
   "homepage": "https://github.com/racker/node-elementtree",
   "keywords": [
-    "elementtree",
-    "parser",
+    "xml",
     "sax",
+    "parser",
     "seralization",
-    "xml"
+    "elementtree"
   ],
   "licenses": [
     {
@@ -83,8 +83,8 @@
   "main": "lib/elementtree.js",
   "maintainers": [
     {
-      "name": "rphillips",
-      "email": "ryan@trolocsis.com"
+      "email": "ryan@trolocsis.com",
+      "name": "rphillips"
     }
   ],
   "name": "elementtree",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/glob/package.json
----------------------------------------------------------------------
diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json
index 7c398ae..03aeb13 100644
--- a/node_modules/glob/package.json
+++ b/node_modules/glob/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "glob@^5.0.13",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/cordova-common"
+      "D:\\Cordova\\cordova-android\\node_modules\\cordova-common"
     ]
   ],
   "_from": "glob@>=5.0.13 <6.0.0",
@@ -28,11 +28,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+  "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
   "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
   "_shrinkwrap": null,
   "_spec": "glob@^5.0.13",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/cordova-common",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\cordova-common",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",
@@ -58,15 +58,15 @@
   "directories": {},
   "dist": {
     "shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
-    "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
+    "tarball": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
   },
   "engines": {
     "node": "*"
   },
   "files": [
-    "common.js",
     "glob.js",
-    "sync.js"
+    "sync.js",
+    "common.js"
   ],
   "gitHead": "3a7e71d453dd80e75b196fd262dd23ed54beeceb",
   "homepage": "https://github.com/isaacs/node-glob#readme",
@@ -74,8 +74,8 @@
   "main": "glob.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "i@izs.me"
+      "email": "i@izs.me",
+      "name": "isaacs"
     }
   ],
   "name": "glob",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/inflight/.eslintrc
----------------------------------------------------------------------
diff --git a/node_modules/inflight/.eslintrc b/node_modules/inflight/.eslintrc
deleted file mode 100644
index b7a1550..0000000
--- a/node_modules/inflight/.eslintrc
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "env" : {
-    "node" : true
-  },
-  "rules" : {
-    "semi": [2, "never"],
-    "strict": 0,
-    "quotes": [1, "single", "avoid-escape"],
-    "no-use-before-define": 0,
-    "curly": 0,
-    "no-underscore-dangle": 0,
-    "no-lonely-if": 1,
-    "no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}],
-    "no-mixed-requires": 0,
-    "space-infix-ops": 0
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/inflight/package.json
----------------------------------------------------------------------
diff --git a/node_modules/inflight/package.json b/node_modules/inflight/package.json
index 3bc7cf7..1a9acb1 100644
--- a/node_modules/inflight/package.json
+++ b/node_modules/inflight/package.json
@@ -2,20 +2,24 @@
   "_args": [
     [
       "inflight@^1.0.4",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/glob"
+      "D:\\Cordova\\cordova-android\\node_modules\\glob"
     ]
   ],
   "_from": "inflight@>=1.0.4 <2.0.0",
-  "_id": "inflight@1.0.4",
+  "_id": "inflight@1.0.5",
   "_inCache": true,
   "_installable": true,
   "_location": "/inflight",
-  "_nodeVersion": "0.10.32",
+  "_nodeVersion": "5.10.1",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/inflight-1.0.5.tgz_1463529611443_0.00041943578980863094"
+  },
   "_npmUser": {
-    "email": "ogd@aoaioxxysz.net",
-    "name": "othiym23"
+    "email": "kat@sykosomatic.org",
+    "name": "zkat"
   },
-  "_npmVersion": "2.1.3",
+  "_npmVersion": "3.9.1",
   "_phantomChildren": {},
   "_requested": {
     "name": "inflight",
@@ -28,11 +32,11 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
-  "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
+  "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz",
+  "_shasum": "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a",
   "_shrinkwrap": null,
   "_spec": "inflight@^1.0.4",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/glob",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\glob",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",
@@ -47,29 +51,36 @@
   },
   "description": "Add callbacks to requests in flight to avoid async duplication",
   "devDependencies": {
-    "tap": "^0.4.10"
+    "tap": "^1.2.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
-    "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz"
+    "shasum": "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a",
+    "tarball": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz"
   },
-  "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba",
+  "files": [
+    "inflight.js"
+  ],
+  "gitHead": "559e37b4f6327fca797fe8d7fe8ed6d9cae08821",
   "homepage": "https://github.com/isaacs/inflight",
   "license": "ISC",
   "main": "inflight.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "i@izs.me"
+      "email": "me@re-becca.org",
+      "name": "iarna"
+    },
+    {
+      "email": "i@izs.me",
+      "name": "isaacs"
     },
     {
-      "name": "othiym23",
-      "email": "ogd@aoaioxxysz.net"
+      "email": "ogd@aoaioxxysz.net",
+      "name": "othiym23"
     },
     {
-      "name": "iarna",
-      "email": "me@re-becca.org"
+      "email": "kat@sykosomatic.org",
+      "name": "zkat"
     }
   ],
   "name": "inflight",
@@ -77,10 +88,10 @@
   "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
-    "url": "git://github.com/isaacs/inflight.git"
+    "url": "git+https://github.com/npm/inflight.git"
   },
   "scripts": {
     "test": "tap test.js"
   },
-  "version": "1.0.4"
+  "version": "1.0.5"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/inflight/test.js
----------------------------------------------------------------------
diff --git a/node_modules/inflight/test.js b/node_modules/inflight/test.js
deleted file mode 100644
index 2bb75b3..0000000
--- a/node_modules/inflight/test.js
+++ /dev/null
@@ -1,97 +0,0 @@
-var test = require('tap').test
-var inf = require('./inflight.js')
-
-
-function req (key, cb) {
-  cb = inf(key, cb)
-  if (cb) setTimeout(function () {
-    cb(key)
-    cb(key)
-  })
-  return cb
-}
-
-test('basic', function (t) {
-  var calleda = false
-  var a = req('key', function (k) {
-    t.notOk(calleda)
-    calleda = true
-    t.equal(k, 'key')
-    if (calledb) t.end()
-  })
-  t.ok(a, 'first returned cb function')
-
-  var calledb = false
-  var b = req('key', function (k) {
-    t.notOk(calledb)
-    calledb = true
-    t.equal(k, 'key')
-    if (calleda) t.end()
-  })
-
-  t.notOk(b, 'second should get falsey inflight response')
-})
-
-test('timing', function (t) {
-  var expect = [
-    'method one',
-    'start one',
-    'end one',
-    'two',
-    'tick',
-    'three'
-  ]
-  var i = 0
-
-  function log (m) {
-    t.equal(m, expect[i], m + ' === ' + expect[i])
-    ++i
-    if (i === expect.length)
-      t.end()
-  }
-
-  function method (name, cb) {
-    log('method ' + name)
-    process.nextTick(cb)
-  }
-
-  var one = inf('foo', function () {
-    log('start one')
-    var three = inf('foo', function () {
-      log('three')
-    })
-    if (three) method('three', three)
-    log('end one')
-  })
-
-  method('one', one)
-
-  var two = inf('foo', function () {
-    log('two')
-  })
-  if (two) method('one', two)
-
-  process.nextTick(log.bind(null, 'tick'))
-})
-
-test('parameters', function (t) {
-  t.plan(8)
-
-  var a = inf('key', function (first, second, third) {
-    t.equal(first, 1)
-    t.equal(second, 2)
-    t.equal(third, 3)
-  })
-  t.ok(a, 'first returned cb function')
-
-  var b = inf('key', function (first, second, third) {
-    t.equal(first, 1)
-    t.equal(second, 2)
-    t.equal(third, 3)
-  })
-  t.notOk(b, 'second should get falsey inflight response')
-
-  setTimeout(function () {
-    a(1, 2, 3)
-  })
-})

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/inherits/package.json
----------------------------------------------------------------------
diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json
index 6313b8e..c41eaf2 100644
--- a/node_modules/inherits/package.json
+++ b/node_modules/inherits/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "inherits@2",
-      "/Users/steveng/repo/cordova/cordova-android/node_modules/glob"
+      "D:\\Cordova\\cordova-android\\node_modules\\glob"
     ]
   ],
   "_from": "inherits@>=2.0.0 <3.0.0",
@@ -27,11 +27,11 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
   "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
   "_shrinkwrap": null,
   "_spec": "inherits@2",
-  "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/glob",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\glob",
   "browser": "./inherits_browser.js",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
@@ -42,25 +42,25 @@
   "directories": {},
   "dist": {
     "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
-    "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+    "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
   },
   "homepage": "https://github.com/isaacs/inherits#readme",
   "keywords": [
-    "browser",
-    "browserify",
-    "class",
     "inheritance",
-    "inherits",
+    "class",
     "klass",
+    "oop",
     "object-oriented",
-    "oop"
+    "inherits",
+    "browser",
+    "browserify"
   ],
   "license": "ISC",
   "main": "./inherits.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "i@izs.me"
+      "email": "i@izs.me",
+      "name": "isaacs"
     }
   ],
   "name": "inherits",

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/d6fe1a65/node_modules/lodash/package.json
----------------------------------------------------------------------
diff --git a/node_modules/lodash/package.json b/node_modules/lodash/package.json
index 8a6e8d8..4112d9f 100644
--- a/node_modules/lodash/package.json
+++ b/node_modules/lodash/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "lodash@^3.5.0",
-      "d:\\cordova\\cordova-android\\node_modules\\xmlbuilder"
+      "D:\\Cordova\\cordova-android\\node_modules\\xmlbuilder"
     ]
   ],
   "_from": "lodash@>=3.5.0 <4.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6",
   "_shrinkwrap": null,
   "_spec": "lodash@^3.5.0",
-  "_where": "d:\\cordova\\cordova-android\\node_modules\\xmlbuilder",
+  "_where": "D:\\Cordova\\cordova-android\\node_modules\\xmlbuilder",
   "author": {
     "email": "john.david.dalton@gmail.com",
     "name": "John-David Dalton",


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