You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by da...@apache.org on 2016/10/24 10:35:23 UTC

[01/21] cordova-windows git commit: CB-11579 windows: fix bug with 'cordova clean windows'

Repository: cordova-windows
Updated Branches:
  refs/heads/4.4.x f8479e5da -> 1299ade53


CB-11579 windows: fix bug with 'cordova clean windows'

This closes #189


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

Branch: refs/heads/4.4.x
Commit: 3db92496f2ccd6c4260085fda84efa2c63232827
Parents: f8479e5
Author: Nikita Matrosov <ni...@rp.ru>
Authored: Wed Jul 27 18:12:56 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:52 2016 +0300

----------------------------------------------------------------------
 spec/unit/clean.spec.js                         |  46 +++++++++++++++++++
 spec/unit/fixtures/DummyProject/config.xml      |   1 +
 .../images/SplashScreen.scale-100.png           | Bin 0 -> 24855 bytes
 template/cordova/lib/prepare.js                 |   2 +-
 4 files changed, 48 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/3db92496/spec/unit/clean.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/clean.spec.js b/spec/unit/clean.spec.js
new file mode 100644
index 0000000..c969141
--- /dev/null
+++ b/spec/unit/clean.spec.js
@@ -0,0 +1,46 @@
+var shell                = require('shelljs'),
+    path                 = require('path'),
+    fs                   = require('fs'),
+    prepareModule        = require('../../template/cordova/lib/prepare'),
+    DUMMY_PROJECT_PATH   = path.join(__dirname, '/fixtures/DummyProject'),
+    iconPath, currentProject;
+
+describe('Cordova clean command', function() {
+    beforeEach(function() {
+        shell.cp('-rf', DUMMY_PROJECT_PATH, __dirname);
+        currentProject = path.join(__dirname, 'DummyProject');
+        iconPath = path.join(currentProject, 'images/SplashScreen.scale-100.png');
+
+        var fsExistsSyncOrig = fs.existsSync;
+        spyOn(fs, 'existsSync').andCallFake(function (filePath) {
+            if (/config\.xml$/.test(filePath)) return true;
+            return fsExistsSyncOrig(filePath);
+        });
+    });
+
+    afterEach(function() {
+        shell.rm('-rf', currentProject);
+    });
+
+    it('spec 1. should remove icons when ran inside Cordova project', function(done) {
+        var config = {
+            platform: 'windows',
+            root: currentProject,
+            locations: {
+                root: currentProject,
+                configXml: path.join(currentProject, 'config.xml'),
+                www: path.join(currentProject, 'www')
+            }
+        };
+
+        var rejected = jasmine.createSpy();
+        prepareModule.clean.call(config)
+        .then(function() {
+            expect(fs.existsSync(iconPath)).toBeFalsy();
+        }, rejected)
+        .finally(function() {
+            expect(rejected).not.toHaveBeenCalled();
+            done();
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/3db92496/spec/unit/fixtures/DummyProject/config.xml
----------------------------------------------------------------------
diff --git a/spec/unit/fixtures/DummyProject/config.xml b/spec/unit/fixtures/DummyProject/config.xml
index 621d9c9..279ba82 100644
--- a/spec/unit/fixtures/DummyProject/config.xml
+++ b/spec/unit/fixtures/DummyProject/config.xml
@@ -9,6 +9,7 @@
     <author email="dev@cordova.apache.org" href="http://cordova.io">
         Apache Cordova Team
     </author>
+    <icon src="images/SplashScreen.scale-100.png" width="620" height="300"></icon>
     <content src="index.html" />
     <access origin="*" />
 </widget>

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/3db92496/spec/unit/fixtures/DummyProject/images/SplashScreen.scale-100.png
----------------------------------------------------------------------
diff --git a/spec/unit/fixtures/DummyProject/images/SplashScreen.scale-100.png b/spec/unit/fixtures/DummyProject/images/SplashScreen.scale-100.png
new file mode 100644
index 0000000..d1e6c98
Binary files /dev/null and b/spec/unit/fixtures/DummyProject/images/SplashScreen.scale-100.png differ

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/3db92496/template/cordova/lib/prepare.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/prepare.js b/template/cordova/lib/prepare.js
index 2d3a9c9..0067803 100644
--- a/template/cordova/lib/prepare.js
+++ b/template/cordova/lib/prepare.js
@@ -484,7 +484,7 @@ module.exports.clean = function (options) {
     var self = this;
     return Q().then(function () {
         cleanWww(projectRoot, self.locations);
-        cleanImages(projectRoot, projectConfig);
+        cleanImages(projectRoot, projectConfig, self.locations);
     });
 };
 


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


[17/21] cordova-windows git commit: CB-11933: Remove capabilities from manifest

Posted by da...@apache.org.
CB-11933: Remove capabilities from manifest

Windows has special logic for appxmanifest's capabilities removal, therefore we should override this behaviour

 This closes #202


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

Branch: refs/heads/4.4.x
Commit: 5ae155fc827d3f1c1e6105a2e7f1bbc6876e016d
Parents: 2dfdc16
Author: Nikita Matrosov <ma...@gmail.com>
Authored: Mon Oct 17 13:28:09 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:56 2016 +0300

----------------------------------------------------------------------
 spec/unit/ConfigChanges.spec.js                 | 61 ++++++++++++++++++++
 .../plugin.xml                                  | 12 ++++
 .../www/org.test.plugins.capabilityplugin.js    |  0
 template/cordova/Api.js                         | 10 +++-
 4 files changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5ae155fc/spec/unit/ConfigChanges.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/ConfigChanges.spec.js b/spec/unit/ConfigChanges.spec.js
index 3733fe8..44ad4cd 100644
--- a/spec/unit/ConfigChanges.spec.js
+++ b/spec/unit/ConfigChanges.spec.js
@@ -19,6 +19,9 @@
 
 var BaseMunger = require('cordova-common').ConfigChanges.PlatformMunger;
 var PlatformMunger = require('../../template/cordova/lib/ConfigChanges').PlatformMunger;
+var PluginInfo = require('cordova-common').PluginInfo;
+var Api = require('../../template/cordova/Api');
+var AppxManifest = require('../../template/cordova/lib/AppxManifest');
 
 var os = require('os');
 var path = require('path');
@@ -27,6 +30,12 @@ var shell = require('shelljs');
 var tempDir = path.join(os.tmpdir(), 'windows');
 var WINDOWS_MANIFEST = 'package.windows.appxmanifest';
 var WINDOWS10_MANIFEST = 'package.windows10.appxmanifest';
+var FIXTURES = path.join(__dirname, 'fixtures');
+var DUMMY_PLUGIN = 'org.test.plugins.capabilityplugin';
+
+var dummyPlugin = path.join(FIXTURES, DUMMY_PLUGIN);
+var dummyProjName = 'testProj';
+var windowsProject = path.join(FIXTURES, dummyProjName);
 
 describe('PlatformMunger', function () {
     var munge, munger;
@@ -75,3 +84,55 @@ describe('PlatformMunger', function () {
     });
 });
 
+describe('Capabilities within package.windows.appxmanifest', function() {
+    var testDir;
+
+    beforeEach(function() {
+        testDir = path.join(__dirname, 'testDir');
+        shell.mkdir('-p', testDir);
+        shell.cp('-rf', windowsProject + '/*', testDir);
+    });
+
+    afterEach(function() {
+        shell.rm('-rf', testDir);
+    });
+
+    it('should be removed using overriden PlatformMunger', function(done) {
+        var windowsPlatform = path.join(testDir, 'platforms/windows');
+        var windowsManifest = path.join(windowsPlatform, WINDOWS_MANIFEST);
+        var api = new Api();
+        api.root = windowsPlatform;
+        api.locations.root = windowsPlatform;
+        api.locations.www = path.join(windowsPlatform, 'www');
+        var dummyPluginInfo = new PluginInfo(dummyPlugin);
+
+        var fail = jasmine.createSpy('fail')
+        .andCallFake(function (err) {
+            console.error(err);
+        });
+
+        function getPluginCapabilities() {
+            return dummyPluginInfo.getConfigFiles()[0].xmls;
+        }
+
+        function getManifestCapabilities() {
+            var appxmanifest = AppxManifest.get(windowsManifest, true);
+            return appxmanifest.getCapabilities();
+        }
+        api.addPlugin(dummyPluginInfo)
+        .then(function() {
+            //  There is the one default capability in manifest with 'internetClient' name
+            expect(getManifestCapabilities().length).toBe(getPluginCapabilities().length + 1); 
+            api.removePlugin(dummyPluginInfo);
+        })
+        .then(function() {
+            expect(getManifestCapabilities().length).toBe(1);
+        })
+        .catch(fail)
+        .finally(function() {
+            expect(fail).not.toHaveBeenCalled();
+            done();
+        });
+    });
+});
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5ae155fc/spec/unit/fixtures/org.test.plugins.capabilityplugin/plugin.xml
----------------------------------------------------------------------
diff --git a/spec/unit/fixtures/org.test.plugins.capabilityplugin/plugin.xml b/spec/unit/fixtures/org.test.plugins.capabilityplugin/plugin.xml
new file mode 100644
index 0000000..a52d18c
--- /dev/null
+++ b/spec/unit/fixtures/org.test.plugins.capabilityplugin/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='utf-8'?>
+<plugin id="org.test.plugins.capabilityplugin" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
+    <name>org.test.plugins.capabilityplugin</name>
+    <js-module name="org.test.plugins.capabilityplugin" src="www/org.test.plugins.capabilityplugin.js">
+        <clobbers target="cordova.plugins.org.test.plugins.capabilityplugin" />
+    </js-module>
+    <config-file target="package.appxmanifest" parent="/Package/Capabilities" device-target="windows">
+        <Capability Name="enterpriseAuthentication" />
+        <Capability Name="privateNetworkClientServer" />
+        <Capability Name="sharedUserCertificates" />
+    </config-file>
+</plugin>

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5ae155fc/spec/unit/fixtures/org.test.plugins.capabilityplugin/www/org.test.plugins.capabilityplugin.js
----------------------------------------------------------------------
diff --git a/spec/unit/fixtures/org.test.plugins.capabilityplugin/www/org.test.plugins.capabilityplugin.js b/spec/unit/fixtures/org.test.plugins.capabilityplugin/www/org.test.plugins.capabilityplugin.js
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5ae155fc/template/cordova/Api.js
----------------------------------------------------------------------
diff --git a/template/cordova/Api.js b/template/cordova/Api.js
index 70e4797..50a0778 100644
--- a/template/cordova/Api.js
+++ b/template/cordova/Api.js
@@ -22,6 +22,9 @@ var events = require('cordova-common').events;
 var JsprojManager = require('./lib/JsprojManager');
 var PluginManager = require('cordova-common').PluginManager;
 var CordovaLogger = require('cordova-common').CordovaLogger;
+var PlatformMunger = require('./lib/ConfigChanges.js').PlatformMunger;
+var PlatformJson = require('cordova-common').PlatformJson;
+var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
 
 var PLATFORM = 'windows';
 
@@ -233,7 +236,12 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
 Api.prototype.removePlugin = function (plugin, uninstallOptions) {
     var self = this;
     var jsProject = JsprojManager.getProject(this.root);
-    return PluginManager.get(this.platform, this.locations, jsProject)
+    var platformJson = PlatformJson.load(this.root, this.platform);
+    var pluginManager = PluginManager.get(this.platform, this.locations, jsProject);
+    //  CB-11933 We override this field by windows specific one because windows has special logic
+    //  for appxmanifest's capabilities removal (see also https://issues.apache.org/jira/browse/CB-11066)
+    pluginManager.munger = new PlatformMunger(this.platform, this.locations.root, platformJson, new PluginInfoProvider());
+    return pluginManager
         .removePlugin(plugin, uninstallOptions)
         .then(function () {
             // CB-11657 Add BOM to cordova_plugins, since it is was


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


[08/21] cordova-windows git commit: CB-11658 activated event is not fired on Windows 10 RS1

Posted by da...@apache.org.
CB-11658 activated event is not fired on Windows 10 RS1

Patch start page to include base.js reference to HTML as a workaround


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

Branch: refs/heads/4.4.x
Commit: f3fb389628498505f9753820e142d26dfa2d53da
Parents: df242ce
Author: daserge <v-...@microsoft.com>
Authored: Thu Aug 4 13:32:29 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:54 2016 +0300

----------------------------------------------------------------------
 template/CordovaApp.Phone.jsproj      |  4 ++
 template/CordovaApp.Windows.jsproj    |  4 ++
 template/CordovaApp.Windows10.jsproj  |  4 ++
 template/cordova/prebuild-10.js       |  2 +
 template/cordova/prebuild-81.js       |  2 +
 template/cordova/prebuild-phone-81.js |  2 +
 template/cordova/prebuild.js          | 63 ++++++++++++++++++++++++++++++
 7 files changed, 81 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/CordovaApp.Phone.jsproj
----------------------------------------------------------------------
diff --git a/template/CordovaApp.Phone.jsproj b/template/CordovaApp.Phone.jsproj
index fb900e3..c3f740e 100644
--- a/template/CordovaApp.Phone.jsproj
+++ b/template/CordovaApp.Phone.jsproj
@@ -97,4 +97,8 @@
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
   -->
+  <PropertyGroup>
+    <PreBuildEvent>node "$(ProjectDir)\\cordova\\prebuild-phone-81.js"</PreBuildEvent>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
 </Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/CordovaApp.Windows.jsproj
----------------------------------------------------------------------
diff --git a/template/CordovaApp.Windows.jsproj b/template/CordovaApp.Windows.jsproj
index 7bb077d..c0387e6 100644
--- a/template/CordovaApp.Windows.jsproj
+++ b/template/CordovaApp.Windows.jsproj
@@ -97,4 +97,8 @@
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
   -->
+  <PropertyGroup>
+    <PreBuildEvent>node "$(ProjectDir)\\cordova\\prebuild-81.js"</PreBuildEvent>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
 </Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/CordovaApp.Windows10.jsproj
----------------------------------------------------------------------
diff --git a/template/CordovaApp.Windows10.jsproj b/template/CordovaApp.Windows10.jsproj
index 076444d..bd1f9df 100644
--- a/template/CordovaApp.Windows10.jsproj
+++ b/template/CordovaApp.Windows10.jsproj
@@ -105,4 +105,8 @@
   <Target AfterTargets="ResolveAssemblyReferences" BeforeTargets="AfterResolveReferences" Condition="'$(Platform)' == 'AnyCPU'" Name="DetectMangedWinMDWithAnyCpu">
     <Error Condition="'%(_ResolveAssemblyReferenceResolvedFiles.WinMDFile)' == 'true' AND '%(_ResolveAssemblyReferenceResolvedFiles.WinMDFileType)' == 'Managed'" Text="The following component requires .NET Native compilation which is not available when targeting 'Windows10' and 'AnyCPU'. Consider changing the targeted processor architecture to one of the following: 'x86, x64, ARM' (if you are using command line this could be done by adding '--archs' parameter, for example: 'cordova build windows --archs=x64'). %(_ResolveAssemblyReferenceResolvedFiles.Identity)" />
     </Target>
+  <PropertyGroup>
+    <PreBuildEvent>node "$(ProjectDir)\\cordova\\prebuild-10.js"</PreBuildEvent>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
 </Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/cordova/prebuild-10.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-10.js b/template/cordova/prebuild-10.js
new file mode 100644
index 0000000..6c081f3
--- /dev/null
+++ b/template/cordova/prebuild-10.js
@@ -0,0 +1,2 @@
+var patch = require('./prebuild');
+patch('10');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/cordova/prebuild-81.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-81.js b/template/cordova/prebuild-81.js
new file mode 100644
index 0000000..9d8103b
--- /dev/null
+++ b/template/cordova/prebuild-81.js
@@ -0,0 +1,2 @@
+var patch = require('./prebuild');
+patch('8.1');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/cordova/prebuild-phone-81.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-phone-81.js b/template/cordova/prebuild-phone-81.js
new file mode 100644
index 0000000..f9dcb17
--- /dev/null
+++ b/template/cordova/prebuild-phone-81.js
@@ -0,0 +1,2 @@
+var patch = require('./prebuild');
+patch('phone-8.1');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/f3fb3896/template/cordova/prebuild.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild.js b/template/cordova/prebuild.js
new file mode 100644
index 0000000..6dbafa0
--- /dev/null
+++ b/template/cordova/prebuild.js
@@ -0,0 +1,63 @@
+// https://issues.apache.org/jira/browse/CB-11658 activated event is not fired on Windows 10 RS1
+// Patching start page to include WinJS/base.js reference to HTML as a workaround
+
+module.exports = function patch(platform) {
+    console.log('Patching ' + platform + ' in prebuild event...');
+
+    var shell = require('shelljs');
+    var path = require('path');
+    var url = require('url');
+
+    var basejsSrcMap = {
+        '10': '/www/WinJS/js/base.js',
+        '8.1': '//Microsoft.WinJS.2.0/js/base.js',
+        'phone-8.1': '//Microsoft.Phone.WinJS.2.1/js/base.js'
+    };
+    var escapedBasejsSrcMap = {
+        '10': '\/www\/WinJS\/js\/base\.js',
+        '8.1': '\/\/Microsoft\.WinJS\.2\.0\/js\/base\.js',
+        'phone-8.1': '\/\/Microsoft\.Phone\.WinJS\.2\.1\/js\/base\.js'
+    };
+    var basejsSrc = basejsSrcMap[platform];
+
+    var appxmanifestMap = {
+        '10': 'package.windows10.appxmanifest',
+        '8.1': 'package.windows.appxmanifest',
+        'phone-8.1': 'package.phone.appxmanifest'
+    };
+
+    // 1. Find start page path in appxmanifest
+    var AppxManifest = require('./lib/AppxManifest');
+    var appxmanifest = AppxManifest.get(path.join(__dirname, '..', appxmanifestMap[platform]));
+    var startPage = url.parse(appxmanifest.getApplication().getStartPage());
+
+    if (startPage.protocol && startPage.protocol.indexOf('http') === 0) {
+        console.warn('Warning: Can\'t modify external content.src. You should update your server-side pages to reference WinJS directly in HTML.');
+        return;
+    }
+
+    // Discard scheme and identity name (host)
+    startPage = startPage.pathname;
+
+    // 2. Check if start page HTML contains base.js reference
+    var startPageFilePath = shell.ls(path.join(__dirname, '..', startPage))[0];
+    var reBaseJs = new RegExp(escapedBasejsSrcMap[platform], 'i');
+
+    if (shell.grep(reBaseJs, startPageFilePath).length === 0) {
+        // 3. If it doesn't - patch page to include base.js ref before cordova.js
+        var appendBaseJsRe = /( *)(<script\s+(?:type="text\/javascript"\s+)?src="cordova\.js">\s*<\/script>)/;
+        var subst = '$1<script type="text/javascript" src="' + basejsSrc + '"></script>\n$1$2';
+
+        shell.sed('-i', appendBaseJsRe, subst, startPageFilePath);
+        console.log('Injected base.js reference to the ' + startPage);
+
+        // 4. Remove all 'wrong' base.js references, which might left from another project type build:
+        for (var plat in basejsSrcMap) {
+            if (plat !== platform) {
+                var wrongBaseJsRe = new RegExp('( *)(<script\\s+(?:type="text\\/javascript"\\s+)?src="' + escapedBasejsSrcMap[plat] + '">\\s*<\\/script>)(\\s*)');
+                console.log('Removing ' + wrongBaseJsRe + ' from ' + startPage);
+                shell.sed('-i', wrongBaseJsRe, '$1', startPageFilePath);
+            }
+        }
+    }
+};


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


[04/21] cordova-windows git commit: CB-11558 Make windows plugin rm remove ProjectReference items

Posted by da...@apache.org.
CB-11558 Make windows plugin rm remove ProjectReference items

Also updated the tests to use relative paths to the ProjectReferences and dummy plugin


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

Branch: refs/heads/4.4.x
Commit: 96533bed6bf02d768d004137b9811a383a9bb366
Parents: 3db9249
Author: daserge <v-...@microsoft.com>
Authored: Tue Aug 2 11:54:36 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:53 2016 +0300

----------------------------------------------------------------------
 spec/unit/pluginHandler/windows.spec.js | 17 +++++++++++------
 template/cordova/lib/JsprojManager.js   |  6 +++---
 template/cordova/lib/PluginHandler.js   |  4 ++--
 3 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/96533bed/spec/unit/pluginHandler/windows.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/pluginHandler/windows.spec.js b/spec/unit/pluginHandler/windows.spec.js
index 38cad37..161f6f5 100644
--- a/spec/unit/pluginHandler/windows.spec.js
+++ b/spec/unit/pluginHandler/windows.spec.js
@@ -65,7 +65,8 @@ beforeEach(function () {
             };
 
             return xml.find(xpath) !== null;
-        }    });
+        }
+    });
 });
 
 var getPluginFilePath = PluginHandler.__get__('getPluginFilePath');
@@ -88,6 +89,10 @@ describe('windows project handler', function () {
         shell.cp('-rf', path.join(__dirname, '../fixtures/DummyProject/*'), cordovaProjectWindowsPlatformDir);
         dummyProject = JsprojManager.getProject(cordovaProjectWindowsPlatformDir);
         shell.mkdir('-p', cordovaProjectPluginsDir);
+        shell.cp('-rf', dummyplugin, cordovaProjectPluginsDir);
+        // CB-11558 Reinitialize plugin.dir to become project_root/plugins/plugin.id to avoid 
+        // different drives issue resulting in absolute path in projectReferences.
+        dummyPluginInfo = new PluginInfo(path.join(cordovaProjectPluginsDir, dummyPluginInfo.id));
     });
 
     afterEach(function () {
@@ -182,7 +187,7 @@ describe('windows project handler', function () {
             it('should copy stuff from one location to another by calling common.copyFile', function () {
                 var source = copyArray(valid_source);
                 install(source[0], dummyPluginInfo, dummyProject);
-                expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin, 'src/windows/dummer.js', cordovaProjectWindowsPlatformDir, path.join('plugins', 'org.test.plugins.dummyplugin', 'dummer.js'), false);
+                expect(copyFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, 'src/windows/dummer.js', cordovaProjectWindowsPlatformDir, path.join('plugins', 'org.test.plugins.dummyplugin', 'dummer.js'), false);
             });
             it('should throw if source-file src cannot be found', function () {
                 var source = copyArray(invalid_source);
@@ -556,19 +561,19 @@ describe('windows project handler', function () {
                 });
 
                 var xmlPath = 'ItemGroup/ProjectReference';
-                var incText = winJoin(dummyPluginInfo.dir, frameworks[6].src);
+                var incText = winJoin('..', '..', 'plugins', dummyPluginInfo.id, frameworks[6].src);
                 var targetConditions = {versions: undefined, deviceTarget: undefined, arch: 'x64'};
                 validateUninstalledProjects('framework', frameworks[6], xmlPath, incText, targetConditions, ['all']);
 
-                incText = winJoin(dummyPluginInfo.dir, frameworks[7].src);
+                incText = winJoin('..', '..', 'plugins', dummyPluginInfo.id, frameworks[7].src);
                 targetConditions = {versions: '<8.1', deviceTarget: undefined, arch: undefined};
                 validateUninstalledProjects('framework', frameworks[7], xmlPath, incText, targetConditions, ['windows8']);
 
-                incText = winJoin(dummyPluginInfo.dir, frameworks[8].src);
+                incText = winJoin('..', '..', 'plugins', dummyPluginInfo.id, frameworks[8].src);
                 targetConditions = {versions: undefined, deviceTarget: 'win', arch: undefined};
                 validateUninstalledProjects('framework', frameworks[8], xmlPath, incText, targetConditions, ['windows', 'windows8', 'windows10']);
 
-                incText = winJoin(dummyPluginInfo.dir, frameworks[9].src);
+                incText = winJoin('..', '..', 'plugins', dummyPluginInfo.id, frameworks[9].src);
                 targetConditions = {versions: '8.1', deviceTarget: 'all', arch: 'x86'};
                 validateUninstalledProjects('framework', frameworks[9], xmlPath, incText, targetConditions, ['windows', 'phone']);
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/96533bed/template/cordova/lib/JsprojManager.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/JsprojManager.js b/template/cordova/lib/JsprojManager.js
index b9d1d31..21ee808 100644
--- a/template/cordova/lib/JsprojManager.js
+++ b/template/cordova/lib/JsprojManager.js
@@ -182,9 +182,9 @@ jsprojManager.prototype = {
         // relative_path is the actual path to the file in the current OS, where-as inserted_path is what we write in
         // the project file, and is always in Windows format.
         relative_path = path.normalize(relative_path);
-        var inserted_path = path.join('..', '..', relative_path).split('/').join('\\');
+        var inserted_path = relative_path.split('/').join('\\');
 
-        var pluginProjectXML = xml_helpers.parseElementtreeSync(relative_path);
+        var pluginProjectXML = xml_helpers.parseElementtreeSync(path.resolve(this.projectFolder, relative_path));
 
         // find the guid + name of the referenced project
         var projectGuid = pluginProjectXML.find("PropertyGroup/ProjectGuid").text;
@@ -265,7 +265,7 @@ jsprojManager.prototype = {
         var inserted_path = relative_path.split('/').join('\\');
 
         // find the guid + name of the referenced project
-        var pluginProjectXML = xml_helpers.parseElementtreeSync(relative_path);
+        var pluginProjectXML = xml_helpers.parseElementtreeSync(path.resolve(this.projectFolder, relative_path));
         var projectGuid = pluginProjectXML.find("PropertyGroup/ProjectGuid").text;
         var projName = getProjectName(pluginProjectXML, relative_path);
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/96533bed/template/cordova/lib/PluginHandler.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/PluginHandler.js b/template/cordova/lib/PluginHandler.js
index 4856911..e2511f6 100644
--- a/template/cordova/lib/PluginHandler.js
+++ b/template/cordova/lib/PluginHandler.js
@@ -88,7 +88,7 @@ var handlers = {
             var targetDir = obj.targetDir || '';
 
             if(type === 'projectReference') {
-                dest = path.join('plugins', plugin.id, targetDir, src);
+                dest = path.join(path.relative(project.projectFolder, plugin.dir), targetDir, src);
                 project.addProjectReference(dest, getTargetConditions(obj));
             } else {
                 // path.join ignores empty paths passed so we don't check whether targetDir is not empty
@@ -105,7 +105,7 @@ var handlers = {
             var type = obj.type;
 
             if(type === 'projectReference') {
-                project.removeProjectReference(path.join(plugin.dir, src), getTargetConditions(obj));
+                project.removeProjectReference(path.join(path.relative(project.projectFolder, plugin.dir), src), getTargetConditions(obj));
             }
             else {
                 var targetPath = path.join('plugins', plugin.id);


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


[07/21] cordova-windows git commit: CB-10738 Use hardcoded Id attribute in Win10 manifest

Posted by da...@apache.org.
CB-10738 Use hardcoded Id attribute in Win10 manifest

 This closes #194


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

Branch: refs/heads/4.4.x
Commit: fbc412e46ba03721a1d240b73d95948fd1c26d17
Parents: c1d331e
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Tue Aug 30 17:34:51 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:54 2016 +0300

----------------------------------------------------------------------
 template/package.windows10.appxmanifest | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/fbc412e4/template/package.windows10.appxmanifest
----------------------------------------------------------------------
diff --git a/template/package.windows10.appxmanifest b/template/package.windows10.appxmanifest
index e59e019..9df82fa 100644
--- a/template/package.windows10.appxmanifest
+++ b/template/package.windows10.appxmanifest
@@ -46,7 +46,7 @@
 
   <Applications>
     <Application
-      Id="$safeprojectname$"
+      Id="App"
       StartPage="www/index.html">
 
       <uap:VisualElements
@@ -57,9 +57,9 @@
         Square44x44Logo="images\Square44x44Logo.png">
 
         <uap:SplashScreen Image="images\splashscreen.png" />
-        <uap:DefaultTile ShortName="$projectname$" 
+        <uap:DefaultTile ShortName="$projectname$"
                          Square310x310Logo="images\Square310x310Logo.png"
-                         Square71x71Logo="images\Square71x71Logo.png" 
+                         Square71x71Logo="images\Square71x71Logo.png"
                          Wide310x150Logo="images\Wide310x150Logo.png" />
 
       </uap:VisualElements>


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


[20/21] cordova-windows git commit: CB-12031 Updated RELEASENOTES and Version for release 4.4.3

Posted by da...@apache.org.
CB-12031 Updated RELEASENOTES and Version for release 4.4.3


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

Branch: refs/heads/4.4.x
Commit: 224a85cab240c524b079131819db8e39e87b9a8e
Parents: c9a9f96
Author: daserge <v-...@microsoft.com>
Authored: Thu Oct 20 21:18:15 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 21:18:15 2016 +0300

----------------------------------------------------------------------
 RELEASENOTES.md          | 21 +++++++++++++++++++++
 VERSION                  |  2 +-
 package.json             |  2 +-
 template/cordova/version |  2 +-
 4 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/224a85ca/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 7f39cdd..352ddb2 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -24,6 +24,27 @@ Update these notes using: git log --pretty=format:'* %s' --topo-order --no-merge
 
 cordova-windows is a library that enables developers to create Windows 8/8.1/10 and WP8.1 application projects that support Cordova APIs.
 
+### 4.4.3 (Oct 19, 2016)
+* [CB-12044](https://issues.apache.org/jira/browse/CB-12044) Fix splashscreen image path for ms-appx on Windows
+* [CB-12042](https://issues.apache.org/jira/browse/CB-12042) Copy base.js to www directory at create
+* [CB-11933](https://issues.apache.org/jira/browse/CB-11933) Add uap prefixes for capabilities at plugin install
+* [CB-12003](https://issues.apache.org/jira/browse/CB-12003) updated node_modules
+* [CB-11933](https://issues.apache.org/jira/browse/CB-11933) Remove capabilities from manifest
+* [CB-11993](https://issues.apache.org/jira/browse/CB-11993) - windows platform doesn't test all node versions on appveyor and travis
+* [CB-11825](https://issues.apache.org/jira/browse/CB-11825) Windows dll file won't be copied as resource while adding custom plugin to a UWP project
+* output message, catch exception if require fails, change eventEmitter to events to be consistent with ios+android
+* [CB-11922](https://issues.apache.org/jira/browse/CB-11922) - Add github pull request template
+* [CB-11522](https://issues.apache.org/jira/browse/CB-11522) [windows] Make cordova-js handle 'unknown' type
+* [CB-11857](https://issues.apache.org/jira/browse/CB-11857) Fixed VS 2015 detection on Windows 10 Anniversary
+* [CB-10738](https://issues.apache.org/jira/browse/CB-10738) Use hardcoded Id attribute in Win10 manifest
+* Add missing license headers to prebuild scripts
+* Update bundled cordova-common dependency to 1.4.1
+* [CB-11658](https://issues.apache.org/jira/browse/CB-11658) activated event is not fired on Windows 10 RS1
+* [CB-11657](https://issues.apache.org/jira/browse/CB-11657) Add bom to www after plugin operations
+* [CB-11478](https://issues.apache.org/jira/browse/CB-11478) Parse --archs option consistently
+* [CB-11558](https://issues.apache.org/jira/browse/CB-11558) Make windows plugin rm remove ProjectReference items
+* [CB-11579](https://issues.apache.org/jira/browse/CB-11579) windows: fix bug with 'cordova clean windows'
+
 ### 4.4.2 (Jul 25, 2016)
 * [CB-11548](https://issues.apache.org/jira/browse/CB-11548) Fix issues where MSBuild cannot be found
 * [CB-11241](https://issues.apache.org/jira/browse/CB-11241) Return adding BOM to www back to prepare

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/224a85ca/VERSION
----------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index 1d068c6..9e3a933 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.4.2
+4.4.3

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/224a85ca/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index fe2a3db..d083611 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cordova-windows",
-  "version": "4.4.2",
+  "version": "4.4.3",
   "description": "cordova-windows release",
   "bin": "bin/create",
   "main": "template/cordova/Api.js",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/224a85ca/template/cordova/version
----------------------------------------------------------------------
diff --git a/template/cordova/version b/template/cordova/version
index 987b536..25f4606 100644
--- a/template/cordova/version
+++ b/template/cordova/version
@@ -20,7 +20,7 @@
 */
 
 // Coho updates this line:
-var VERSION = "4.4.2";
+var VERSION = "4.4.3";
 
 module.exports.version = VERSION;
 


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


[10/21] cordova-windows git commit: CB-11857 Fixed VS 2015 detection on Windows 10 Anniversary

Posted by da...@apache.org.
CB-11857 Fixed VS 2015 detection on Windows 10 Anniversary


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

Branch: refs/heads/4.4.x
Commit: 50bbc3e8a68616750e47a78f114eaeae67fafc0a
Parents: fbc412e
Author: Alexander Sorokin <al...@akvelon.com>
Authored: Thu Sep 15 15:07:43 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:55 2016 +0300

----------------------------------------------------------------------
 bin/lib/check_reqs.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/50bbc3e8/bin/lib/check_reqs.js
----------------------------------------------------------------------
diff --git a/bin/lib/check_reqs.js b/bin/lib/check_reqs.js
index 9e31fda..dd41b81 100644
--- a/bin/lib/check_reqs.js
+++ b/bin/lib/check_reqs.js
@@ -150,7 +150,7 @@ function getInstalledVSVersions() {
         .fail(function () {
             // if we got any errors on previous steps, we're assuming that
             // required VS update is not installed.
-            installedVersions.splice(installedVersions.indexOf('12.0'));
+            installedVersions.splice(installedVersions.indexOf('12.0'), 1);
             return installedVersions;
         });
     });
@@ -346,7 +346,7 @@ module.exports.run = function () {
 
 /** Checks if Windows SDK required to build the target_platform is present
  * @param {String}  target_platorm        Target platform ('8.1' or '10.0')
- */ 
+ */
 module.exports.isWinSDKPresent = function (target_platform) {
     return checkWinSdk(target_platform, '8.1');
 };
@@ -421,9 +421,9 @@ module.exports.check_all = function() {
                     if (requirement.isFatal) fatalIsHit = true;
                     requirement.metadata.reason = err;
                     result.push(requirement);
-                });  
+                });
             });
-            
+
         });
     }, Q())
     .then(function () {


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


[15/21] cordova-windows git commit: CB-12003 updated node_modules

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/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 efc11ba..2ea8019 100644
--- a/node_modules/cordova-registry-mapper/package.json
+++ b/node_modules/cordova-registry-mapper/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.1.8 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz",
+  "_resolved": "http://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz",
   "_shasum": "e244b9185b8175473bff6079324905115f83dc7c",
   "_shrinkwrap": null,
   "_spec": "cordova-registry-mapper@^1.1.8",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Steve Gill"
   },

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/elementtree/Makefile
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/Makefile b/node_modules/elementtree/Makefile
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/elementtree/package.json
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/package.json b/node_modules/elementtree/package.json
index 460b831..f164ea7 100644
--- a/node_modules/elementtree/package.json
+++ b/node_modules/elementtree/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.1.6 <0.2.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "elementtree@>=0.1.6 <0.2.0",
@@ -37,11 +37,11 @@
     "/",
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
+  "_resolved": "http://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
   "_shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
   "_shrinkwrap": null,
   "_spec": "elementtree@^0.1.6",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Rackspace US, Inc."
   },

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/glob/package.json
----------------------------------------------------------------------
diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json
index 4b56ba5..93cd1d5 100644
--- a/node_modules/glob/package.json
+++ b/node_modules/glob/package.json
@@ -10,7 +10,7 @@
         "spec": ">=5.0.13 <6.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "glob@>=5.0.13 <6.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+  "_resolved": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
   "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
   "_shrinkwrap": null,
   "_spec": "glob@^5.0.13",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/inflight/inflight.js
----------------------------------------------------------------------
diff --git a/node_modules/inflight/inflight.js b/node_modules/inflight/inflight.js
index 8bc96cb..48202b3 100644
--- a/node_modules/inflight/inflight.js
+++ b/node_modules/inflight/inflight.js
@@ -19,18 +19,28 @@ function makeres (key) {
     var cbs = reqs[key]
     var len = cbs.length
     var args = slice(arguments)
-    for (var i = 0; i < len; i++) {
-      cbs[i].apply(null, args)
-    }
-    if (cbs.length > len) {
-      // added more in the interim.
-      // de-zalgo, just in case, but don't call again.
-      cbs.splice(0, len)
-      process.nextTick(function () {
-        RES.apply(null, args)
-      })
-    } else {
-      delete reqs[key]
+
+    // XXX It's somewhat ambiguous whether a new callback added in this
+    // pass should be queued for later execution if something in the
+    // list of callbacks throws, or if it should just be discarded.
+    // However, it's such an edge case that it hardly matters, and either
+    // choice is likely as surprising as the other.
+    // As it happens, we do go ahead and schedule it for later execution.
+    try {
+      for (var i = 0; i < len; i++) {
+        cbs[i].apply(null, args)
+      }
+    } finally {
+      if (cbs.length > len) {
+        // added more in the interim.
+        // de-zalgo, just in case, but don't call again.
+        cbs.splice(0, len)
+        process.nextTick(function () {
+          RES.apply(null, args)
+        })
+      } else {
+        delete reqs[key]
+      }
     }
   })
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/inflight/package.json
----------------------------------------------------------------------
diff --git a/node_modules/inflight/package.json b/node_modules/inflight/package.json
index 6c53c7b..dca8290 100644
--- a/node_modules/inflight/package.json
+++ b/node_modules/inflight/package.json
@@ -10,24 +10,24 @@
         "spec": ">=1.0.4 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\glob"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob"
     ]
   ],
   "_from": "inflight@>=1.0.4 <2.0.0",
-  "_id": "inflight@1.0.5",
+  "_id": "inflight@1.0.6",
   "_inCache": true,
   "_installable": true,
   "_location": "/inflight",
-  "_nodeVersion": "5.10.1",
+  "_nodeVersion": "6.5.0",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/inflight-1.0.5.tgz_1463529611443_0.00041943578980863094"
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/inflight-1.0.6.tgz_1476330807696_0.10388551792129874"
   },
   "_npmUser": {
-    "name": "zkat",
-    "email": "kat@sykosomatic.org"
+    "name": "isaacs",
+    "email": "i@izs.me"
   },
-  "_npmVersion": "3.9.1",
+  "_npmVersion": "3.10.7",
   "_phantomChildren": {},
   "_requested": {
     "raw": "inflight@^1.0.4",
@@ -41,11 +41,11 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz",
-  "_shasum": "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a",
+  "_resolved": "http://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+  "_shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
   "_shrinkwrap": null,
   "_spec": "inflight@^1.0.4",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\glob",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -60,17 +60,17 @@
   },
   "description": "Add callbacks to requests in flight to avoid async duplication",
   "devDependencies": {
-    "tap": "^1.2.0"
+    "tap": "^7.1.2"
   },
   "directories": {},
   "dist": {
-    "shasum": "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a",
-    "tarball": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz"
+    "shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
+    "tarball": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
   },
   "files": [
     "inflight.js"
   ],
-  "gitHead": "559e37b4f6327fca797fe8d7fe8ed6d9cae08821",
+  "gitHead": "a547881738c8f57b27795e584071d67cf6ac1a57",
   "homepage": "https://github.com/isaacs/inflight",
   "license": "ISC",
   "main": "inflight.js",
@@ -100,7 +100,7 @@
     "url": "git+https://github.com/npm/inflight.git"
   },
   "scripts": {
-    "test": "tap test.js"
+    "test": "tap test.js --100"
   },
-  "version": "1.0.5"
+  "version": "1.0.6"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/inherits/inherits.js
----------------------------------------------------------------------
diff --git a/node_modules/inherits/inherits.js b/node_modules/inherits/inherits.js
index 29f5e24..3b94763 100644
--- a/node_modules/inherits/inherits.js
+++ b/node_modules/inherits/inherits.js
@@ -1 +1,7 @@
-module.exports = require('util').inherits
+try {
+  var util = require('util');
+  if (typeof util.inherits !== 'function') throw '';
+  module.exports = util.inherits;
+} catch (e) {
+  module.exports = require('./inherits_browser.js');
+}

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/inherits/package.json
----------------------------------------------------------------------
diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json
index d06c97d..7a2207e 100644
--- a/node_modules/inherits/package.json
+++ b/node_modules/inherits/package.json
@@ -10,19 +10,24 @@
         "spec": ">=2.0.0 <3.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\glob"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob"
     ]
   ],
   "_from": "inherits@>=2.0.0 <3.0.0",
-  "_id": "inherits@2.0.1",
+  "_id": "inherits@2.0.3",
   "_inCache": true,
   "_installable": true,
   "_location": "/inherits",
+  "_nodeVersion": "6.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/inherits-2.0.3.tgz_1473295776489_0.08142363070510328"
+  },
   "_npmUser": {
     "name": "isaacs",
     "email": "i@izs.me"
   },
-  "_npmVersion": "1.3.8",
+  "_npmVersion": "3.10.7",
   "_phantomChildren": {},
   "_requested": {
     "raw": "inherits@2",
@@ -36,23 +41,30 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-  "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
+  "_resolved": "http://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+  "_shasum": "633c2c83e3da42a502f52466022480f4208261de",
   "_shrinkwrap": null,
   "_spec": "inherits@2",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\glob",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob",
   "browser": "./inherits_browser.js",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
   },
   "dependencies": {},
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
-  "devDependencies": {},
+  "devDependencies": {
+    "tap": "^7.1.0"
+  },
   "directories": {},
   "dist": {
-    "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
-    "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+    "shasum": "633c2c83e3da42a502f52466022480f4208261de",
+    "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
   },
+  "files": [
+    "inherits.js",
+    "inherits_browser.js"
+  ],
+  "gitHead": "e05d0fb27c61a3ec687214f0476386b765364d5f",
   "homepage": "https://github.com/isaacs/inherits#readme",
   "keywords": [
     "inheritance",
@@ -82,5 +94,5 @@
   "scripts": {
     "test": "node test"
   },
-  "version": "2.0.1"
+  "version": "2.0.3"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/inherits/test.js
----------------------------------------------------------------------
diff --git a/node_modules/inherits/test.js b/node_modules/inherits/test.js
deleted file mode 100644
index fc53012..0000000
--- a/node_modules/inherits/test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var inherits = require('./inherits.js')
-var assert = require('assert')
-
-function test(c) {
-  assert(c.constructor === Child)
-  assert(c.constructor.super_ === Parent)
-  assert(Object.getPrototypeOf(c) === Child.prototype)
-  assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
-  assert(c instanceof Child)
-  assert(c instanceof Parent)
-}
-
-function Child() {
-  Parent.call(this)
-  test(this)
-}
-
-function Parent() {}
-
-inherits(Child, Parent)
-
-var c = new Child
-test(c)
-
-console.log('ok')

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/lodash/package.json
----------------------------------------------------------------------
diff --git a/node_modules/lodash/package.json b/node_modules/lodash/package.json
index 0355ec0..41ac5fe 100644
--- a/node_modules/lodash/package.json
+++ b/node_modules/lodash/package.json
@@ -10,7 +10,7 @@
         "spec": ">=3.5.0 <4.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\xmlbuilder"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/xmlbuilder"
     ]
   ],
   "_from": "lodash@>=3.5.0 <4.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/xmlbuilder"
   ],
-  "_resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+  "_resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
   "_shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6",
   "_shrinkwrap": null,
   "_spec": "lodash@^3.5.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\xmlbuilder",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/xmlbuilder",
   "author": {
     "name": "John-David Dalton",
     "email": "john.david.dalton@gmail.com",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/minimatch/package.json
----------------------------------------------------------------------
diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json
index cce7587..955d339 100644
--- a/node_modules/minimatch/package.json
+++ b/node_modules/minimatch/package.json
@@ -10,7 +10,7 @@
         "spec": ">=3.0.0 <4.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "minimatch@>=3.0.0 <4.0.0",
@@ -42,11 +42,11 @@
     "/cordova-common",
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
+  "_resolved": "http://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
   "_shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
   "_shrinkwrap": null,
   "_spec": "minimatch@^3.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/node-uuid/benchmark/bench.sh
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/benchmark/bench.sh b/node_modules/node-uuid/benchmark/bench.sh
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/node-uuid/bin/uuid
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/bin/uuid b/node_modules/node-uuid/bin/uuid
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/node-uuid/package.json
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/package.json b/node_modules/node-uuid/package.json
index 9e7ed4a..0c9a225 100644
--- a/node_modules/node-uuid/package.json
+++ b/node_modules/node-uuid/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.4.3 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "node-uuid@>=1.4.3 <2.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
+  "_resolved": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
   "_shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f",
   "_shrinkwrap": null,
   "_spec": "node-uuid@^1.4.3",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Robert Kieffer",
     "email": "robert@broofa.com"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/nopt/bin/nopt.js
----------------------------------------------------------------------
diff --git a/node_modules/nopt/bin/nopt.js b/node_modules/nopt/bin/nopt.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/nopt/examples/my-program.js
----------------------------------------------------------------------
diff --git a/node_modules/nopt/examples/my-program.js b/node_modules/nopt/examples/my-program.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/nopt/package.json
----------------------------------------------------------------------
diff --git a/node_modules/nopt/package.json b/node_modules/nopt/package.json
index 1745670..c928910 100644
--- a/node_modules/nopt/package.json
+++ b/node_modules/nopt/package.json
@@ -10,7 +10,7 @@
         "spec": ">=3.0.4 <4.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "nopt@>=3.0.4 <4.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+  "_resolved": "http://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
   "_shasum": "c6465dbf08abcd4db359317f79ac68a646b28ff9",
   "_shrinkwrap": null,
   "_spec": "nopt@^3.0.4",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/once/README.md
----------------------------------------------------------------------
diff --git a/node_modules/once/README.md b/node_modules/once/README.md
index a2981ea..1f1ffca 100644
--- a/node_modules/once/README.md
+++ b/node_modules/once/README.md
@@ -49,3 +49,31 @@ function load (cb) {
   })
 }
 ```
+
+## `once.strict(func)`
+
+Throw an error if the function is called twice.
+
+Some functions are expected to be called only once. Using `once` for them would
+potentially hide logical errors.
+
+In the example below, the `greet` function has to call the callback only once:
+
+```javascript
+function greet (name, cb) {
+  // return is missing from the if statement
+  // when no name is passed, the callback is called twice
+  if (!name) cb('Hello anonymous')
+  cb('Hello ' + name)
+}
+
+function log (msg) {
+  console.log(msg)
+}
+
+// this will print 'Hello anonymous' but the logical error will be missed
+greet(null, once(msg))
+
+// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
+greet(null, once.strict(msg))
+```

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/once/once.js
----------------------------------------------------------------------
diff --git a/node_modules/once/once.js b/node_modules/once/once.js
index 2e1e721..2354067 100644
--- a/node_modules/once/once.js
+++ b/node_modules/once/once.js
@@ -1,5 +1,6 @@
 var wrappy = require('wrappy')
 module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
 
 once.proto = once(function () {
   Object.defineProperty(Function.prototype, 'once', {
@@ -8,6 +9,13 @@ once.proto = once(function () {
     },
     configurable: true
   })
+
+  Object.defineProperty(Function.prototype, 'onceStrict', {
+    value: function () {
+      return onceStrict(this)
+    },
+    configurable: true
+  })
 })
 
 function once (fn) {
@@ -19,3 +27,16 @@ function once (fn) {
   f.called = false
   return f
 }
+
+function onceStrict (fn) {
+  var f = function () {
+    if (f.called)
+      throw new Error(f.onceError)
+    f.called = true
+    return f.value = fn.apply(this, arguments)
+  }
+  var name = fn.name || 'Function wrapped with `once`'
+  f.onceError = name + " shouldn't be called more than once"
+  f.called = false
+  return f
+}

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/once/package.json
----------------------------------------------------------------------
diff --git a/node_modules/once/package.json b/node_modules/once/package.json
index 3c1182b..9288ba0 100644
--- a/node_modules/once/package.json
+++ b/node_modules/once/package.json
@@ -10,20 +10,24 @@
         "spec": ">=1.3.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\glob"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob"
     ]
   ],
   "_from": "once@>=1.3.0 <2.0.0",
-  "_id": "once@1.3.3",
+  "_id": "once@1.4.0",
   "_inCache": true,
   "_installable": true,
   "_location": "/once",
-  "_nodeVersion": "4.0.0",
+  "_nodeVersion": "6.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/once-1.4.0.tgz_1473196269128_0.537820661207661"
+  },
   "_npmUser": {
     "name": "isaacs",
     "email": "i@izs.me"
   },
-  "_npmVersion": "3.3.2",
+  "_npmVersion": "3.10.7",
   "_phantomChildren": {},
   "_requested": {
     "raw": "once@^1.3.0",
@@ -38,11 +42,11 @@
     "/glob",
     "/inflight"
   ],
-  "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
-  "_shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20",
+  "_resolved": "http://registry.npmjs.org/once/-/once-1.4.0.tgz",
+  "_shasum": "583b1aa775961d4b113ac17d9c50baef9dd76bd1",
   "_shrinkwrap": null,
   "_spec": "once@^1.3.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\glob",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -56,19 +60,19 @@
   },
   "description": "Run a function exactly one time",
   "devDependencies": {
-    "tap": "^1.2.0"
+    "tap": "^7.0.1"
   },
   "directories": {
     "test": "test"
   },
   "dist": {
-    "shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20",
-    "tarball": "https://registry.npmjs.org/once/-/once-1.3.3.tgz"
+    "shasum": "583b1aa775961d4b113ac17d9c50baef9dd76bd1",
+    "tarball": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
   },
   "files": [
     "once.js"
   ],
-  "gitHead": "2ad558657e17fafd24803217ba854762842e4178",
+  "gitHead": "0e614d9f5a7e6f0305c625f6b581f6d80b33b8a6",
   "homepage": "https://github.com/isaacs/once#readme",
   "keywords": [
     "once",
@@ -94,5 +98,5 @@
   "scripts": {
     "test": "tap test/*.js"
   },
-  "version": "1.3.3"
+  "version": "1.4.0"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/os-homedir/package.json
----------------------------------------------------------------------
diff --git a/node_modules/os-homedir/package.json b/node_modules/os-homedir/package.json
index acd5e15..694f147 100644
--- a/node_modules/os-homedir/package.json
+++ b/node_modules/os-homedir/package.json
@@ -10,20 +10,24 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\osenv"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/osenv"
     ]
   ],
   "_from": "os-homedir@>=1.0.0 <2.0.0",
-  "_id": "os-homedir@1.0.1",
+  "_id": "os-homedir@1.0.2",
   "_inCache": true,
   "_installable": true,
   "_location": "/os-homedir",
-  "_nodeVersion": "0.12.5",
+  "_nodeVersion": "6.6.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/os-homedir-1.0.2.tgz_1475211519628_0.7873868853785098"
+  },
   "_npmUser": {
     "name": "sindresorhus",
     "email": "sindresorhus@gmail.com"
   },
-  "_npmVersion": "2.11.2",
+  "_npmVersion": "3.10.3",
   "_phantomChildren": {},
   "_requested": {
     "raw": "os-homedir@^1.0.0",
@@ -37,11 +41,11 @@
   "_requiredBy": [
     "/osenv"
   ],
-  "_resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz",
-  "_shasum": "0d62bdf44b916fd3bbdcf2cab191948fb094f007",
+  "_resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+  "_shasum": "ffbc4988336e0e833de0c168c7ef152121aa7fb3",
   "_shrinkwrap": null,
   "_spec": "os-homedir@^1.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\osenv",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/osenv",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
@@ -51,15 +55,16 @@
     "url": "https://github.com/sindresorhus/os-homedir/issues"
   },
   "dependencies": {},
-  "description": "io.js 2.3.0 os.homedir() ponyfill",
+  "description": "Node.js 4 `os.homedir()` ponyfill",
   "devDependencies": {
-    "ava": "0.0.4",
-    "path-exists": "^1.0.0"
+    "ava": "*",
+    "path-exists": "^2.0.0",
+    "xo": "^0.16.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "0d62bdf44b916fd3bbdcf2cab191948fb094f007",
-    "tarball": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz"
+    "shasum": "ffbc4988336e0e833de0c168c7ef152121aa7fb3",
+    "tarball": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -67,10 +72,10 @@
   "files": [
     "index.js"
   ],
-  "gitHead": "13ff83fbd13ebe286a6092286b2c634ab4534c5f",
-  "homepage": "https://github.com/sindresorhus/os-homedir",
+  "gitHead": "b1b0ae70a5965fef7005ff6509a5dd1a78c95e36",
+  "homepage": "https://github.com/sindresorhus/os-homedir#readme",
   "keywords": [
-    "built-in",
+    "builtin",
     "core",
     "ponyfill",
     "polyfill",
@@ -99,7 +104,7 @@
     "url": "git+https://github.com/sindresorhus/os-homedir.git"
   },
   "scripts": {
-    "test": "node test.js"
+    "test": "xo && ava"
   },
-  "version": "1.0.1"
+  "version": "1.0.2"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/os-homedir/readme.md
----------------------------------------------------------------------
diff --git a/node_modules/os-homedir/readme.md b/node_modules/os-homedir/readme.md
index 4851f10..856ae61 100644
--- a/node_modules/os-homedir/readme.md
+++ b/node_modules/os-homedir/readme.md
@@ -1,8 +1,6 @@
 # os-homedir [![Build Status](https://travis-ci.org/sindresorhus/os-homedir.svg?branch=master)](https://travis-ci.org/sindresorhus/os-homedir)
 
-> io.js 2.3.0 [`os.homedir()`](https://iojs.org/api/os.html#os_os_homedir) ponyfill
-
-> Ponyfill: A polyfill that doesn't overwrite the native method
+> Node.js 4 [`os.homedir()`](https://nodejs.org/api/os.html#os_os_homedir) [ponyfill](https://ponyfill.com)
 
 
 ## Install
@@ -15,10 +13,10 @@ $ npm install --save os-homedir
 ## Usage
 
 ```js
-var osHomedir = require('os-homedir');
+const osHomedir = require('os-homedir');
 
 console.log(osHomedir());
-//=> /Users/sindresorhus
+//=> '/Users/sindresorhus'
 ```
 
 
@@ -30,4 +28,4 @@ console.log(osHomedir());
 
 ## License
 
-MIT � [Sindre Sorhus](http://sindresorhus.com)
+MIT � [Sindre Sorhus](https://sindresorhus.com)

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/os-tmpdir/index.js
----------------------------------------------------------------------
diff --git a/node_modules/os-tmpdir/index.js b/node_modules/os-tmpdir/index.js
index 52d90bf..2077b1c 100644
--- a/node_modules/os-tmpdir/index.js
+++ b/node_modules/os-tmpdir/index.js
@@ -2,7 +2,7 @@
 var isWindows = process.platform === 'win32';
 var trailingSlashRe = isWindows ? /[^:]\\$/ : /.\/$/;
 
-// https://github.com/nodejs/io.js/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43
+// https://github.com/nodejs/node/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43
 module.exports = function () {
 	var path;
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/os-tmpdir/package.json
----------------------------------------------------------------------
diff --git a/node_modules/os-tmpdir/package.json b/node_modules/os-tmpdir/package.json
index ea43382..9e3c851 100644
--- a/node_modules/os-tmpdir/package.json
+++ b/node_modules/os-tmpdir/package.json
@@ -10,20 +10,24 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\osenv"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/osenv"
     ]
   ],
   "_from": "os-tmpdir@>=1.0.0 <2.0.0",
-  "_id": "os-tmpdir@1.0.1",
+  "_id": "os-tmpdir@1.0.2",
   "_inCache": true,
   "_installable": true,
   "_location": "/os-tmpdir",
-  "_nodeVersion": "0.12.3",
+  "_nodeVersion": "6.6.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/os-tmpdir-1.0.2.tgz_1475211274587_0.14931037812493742"
+  },
   "_npmUser": {
     "name": "sindresorhus",
     "email": "sindresorhus@gmail.com"
   },
-  "_npmVersion": "2.9.1",
+  "_npmVersion": "3.10.3",
   "_phantomChildren": {},
   "_requested": {
     "raw": "os-tmpdir@^1.0.0",
@@ -37,11 +41,11 @@
   "_requiredBy": [
     "/osenv"
   ],
-  "_resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz",
-  "_shasum": "e9b423a1edaf479882562e92ed71d7743a071b6e",
+  "_resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+  "_shasum": "bbe67406c79aa85c5cfec766fe5734555dfa1274",
   "_shrinkwrap": null,
   "_spec": "os-tmpdir@^1.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\osenv",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/osenv",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
@@ -53,12 +57,13 @@
   "dependencies": {},
   "description": "Node.js os.tmpdir() ponyfill",
   "devDependencies": {
-    "ava": "0.0.4"
+    "ava": "*",
+    "xo": "^0.16.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "e9b423a1edaf479882562e92ed71d7743a071b6e",
-    "tarball": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz"
+    "shasum": "bbe67406c79aa85c5cfec766fe5734555dfa1274",
+    "tarball": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -66,8 +71,8 @@
   "files": [
     "index.js"
   ],
-  "gitHead": "5c5d355f81378980db629d60128ad03e02b1c1e5",
-  "homepage": "https://github.com/sindresorhus/os-tmpdir",
+  "gitHead": "1abf9cf5611b4be7377060ea67054b45cbf6813c",
+  "homepage": "https://github.com/sindresorhus/os-tmpdir#readme",
   "keywords": [
     "built-in",
     "core",
@@ -99,7 +104,7 @@
     "url": "git+https://github.com/sindresorhus/os-tmpdir.git"
   },
   "scripts": {
-    "test": "node test.js"
+    "test": "xo && ava"
   },
-  "version": "1.0.1"
+  "version": "1.0.2"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/os-tmpdir/readme.md
----------------------------------------------------------------------
diff --git a/node_modules/os-tmpdir/readme.md b/node_modules/os-tmpdir/readme.md
index 54d4c6e..c09f7ed 100644
--- a/node_modules/os-tmpdir/readme.md
+++ b/node_modules/os-tmpdir/readme.md
@@ -1,12 +1,8 @@
 # os-tmpdir [![Build Status](https://travis-ci.org/sindresorhus/os-tmpdir.svg?branch=master)](https://travis-ci.org/sindresorhus/os-tmpdir)
 
-> Node.js [`os.tmpdir()`](https://nodejs.org/api/os.html#os_os_tmpdir) ponyfill
+> Node.js [`os.tmpdir()`](https://nodejs.org/api/os.html#os_os_tmpdir) [ponyfill](https://ponyfill.com)
 
-> Ponyfill: A polyfill that doesn't overwrite the native method
-
-Use this instead of `require('os').tmpdir()` to get a consistent behaviour on different Node.js versions (even 0.8).
-
-*This is actually taken from io.js 2.0.2 as it contains some fixes that haven't bubbled up to Node.js yet.*
+Use this instead of `require('os').tmpdir()` to get a consistent behavior on different Node.js versions (even 0.8).
 
 
 ## Install
@@ -19,10 +15,10 @@ $ npm install --save os-tmpdir
 ## Usage
 
 ```js
-var osTmpdir = require('os-tmpdir');
+const osTmpdir = require('os-tmpdir');
 
 osTmpdir();
-//=> /var/folders/m3/5574nnhn0yj488ccryqr7tc80000gn/T
+//=> '/var/folders/m3/5574nnhn0yj488ccryqr7tc80000gn/T'
 ```
 
 
@@ -33,4 +29,4 @@ See the [`os.tmpdir()` docs](https://nodejs.org/api/os.html#os_os_tmpdir).
 
 ## License
 
-MIT � [Sindre Sorhus](http://sindresorhus.com)
+MIT � [Sindre Sorhus](https://sindresorhus.com)

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/osenv/package.json
----------------------------------------------------------------------
diff --git a/node_modules/osenv/package.json b/node_modules/osenv/package.json
index 7640ebe..786d974 100644
--- a/node_modules/osenv/package.json
+++ b/node_modules/osenv/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.1.3 <0.2.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "osenv@>=0.1.3 <0.2.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz",
+  "_resolved": "http://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz",
   "_shasum": "83cf05c6d6458fc4d5ac6362ea325d92f2754217",
   "_shrinkwrap": null,
   "_spec": "osenv@^0.1.3",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/path-is-absolute/index.js
----------------------------------------------------------------------
diff --git a/node_modules/path-is-absolute/index.js b/node_modules/path-is-absolute/index.js
index 19f103f..22aa6c3 100644
--- a/node_modules/path-is-absolute/index.js
+++ b/node_modules/path-is-absolute/index.js
@@ -2,18 +2,18 @@
 
 function posix(path) {
 	return path.charAt(0) === '/';
-};
+}
 
 function win32(path) {
-	// https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
+	// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
 	var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
 	var result = splitDeviceRe.exec(path);
 	var device = result[1] || '';
-	var isUnc = !!device && device.charAt(1) !== ':';
+	var isUnc = Boolean(device && device.charAt(1) !== ':');
 
 	// UNC paths are always absolute
-	return !!result[2] || isUnc;
-};
+	return Boolean(result[2] || isUnc);
+}
 
 module.exports = process.platform === 'win32' ? win32 : posix;
 module.exports.posix = posix;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/path-is-absolute/package.json
----------------------------------------------------------------------
diff --git a/node_modules/path-is-absolute/package.json b/node_modules/path-is-absolute/package.json
index f038214..7f5df11 100644
--- a/node_modules/path-is-absolute/package.json
+++ b/node_modules/path-is-absolute/package.json
@@ -10,20 +10,24 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\glob"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob"
     ]
   ],
   "_from": "path-is-absolute@>=1.0.0 <2.0.0",
-  "_id": "path-is-absolute@1.0.0",
+  "_id": "path-is-absolute@1.0.1",
   "_inCache": true,
   "_installable": true,
   "_location": "/path-is-absolute",
-  "_nodeVersion": "0.12.0",
+  "_nodeVersion": "6.6.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/path-is-absolute-1.0.1.tgz_1475210523565_0.9876507974695414"
+  },
   "_npmUser": {
     "name": "sindresorhus",
     "email": "sindresorhus@gmail.com"
   },
-  "_npmVersion": "2.5.1",
+  "_npmVersion": "3.10.3",
   "_phantomChildren": {},
   "_requested": {
     "raw": "path-is-absolute@^1.0.0",
@@ -37,11 +41,11 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz",
-  "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
+  "_resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+  "_shasum": "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
   "_shrinkwrap": null,
   "_spec": "path-is-absolute@^1.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\glob",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/glob",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
@@ -52,11 +56,13 @@
   },
   "dependencies": {},
   "description": "Node.js 0.12 path.isAbsolute() ponyfill",
-  "devDependencies": {},
+  "devDependencies": {
+    "xo": "^0.16.0"
+  },
   "directories": {},
   "dist": {
-    "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
-    "tarball": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
+    "shasum": "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
+    "tarball": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -64,8 +70,8 @@
   "files": [
     "index.js"
   ],
-  "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1",
-  "homepage": "https://github.com/sindresorhus/path-is-absolute",
+  "gitHead": "edc91d348b21dac2ab65ea2fbec2868e2eff5eb6",
+  "homepage": "https://github.com/sindresorhus/path-is-absolute#readme",
   "keywords": [
     "path",
     "paths",
@@ -100,7 +106,7 @@
     "url": "git+https://github.com/sindresorhus/path-is-absolute.git"
   },
   "scripts": {
-    "test": "node test.js"
+    "test": "xo && node test.js"
   },
-  "version": "1.0.0"
+  "version": "1.0.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/path-is-absolute/readme.md
----------------------------------------------------------------------
diff --git a/node_modules/path-is-absolute/readme.md b/node_modules/path-is-absolute/readme.md
index cdf94f4..8dbdf5f 100644
--- a/node_modules/path-is-absolute/readme.md
+++ b/node_modules/path-is-absolute/readme.md
@@ -1,8 +1,6 @@
 # path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute)
 
-> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill
-
-> Ponyfill: A polyfill that doesn't overwrite the native method
+> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)
 
 
 ## Install
@@ -15,19 +13,29 @@ $ npm install --save path-is-absolute
 ## Usage
 
 ```js
-var pathIsAbsolute = require('path-is-absolute');
+const pathIsAbsolute = require('path-is-absolute');
 
-// Linux
+// Running on Linux
 pathIsAbsolute('/home/foo');
 //=> true
+pathIsAbsolute('C:/Users/foo');
+//=> false
 
-// Windows
-pathIsAbsolute('C:/Users/');
+// Running on Windows
+pathIsAbsolute('C:/Users/foo');
 //=> true
+pathIsAbsolute('/home/foo');
+//=> false
 
-// Any OS
+// Running on any OS
 pathIsAbsolute.posix('/home/foo');
 //=> true
+pathIsAbsolute.posix('C:/Users/foo');
+//=> false
+pathIsAbsolute.win32('C:/Users/foo');
+//=> true
+pathIsAbsolute.win32('/home/foo');
+//=> false
 ```
 
 
@@ -39,13 +47,13 @@ See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isa
 
 ### pathIsAbsolute.posix(path)
 
-The Posix specific version.
+POSIX specific version.
 
 ### pathIsAbsolute.win32(path)
 
-The Windows specific version.
+Windows specific version.
 
 
 ## License
 
-MIT � [Sindre Sorhus](http://sindresorhus.com)
+MIT � [Sindre Sorhus](https://sindresorhus.com)

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/plist/package.json
----------------------------------------------------------------------
diff --git a/node_modules/plist/package.json b/node_modules/plist/package.json
index 9e93934..848bfd8 100644
--- a/node_modules/plist/package.json
+++ b/node_modules/plist/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.2.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "plist@>=1.2.0 <2.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
+  "_resolved": "http://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
   "_shasum": "084b5093ddc92506e259f874b8d9b1afb8c79593",
   "_shrinkwrap": null,
   "_spec": "plist@^1.2.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Nathan Rajlich",
     "email": "nathan@tootallnate.net"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/q/package.json
----------------------------------------------------------------------
diff --git a/node_modules/q/package.json b/node_modules/q/package.json
index 5986038..856f466 100644
--- a/node_modules/q/package.json
+++ b/node_modules/q/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.4.1 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "q@>=1.4.1 <2.0.0",
@@ -38,11 +38,11 @@
     "/",
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+  "_resolved": "http://registry.npmjs.org/q/-/q-1.4.1.tgz",
   "_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
   "_shrinkwrap": null,
   "_spec": "q@^1.4.1",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Kris Kowal",
     "email": "kris@cixar.com",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/sax/examples/switch-bench.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/examples/switch-bench.js b/node_modules/sax/examples/switch-bench.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/sax/package.json
----------------------------------------------------------------------
diff --git a/node_modules/sax/package.json b/node_modules/sax/package.json
index 911d4ae..5d7ce6b 100644
--- a/node_modules/sax/package.json
+++ b/node_modules/sax/package.json
@@ -10,7 +10,7 @@
         "spec": "0.3.5",
         "type": "version"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\elementtree"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/elementtree"
     ]
   ],
   "_defaultsLoaded": true,
@@ -39,11 +39,11 @@
   "_requiredBy": [
     "/elementtree"
   ],
-  "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz",
+  "_resolved": "http://registry.npmjs.org/sax/-/sax-0.3.5.tgz",
   "_shasum": "88fcfc1f73c0c8bbd5b7c776b6d3f3501eed073d",
   "_shrinkwrap": null,
   "_spec": "sax@0.3.5",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\elementtree",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/elementtree",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/semver/bin/semver
----------------------------------------------------------------------
diff --git a/node_modules/semver/bin/semver b/node_modules/semver/bin/semver
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/semver/package.json
----------------------------------------------------------------------
diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json
index 46860ab..aee1de4 100644
--- a/node_modules/semver/package.json
+++ b/node_modules/semver/package.json
@@ -10,7 +10,7 @@
         "spec": ">=5.3.0 <6.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "semver@>=5.3.0 <6.0.0",
@@ -42,11 +42,11 @@
     "/",
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+  "_resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
   "_shasum": "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f",
   "_shrinkwrap": null,
   "_spec": "semver@^5.3.0",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "bin": {
     "semver": "./bin/semver"
   },

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/shelljs/bin/shjs
----------------------------------------------------------------------
diff --git a/node_modules/shelljs/bin/shjs b/node_modules/shelljs/bin/shjs
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/shelljs/package.json
----------------------------------------------------------------------
diff --git a/node_modules/shelljs/package.json b/node_modules/shelljs/package.json
index 7e5102d..f593392 100644
--- a/node_modules/shelljs/package.json
+++ b/node_modules/shelljs/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.5.3 <0.6.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "shelljs@>=0.5.3 <0.6.0",
@@ -38,11 +38,11 @@
     "/",
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
+  "_resolved": "http://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
   "_shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113",
   "_shrinkwrap": null,
   "_spec": "shelljs@^0.5.3",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Artur Adib",
     "email": "arturadib@gmail.com"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/shelljs/scripts/generate-docs.js
----------------------------------------------------------------------
diff --git a/node_modules/shelljs/scripts/generate-docs.js b/node_modules/shelljs/scripts/generate-docs.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/shelljs/scripts/run-tests.js
----------------------------------------------------------------------
diff --git a/node_modules/shelljs/scripts/run-tests.js b/node_modules/shelljs/scripts/run-tests.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/underscore/package.json
----------------------------------------------------------------------
diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json
index bd0a417..c85ccae 100644
--- a/node_modules/underscore/package.json
+++ b/node_modules/underscore/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.8.3 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "underscore@>=1.8.3 <2.0.0",
@@ -36,11 +36,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+  "_resolved": "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
   "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022",
   "_shrinkwrap": null,
   "_spec": "underscore@^1.8.3",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Jeremy Ashkenas",
     "email": "jeremy@documentcloud.org"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/unorm/package.json
----------------------------------------------------------------------
diff --git a/node_modules/unorm/package.json b/node_modules/unorm/package.json
index b24caa8..aa93218 100644
--- a/node_modules/unorm/package.json
+++ b/node_modules/unorm/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.3.3 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "unorm@>=1.3.3 <2.0.0",
@@ -36,11 +36,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
+  "_resolved": "http://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
   "_shasum": "364200d5f13646ca8bcd44490271335614792300",
   "_shrinkwrap": null,
   "_spec": "unorm@^1.3.3",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Bjarke Walling",
     "email": "bwp@bwp.dk"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/util-deprecate/package.json
----------------------------------------------------------------------
diff --git a/node_modules/util-deprecate/package.json b/node_modules/util-deprecate/package.json
index 93747b8..a9e67b2 100644
--- a/node_modules/util-deprecate/package.json
+++ b/node_modules/util-deprecate/package.json
@@ -10,7 +10,7 @@
         "spec": "1.0.2",
         "type": "version"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\plist"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist"
     ]
   ],
   "_from": "util-deprecate@1.0.2",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+  "_resolved": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
   "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
   "_shrinkwrap": null,
   "_spec": "util-deprecate@1.0.2",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\plist",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist",
   "author": {
     "name": "Nathan Rajlich",
     "email": "nathan@tootallnate.net",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/winjs/package.json
----------------------------------------------------------------------
diff --git a/node_modules/winjs/package.json b/node_modules/winjs/package.json
index ceba67b..a03a65e 100644
--- a/node_modules/winjs/package.json
+++ b/node_modules/winjs/package.json
@@ -10,7 +10,7 @@
         "spec": ">=4.4.0 <5.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
   "_from": "winjs@>=4.4.0 <5.0.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/winjs/-/winjs-4.4.0.tgz",
+  "_resolved": "http://registry.npmjs.org/winjs/-/winjs-4.4.0.tgz",
   "_shasum": "ca43f1d75eefa6e04e995262bb0e76ac51160c9a",
   "_shrinkwrap": null,
   "_spec": "winjs@^4.4.0",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Microsoft Corporation and other contributors",
     "url": "https://github.com/winjs/winjs/graphs/contributors"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/wrappy/package.json
----------------------------------------------------------------------
diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json
index ef4fa77..54a70bd 100644
--- a/node_modules/wrappy/package.json
+++ b/node_modules/wrappy/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\inflight"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/inflight"
     ]
   ],
   "_from": "wrappy@>=1.0.0 <2.0.0",
@@ -42,11 +42,11 @@
     "/inflight",
     "/once"
   ],
-  "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+  "_resolved": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
   "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
   "_shrinkwrap": null,
   "_spec": "wrappy@1",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\inflight",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/inflight",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/xmlbuilder/package.json
----------------------------------------------------------------------
diff --git a/node_modules/xmlbuilder/package.json b/node_modules/xmlbuilder/package.json
index 5f89c50..b67f1eb 100644
--- a/node_modules/xmlbuilder/package.json
+++ b/node_modules/xmlbuilder/package.json
@@ -10,7 +10,7 @@
         "spec": "4.0.0",
         "type": "version"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\plist"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist"
     ]
   ],
   "_from": "xmlbuilder@4.0.0",
@@ -36,11 +36,11 @@
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
+  "_resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
   "_shasum": "98b8f651ca30aa624036f127d11cc66dc7b907a3",
   "_shrinkwrap": null,
   "_spec": "xmlbuilder@4.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\plist",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist",
   "author": {
     "name": "Ozgur Ozcitak",
     "email": "oozcitak@gmail.com"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/xmldom/package.json
----------------------------------------------------------------------
diff --git a/node_modules/xmldom/package.json b/node_modules/xmldom/package.json
index d0afecf..8cfeb15 100644
--- a/node_modules/xmldom/package.json
+++ b/node_modules/xmldom/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.1.0 <0.2.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\plist"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist"
     ]
   ],
   "_from": "xmldom@>=0.1.0 <0.2.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz",
+  "_resolved": "http://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz",
   "_shasum": "10de4e5e964981f03c8cc72fadc08d14b6c3aa26",
   "_shrinkwrap": null,
   "_spec": "xmldom@0.1.x",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\plist",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist",
   "author": {
     "name": "jindw",
     "email": "jindw@xidea.org",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 946e712..fe2a3db 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
     "jshint": "jshint bin && jshint template && jshint spec"
   },
   "dependencies": {
-    "cordova-common": "^1.4.1",
+    "cordova-common": "^1.5.1",
     "elementtree": "^0.1.6",
     "node-uuid": "^1.4.3",
     "nopt": "^3.0.4",


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


[21/21] cordova-windows git commit: Update JS snapshot to version 4.4.3 (via coho)

Posted by da...@apache.org.
Update JS snapshot to version 4.4.3 (via coho)


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

Branch: refs/heads/4.4.x
Commit: 1299ade53c933563006663f0b1c086b1a5dd336c
Parents: 224a85c
Author: daserge <v-...@microsoft.com>
Authored: Thu Oct 20 21:18:30 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 21:18:30 2016 +0300

----------------------------------------------------------------------
 template/www/cordova.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/1299ade5/template/www/cordova.js
----------------------------------------------------------------------
diff --git a/template/www/cordova.js b/template/www/cordova.js
index 5af4cdc..81583d3 100644
--- a/template/www/cordova.js
+++ b/template/www/cordova.js
@@ -19,7 +19,7 @@
  under the License.
 */
 ;(function() {
-var PLATFORM_VERSION_BUILD_LABEL = '4.4.2';
+var PLATFORM_VERSION_BUILD_LABEL = '4.4.3';
 // file: src/scripts/require.js
 
 /*jshint -W079 */
@@ -841,7 +841,7 @@ module.exports = channel;
 
 });
 
-// file: F:/coho/cordova-windows/cordova-js-src/confighelper.js
+// file: f:/coho/cordova-windows/cordova-js-src/confighelper.js
 define("cordova/confighelper", function(require, exports, module) {
 
 // config.xml wrapper (non-node ConfigParser analogue)
@@ -915,7 +915,7 @@ exports.readConfig = readConfig;
 
 });
 
-// file: F:/coho/cordova-windows/cordova-js-src/exec.js
+// file: f:/coho/cordova-windows/cordova-js-src/exec.js
 define("cordova/exec", function(require, exports, module) {
 
 /*jslint sloppy:true, plusplus:true*/
@@ -1506,7 +1506,7 @@ exports.reset();
 
 });
 
-// file: F:/coho/cordova-windows/cordova-js-src/platform.js
+// file: f:/coho/cordova-windows/cordova-js-src/platform.js
 define("cordova/platform", function(require, exports, module) {
 
 module.exports = {
@@ -1825,7 +1825,7 @@ exports.load = function(callback) {
 
 });
 
-// file: F:/coho/cordova-windows/cordova-js-src/splashscreen.js
+// file: f:/coho/cordova-windows/cordova-js-src/splashscreen.js
 define("cordova/splashscreen", function(require, exports, module) {
 
 var isPhone = (cordova.platformId == 'windows') && WinJS.Utilities.isPhone;


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


[16/21] cordova-windows git commit: CB-12003 updated node_modules

Posted by da...@apache.org.
CB-12003 updated node_modules


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

Branch: refs/heads/4.4.x
Commit: db0a391fbb80fc7c83a7ae39f29f863fad3b14de
Parents: 5ae155f
Author: Steve Gill <st...@gmail.com>
Authored: Mon Oct 17 11:15:18 2016 -0700
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:56 2016 +0300

----------------------------------------------------------------------
 .gitignore                                      |  67 +++++++++
 node_modules/abbrev/package.json                |   6 +-
 node_modules/ansi/examples/beep/index.js        |   0
 node_modules/ansi/examples/clear/index.js       |   0
 node_modules/ansi/examples/cursorPosition.js    |   0
 node_modules/ansi/package.json                  |   6 +-
 node_modules/balanced-match/package.json        |   6 +-
 node_modules/base64-js/package.json             |   6 +-
 node_modules/big-integer/.npmignore             |  17 +++
 node_modules/big-integer/BigInteger.js          |  24 ++-
 node_modules/big-integer/BigInteger.min.js      |  34 +----
 node_modules/big-integer/LICENSE                |  24 ---
 node_modules/big-integer/README.md              |   7 +
 node_modules/big-integer/bower.json             |  30 ++++
 node_modules/big-integer/package.json           |  26 ++--
 node_modules/bplist-parser/package.json         |   6 +-
 .../bplist-parser/test/utf16_chinese.plist      | Bin
 node_modules/brace-expansion/package.json       |   6 +-
 node_modules/concat-map/package.json            |   6 +-
 node_modules/cordova-common/RELEASENOTES.md     |  16 ++
 node_modules/cordova-common/package.json        |  40 ++---
 .../src/ConfigChanges/ConfigChanges.js          | 149 +++++++++++++++++--
 .../src/ConfigChanges/ConfigFile.js             |  12 ++
 .../src/ConfigParser/ConfigParser.js            |  44 +++++-
 node_modules/cordova-common/src/FileUpdater.js  |  84 +++++------
 .../cordova-common/src/util/xml-helpers.js      |  17 +++
 .../cordova-registry-mapper/package.json        |   6 +-
 node_modules/elementtree/Makefile               |   0
 node_modules/elementtree/package.json           |   6 +-
 node_modules/glob/package.json                  |   6 +-
 node_modules/inflight/inflight.js               |  34 +++--
 node_modules/inflight/package.json              |  34 ++---
 node_modules/inherits/inherits.js               |   8 +-
 node_modules/inherits/package.json              |  32 ++--
 node_modules/inherits/test.js                   |  25 ----
 node_modules/lodash/package.json                |   6 +-
 node_modules/minimatch/package.json             |   6 +-
 node_modules/node-uuid/benchmark/bench.sh       |   0
 node_modules/node-uuid/bin/uuid                 |   0
 node_modules/node-uuid/package.json             |   6 +-
 node_modules/nopt/bin/nopt.js                   |   0
 node_modules/nopt/examples/my-program.js        |   0
 node_modules/nopt/package.json                  |   6 +-
 node_modules/once/README.md                     |  28 ++++
 node_modules/once/once.js                       |  21 +++
 node_modules/once/package.json                  |  28 ++--
 node_modules/os-homedir/package.json            |  39 ++---
 node_modules/os-homedir/readme.md               |  10 +-
 node_modules/os-tmpdir/index.js                 |   2 +-
 node_modules/os-tmpdir/package.json             |  33 ++--
 node_modules/os-tmpdir/readme.md                |  14 +-
 node_modules/osenv/package.json                 |   6 +-
 node_modules/path-is-absolute/index.js          |  10 +-
 node_modules/path-is-absolute/package.json      |  34 +++--
 node_modules/path-is-absolute/readme.md         |  30 ++--
 node_modules/plist/package.json                 |   6 +-
 node_modules/q/package.json                     |   6 +-
 node_modules/sax/examples/switch-bench.js       |   0
 node_modules/sax/package.json                   |   6 +-
 node_modules/semver/bin/semver                  |   0
 node_modules/semver/package.json                |   6 +-
 node_modules/shelljs/bin/shjs                   |   0
 node_modules/shelljs/package.json               |   6 +-
 node_modules/shelljs/scripts/generate-docs.js   |   0
 node_modules/shelljs/scripts/run-tests.js       |   0
 node_modules/underscore/package.json            |   6 +-
 node_modules/unorm/package.json                 |   6 +-
 node_modules/util-deprecate/package.json        |   6 +-
 node_modules/winjs/package.json                 |   6 +-
 node_modules/wrappy/package.json                |   6 +-
 node_modules/xmlbuilder/package.json            |   6 +-
 node_modules/xmldom/package.json                |   6 +-
 package.json                                    |   2 +-
 73 files changed, 747 insertions(+), 390 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index dc4c300..da03ef8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,73 @@ node_modules/istanbul/
 node_modules/jasmine-node/
 node_modules/jshint/
 node_modules/rewire/
+node_modules/align-text/
+node_modules/amdefine/
+node_modules/argparse/
+node_modules/async/
+node_modules/camelcase/
+node_modules/center-align/
+node_modules/cli/
+node_modules/cliui/
+node_modules/coffee-script/
+node_modules/console-browserify/
+node_modules/core-util-is/
+node_modules/date-now/
+node_modules/decamelize/
+node_modules/deep-is/
+node_modules/dom-serializer/
+node_modules/domelementtype/
+node_modules/domhandler/
+node_modules/domutils/
+node_modules/entities/
+node_modules/escodegen/
+node_modules/esprima/
+node_modules/estraverse/
+node_modules/esutils/
+node_modules/exit/
+node_modules/fast-levenshtein/
+node_modules/fileset/
+node_modules/fs.realpath/
+node_modules/gaze/
+node_modules/growl/
+node_modules/handlebars/
+node_modules/has-flag/
+node_modules/htmlparser2/
+node_modules/is-buffer/
+node_modules/isarray/
+node_modules/isexe/
+node_modules/jasmine-growl-reporter/
+node_modules/jasmine-reporters/
+node_modules/js-yaml/
+node_modules/kind-of/
+node_modules/lazy-cache/
+node_modules/levn/
+node_modules/longest/
+node_modules/lru-cache/
+node_modules/minimist/
+node_modules/mkdirp/
+node_modules/optimist/
+node_modules/optionator/
+node_modules/prelude-ls/
+node_modules/readable-stream/
+node_modules/repeat-string/
+node_modules/requirejs/
+node_modules/resolve/
+node_modules/right-align/
+node_modules/sigmund/
+node_modules/source-map/
+node_modules/sprintf-js/
+node_modules/string_decoder/
+node_modules/strip-json-comments/
+node_modules/supports-color/
+node_modules/type-check/
+node_modules/uglify-js/
+node_modules/uglify-to-browserify/
+node_modules/walkdir/
+node_modules/which/
+node_modules/window-size/
+node_modules/wordwrap/
+node_modules/yargs/
 
 npm-debug.log
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/abbrev/package.json
----------------------------------------------------------------------
diff --git a/node_modules/abbrev/package.json b/node_modules/abbrev/package.json
index eaa57db..620503c 100644
--- a/node_modules/abbrev/package.json
+++ b/node_modules/abbrev/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\nopt"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/nopt"
     ]
   ],
   "_from": "abbrev@>=1.0.0 <2.0.0",
@@ -41,11 +41,11 @@
   "_requiredBy": [
     "/nopt"
   ],
-  "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+  "_resolved": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
   "_shasum": "91b4792588a7738c25f35dd6f63752a2f8776135",
   "_shrinkwrap": null,
   "_spec": "abbrev@1",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\nopt",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/nopt",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/ansi/examples/beep/index.js
----------------------------------------------------------------------
diff --git a/node_modules/ansi/examples/beep/index.js b/node_modules/ansi/examples/beep/index.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/ansi/examples/clear/index.js
----------------------------------------------------------------------
diff --git a/node_modules/ansi/examples/clear/index.js b/node_modules/ansi/examples/clear/index.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/ansi/examples/cursorPosition.js
----------------------------------------------------------------------
diff --git a/node_modules/ansi/examples/cursorPosition.js b/node_modules/ansi/examples/cursorPosition.js
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/ansi/package.json
----------------------------------------------------------------------
diff --git a/node_modules/ansi/package.json b/node_modules/ansi/package.json
index 0585f8c..eab9023 100644
--- a/node_modules/ansi/package.json
+++ b/node_modules/ansi/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.3.1 <0.4.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "ansi@>=0.3.1 <0.4.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
+  "_resolved": "http://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
   "_shasum": "0c42d4fb17160d5a9af1e484bace1c66922c1b21",
   "_shrinkwrap": null,
   "_spec": "ansi@^0.3.1",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Nathan Rajlich",
     "email": "nathan@tootallnate.net",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/balanced-match/package.json
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
index b0d9090..5d48926 100644
--- a/node_modules/balanced-match/package.json
+++ b/node_modules/balanced-match/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.4.1 <0.5.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\brace-expansion"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/brace-expansion"
     ]
   ],
   "_from": "balanced-match@>=0.4.1 <0.5.0",
@@ -41,11 +41,11 @@
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+  "_resolved": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
   "_shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838",
   "_shrinkwrap": null,
   "_spec": "balanced-match@^0.4.1",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\brace-expansion",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/brace-expansion",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/base64-js/package.json
----------------------------------------------------------------------
diff --git a/node_modules/base64-js/package.json b/node_modules/base64-js/package.json
index 73e3e47..04bc47f 100644
--- a/node_modules/base64-js/package.json
+++ b/node_modules/base64-js/package.json
@@ -10,7 +10,7 @@
         "spec": "0.0.8",
         "type": "version"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\plist"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist"
     ]
   ],
   "_from": "base64-js@0.0.8",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
+  "_resolved": "http://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
   "_shasum": "1101e9544f4a76b1bc3b26d452ca96d7a35e7978",
   "_shrinkwrap": null,
   "_spec": "base64-js@0.0.8",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\plist",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/plist",
   "author": {
     "name": "T. Jameson Little",
     "email": "t.jameson.little@gmail.com"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/.npmignore b/node_modules/big-integer/.npmignore
new file mode 100644
index 0000000..31905cf
--- /dev/null
+++ b/node_modules/big-integer/.npmignore
@@ -0,0 +1,17 @@
+/.travis.yml
+/.npmignore
+/.gitignore
+/spec
+/benchmark
+/big-integer*.tgz
+/my.conf.js
+/node_modules
+/*.csproj*
+/*.sh
+/*.suo
+/bin
+/coverage
+/*.bat
+/obj
+/Properties
+/Web.*

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/BigInteger.js
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/BigInteger.js b/node_modules/big-integer/BigInteger.js
index ec9b6d1..b6347bf 100644
--- a/node_modules/big-integer/BigInteger.js
+++ b/node_modules/big-integer/BigInteger.js
@@ -301,7 +301,7 @@ var bigInt = (function (undefined) {
 
     function multiplyKaratsuba(x, y) {
         var n = Math.max(x.length, y.length);
-        
+
         if (n <= 30) return multiplyLong(x, y);
         n = Math.ceil(n / 2);
 
@@ -822,6 +822,24 @@ var bigInt = (function (undefined) {
     };
     SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;
 
+    BigInteger.prototype.modInv = function (n) {
+        var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;
+        while (!newR.equals(bigInt.zero)) {
+        	q = r.divide(newR);
+          lastT = t;
+          lastR = r;
+          t = newT;
+          r = newR;
+          newT = lastT.subtract(q.multiply(newT));
+          newR = lastR.subtract(q.multiply(newR));
+        }
+        if (t.compare(0) === -1) {
+        	t = t.add(n);
+        }
+        return t;
+    }
+    SmallInteger.prototype.modInv = BigInteger.prototype.modInv;
+
     BigInteger.prototype.next = function () {
         var value = this.value;
         if (this.sign) {
@@ -1114,7 +1132,7 @@ var bigInt = (function (undefined) {
         return this.value;
     };
     SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
-    
+
     function parseStringValue(v) {
             if (isPrecise(+v)) {
                 var x = +v;
@@ -1153,7 +1171,7 @@ var bigInt = (function (undefined) {
             trim(r);
             return new BigInteger(r, sign);
     }
-    
+
     function parseNumberValue(v) {
         if (isPrecise(v)) {
             if (v !== truncate(v)) throw new Error(v + " is not an integer.");

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/BigInteger.min.js
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/BigInteger.min.js b/node_modules/big-integer/BigInteger.min.js
index a9d12de..222d2c0 100644
--- a/node_modules/big-integer/BigInteger.min.js
+++ b/node_modules/big-integer/BigInteger.min.js
@@ -1,33 +1 @@
-var bigInt=function(E){function k(a,b){if("undefined"===typeof a)return k[0];if("undefined"!==typeof b){var c;if(10===+b)c=l(a);else{c=b;var n=k[0],f=k[1],d=a.length;if(2<=c&&36>=c&&d<=ga/Math.log(c))c=new e(parseInt(a,c));else{c=l(c);var d=[],g,h="-"===a[0];for(g=h?1:0;g<a.length;g++){var q=a[g].toLowerCase(),u=q.charCodeAt(0);if(48<=u&&57>=u)d.push(l(q));else if(97<=u&&122>=u)d.push(l(q.charCodeAt(0)-87));else if("<"===q){q=g;do g++;while(">"!==a[g]);d.push(l(a.slice(q+1,g)))}else throw Error(q+
-" is not a valid character");}d.reverse();for(g=0;g<d.length;g++)n=n.add(d[g].times(f)),f=f.times(c);c=h?n.negate():n}}return c}return l(a)}function d(a,b){this.value=a;this.sign=b;this.isSmall=!1}function e(a){this.value=a;this.sign=0>a;this.isSmall=!0}function w(a){return-9007199254740992<a&&9007199254740992>a}function z(a){return 1E7>a?[a]:1E14>a?[a%1E7,Math.floor(a/1E7)]:[a%1E7,Math.floor(a/1E7)%1E7,Math.floor(a/1E14)]}function y(a){D(a);var b=a.length;if(4>b&&0>A(a,P))switch(b){case 0:return 0;
-case 1:return a[0];case 2:return a[0]+1E7*a[1];default:return a[0]+1E7*(a[1]+1E7*a[2])}return a}function D(a){for(var b=a.length;0===a[--b];);a.length=b+1}function K(a){for(var b=Array(a),c=-1;++c<a;)b[c]=0;return b}function B(a){return 0<a?Math.floor(a):Math.ceil(a)}function S(a,b){var c=a.length,d=b.length,f=Array(c),m=0,g,e;for(e=0;e<d;e++)g=a[e]+b[e]+m,m=1E7<=g?1:0,f[e]=g-1E7*m;for(;e<c;)g=a[e]+m,m=1E7===g?1:0,f[e++]=g-1E7*m;0<m&&f.push(m);return f}function F(a,b){return a.length>=b.length?S(a,
-b):S(b,a)}function L(a,b){var c=a.length,d=Array(c),f,e;for(e=0;e<c;e++)f=a[e]-1E7+b,b=Math.floor(f/1E7),d[e]=f-1E7*b,b+=1;for(;0<b;)d[e++]=b%1E7,b=Math.floor(b/1E7);return d}function G(a,b){var c=a.length,d=b.length,f=Array(c),e=0,g,h;for(g=0;g<d;g++)h=a[g]-e-b[g],0>h?(h+=1E7,e=1):e=0,f[g]=h;for(g=d;g<c;g++){h=a[g]-e;if(0>h)h+=1E7;else{f[g++]=h;break}f[g]=h}for(;g<c;g++)f[g]=a[g];D(f);return f}function M(a,b,c){var n=a.length,f=Array(n);b=-b;var m,g;for(m=0;m<n;m++)g=a[m]+b,b=Math.floor(g/1E7),g%=
-1E7,f[m]=0>g?g+1E7:g;f=y(f);return"number"===typeof f?(c&&(f=-f),new e(f)):new d(f,c)}function Q(a,b){var c=a.length,d=b.length,f=K(c+d),e,g,h,k;for(h=0;h<c;++h){k=a[h];for(var l=0;l<d;++l)e=b[l],e=k*e+f[h+l],g=Math.floor(e/1E7),f[h+l]=e-1E7*g,f[h+l+1]+=g}D(f);return f}function H(a,b){var c=a.length,d=Array(c),f=0,e,g;for(g=0;g<c;g++)e=a[g]*b+f,f=Math.floor(e/1E7),d[g]=e-1E7*f;for(;0<f;)d[g++]=f%1E7,f=Math.floor(f/1E7);return d}function T(a,b){for(var c=[];0<b--;)c.push(0);return c.concat(a)}function N(a,
-b){var c=Math.max(a.length,b.length);if(30>=c)return Q(a,b);var c=Math.ceil(c/2),d=a.slice(c),f=a.slice(0,c),e=b.slice(c),g=b.slice(0,c),h=N(f,g),k=N(d,e),d=N(F(f,d),F(g,e)),c=F(F(h,T(G(G(d,h),k),c)),T(k,2*c));D(c);return c}function U(a,b,c){return 1E7>a?new d(H(b,a),c):new d(Q(b,z(a)),c)}function V(a){var b=a.length,c=K(b+b),d,f,e,g;for(e=0;e<b;e++){g=a[e];for(var h=0;h<b;h++)d=a[h],d=g*d+c[e+h],f=Math.floor(d/1E7),c[e+h]=d-1E7*f,c[e+h+1]+=f}D(c);return c}function W(a,b){var c=a.length,d=K(c),f,
-e;e=0;for(--c;0<=c;--c)e=1E7*e+a[c],f=B(e/b),e-=f*b,d[c]=f|0;return[d,e|0]}function I(a,b){var c,n=l(b),f=a.value;c=n.value;if(0===c)throw Error("Cannot divide by zero");if(a.isSmall)return n.isSmall?[new e(B(f/c)),new e(f%c)]:[k[0],a];if(n.isSmall){if(1===c)return[a,k[0]];if(-1==c)return[a.negate(),k[0]];c=Math.abs(c);if(1E7>c)return c=W(f,c),f=y(c[0]),c=c[1],a.sign&&(c=-c),"number"===typeof f?(a.sign!==n.sign&&(f=-f),[new e(f),new e(c)]):[new d(f,a.sign!==n.sign),new e(c)];c=z(c)}var m=A(f,c);if(-1===
-m)return[k[0],a];if(0===m)return[k[a.sign===n.sign?1:-1],k[0]];if(200>=f.length+c.length){var g=c,h=f.length;c=g.length;var m=K(g.length),q=g[c-1],u=Math.ceil(1E7/(2*q)),f=H(f,u),g=H(g,u),p,r,x,t,v,w;f.length<=h&&f.push(0);g.push(0);q=g[c-1];for(p=h-c;0<=p;p--){h=9999999;f[p+c]!==q&&(h=Math.floor((1E7*f[p+c]+f[p+c-1])/q));x=r=0;v=g.length;for(t=0;t<v;t++)r+=h*g[t],w=Math.floor(r/1E7),x+=f[p+t]-(r-1E7*w),r=w,0>x?(f[p+t]=x+1E7,x=-1):(f[p+t]=x,x=0);for(;0!==x;){--h;for(t=r=0;t<v;t++)r+=f[p+t]-1E7+g[t],
-0>r?(f[p+t]=r+1E7,r=0):(f[p+t]=r,r=1);x+=r}m[p]=h}f=W(f,u)[0];c=[y(m),y(f)]}else{m=f.length;q=c.length;u=[];for(g=[];m;)if(g.unshift(f[--m]),0>A(g,c))u.push(0);else{h=g.length;p=1E7*g[h-1]+g[h-2];r=1E7*c[q-1]+c[q-2];h>q&&(p=1E7*(p+1));h=Math.ceil(p/r);do{p=H(c,h);if(0>=A(p,g))break;h--}while(h);u.push(h);g=G(g,p)}u.reverse();c=[y(u),y(g)]}f=c[0];n=a.sign!==n.sign;c=c[1];m=a.sign;"number"===typeof f?(n&&(f=-f),f=new e(f)):f=new d(f,n);"number"===typeof c?(m&&(c=-c),c=new e(c)):c=new d(c,m);return[f,
-c]}function A(a,b){if(a.length!==b.length)return a.length>b.length?1:-1;for(var c=a.length-1;0<=c;c--)if(a[c]!==b[c])return a[c]>b[c]?1:-1;return 0}function X(a){a=a.abs();if(a.isUnit())return!1;if(a.equals(2)||a.equals(3)||a.equals(5))return!0;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return!1;if(a.lesser(25))return!0}function Y(a){return("number"===typeof a||"string"===typeof a)&&1E7>=+Math.abs(a)||a instanceof d&&1>=a.value.length}function R(a,b,c){b=l(b);var d=a.isNegative(),e=b.isNegative(),
-m=d?a.not():a,g=e?b.not():b;b=[];a=[];for(var h=!1,k=!1;!h||!k;)m.isZero()?(h=!0,b.push(d?1:0)):d?b.push(m.isEven()?1:0):b.push(m.isEven()?0:1),g.isZero()?(k=!0,a.push(e?1:0)):e?a.push(g.isEven()?1:0):a.push(g.isEven()?0:1),m=m.over(2),g=g.over(2);d=[];for(e=0;e<b.length;e++)d.push(c(b[e],a[e]));for(c=bigInt(d.pop()).negate().times(bigInt(2).pow(d.length));d.length;)c=c.add(bigInt(d.pop()).times(bigInt(2).pow(d.length)));return c}function O(a){a=a.value;a="number"===typeof a?a|1073741824:a[0]+1E7*
-a[1]|1073758208;return a&-a}function Z(a,b){a=l(a);b=l(b);return a.greater(b)?a:b}function aa(a,b){a=l(a);b=l(b);return a.lesser(b)?a:b}function ba(a,b){a=l(a).abs();b=l(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;for(var c=k[1],d;a.isEven()&&b.isEven();)d=Math.min(O(a),O(b)),a=a.divide(d),b=b.divide(d),c=c.multiply(d);for(;a.isEven();)a=a.divide(O(a));do{for(;b.isEven();)b=b.divide(O(b));a.greater(b)&&(d=b,b=a,a=d);b=b.subtract(a)}while(!b.isZero());return c.isUnit()?
-a:a.multiply(c)}function ca(a){a=a.value;"number"===typeof a&&(a=[a]);return 1===a.length&&35>=a[0]?"0123456789abcdefghijklmnopqrstuvwxyz".charAt(a[0]):"<"+a+">"}function da(a,b){b=bigInt(b);if(b.isZero()){if(a.isZero())return"0";throw Error("Cannot convert nonzero numbers to base 0.");}if(b.equals(-1))return a.isZero()?"0":a.isNegative()?Array(1-a).join("10"):"1"+Array(+a).join("01");var c="";a.isNegative()&&b.isPositive()&&(c="-",a=a.abs());if(b.equals(1))return a.isZero()?"0":c+Array(+a+1).join(1);
-for(var d=[],e=a,k;e.isNegative()||0<=e.compareAbs(b);)k=e.divmod(b),e=k.quotient,k=k.remainder,k.isNegative()&&(k=b.minus(k).abs(),e=e.next()),d.push(ca(k));d.push(ca(e));return c+d.reverse().join("")}function ea(a){if(w(+a)){var b=+a;if(b===B(b))return new e(b);throw"Invalid integer: "+a;}(b="-"===a[0])&&(a=a.slice(1));var c=a.split(/e/i);if(2<c.length)throw Error("Invalid integer: "+c.join("e"));if(2===c.length){a=c[1];"+"===a[0]&&(a=a.slice(1));a=+a;if(a!==B(a)||!w(a))throw Error("Invalid integer: "+
-a+" is not a valid exponent.");var c=c[0],n=c.indexOf(".");0<=n&&(a-=c.length-n-1,c=c.slice(0,n)+c.slice(n+1));if(0>a)throw Error("Cannot include negative exponent part for integers");a=c+=Array(a+1).join("0")}if(!/^([0-9][0-9]*)$/.test(a))throw Error("Invalid integer: "+a);for(var c=[],n=a.length,f=n-7;0<n;)c.push(+a.slice(f,n)),f-=7,0>f&&(f=0),n-=7;D(c);return new d(c,b)}function l(a){if("number"===typeof a){if(w(a)){if(a!==B(a))throw Error(a+" is not an integer.");a=new e(a)}else a=ea(a.toString());
-return a}return"string"===typeof a?ea(a):a}var P=z(9007199254740992),ga=Math.log(9007199254740992);d.prototype=Object.create(k.prototype);e.prototype=Object.create(k.prototype);d.prototype.add=function(a){a=l(a);if(this.sign!==a.sign)return this.subtract(a.negate());var b=this.value,c=a.value;return a.isSmall?new d(L(b,Math.abs(c)),this.sign):new d(F(b,c),this.sign)};d.prototype.plus=d.prototype.add;e.prototype.add=function(a){a=l(a);var b=this.value;if(0>b!==a.sign)return this.subtract(a.negate());
-var c=a.value;if(a.isSmall){if(w(b+c))return new e(b+c);c=z(Math.abs(c))}return new d(L(c,Math.abs(b)),0>b)};e.prototype.plus=e.prototype.add;d.prototype.subtract=function(a){var b=l(a);if(this.sign!==b.sign)return this.add(b.negate());a=this.value;var c=b.value;if(b.isSmall)return M(a,Math.abs(c),this.sign);b=this.sign;0<=A(a,c)?a=G(a,c):(a=G(c,a),b=!b);a=y(a);"number"===typeof a?(b&&(a=-a),a=new e(a)):a=new d(a,b);return a};d.prototype.minus=d.prototype.subtract;e.prototype.subtract=function(a){a=
-l(a);var b=this.value;if(0>b!==a.sign)return this.add(a.negate());var c=a.value;return a.isSmall?new e(b-c):M(c,Math.abs(b),0<=b)};e.prototype.minus=e.prototype.subtract;d.prototype.negate=function(){return new d(this.value,!this.sign)};e.prototype.negate=function(){var a=this.sign,b=new e(-this.value);b.sign=!a;return b};d.prototype.abs=function(){return new d(this.value,!1)};e.prototype.abs=function(){return new e(Math.abs(this.value))};d.prototype.multiply=function(a){var b=l(a);a=this.value;var c=
-b.value,e=this.sign!==b.sign;if(b.isSmall){if(0===c)return k[0];if(1===c)return this;if(-1===c)return this.negate();c=Math.abs(c);if(1E7>c)return new d(H(a,c),e);c=z(c)}var b=a.length,f=c.length;return 0<-.012*b-.012*f+1.5E-5*b*f?new d(N(a,c),e):new d(Q(a,c),e)};d.prototype.times=d.prototype.multiply;e.prototype._multiplyBySmall=function(a){return w(a.value*this.value)?new e(a.value*this.value):U(Math.abs(a.value),z(Math.abs(this.value)),this.sign!==a.sign)};d.prototype._multiplyBySmall=function(a){return 0===
-a.value?k[0]:1===a.value?this:-1===a.value?this.negate():U(Math.abs(a.value),this.value,this.sign!==a.sign)};e.prototype.multiply=function(a){return l(a)._multiplyBySmall(this)};e.prototype.times=e.prototype.multiply;d.prototype.square=function(){return new d(V(this.value),!1)};e.prototype.square=function(){var a=this.value*this.value;return w(a)?new e(a):new d(V(z(Math.abs(this.value))),!1)};d.prototype.divmod=function(a){a=I(this,a);return{quotient:a[0],remainder:a[1]}};e.prototype.divmod=d.prototype.divmod;
-d.prototype.divide=function(a){return I(this,a)[0]};e.prototype.over=e.prototype.divide=d.prototype.over=d.prototype.divide;d.prototype.mod=function(a){return I(this,a)[1]};e.prototype.remainder=e.prototype.mod=d.prototype.remainder=d.prototype.mod;d.prototype.pow=function(a){var b=l(a),c=this.value;a=b.value;var d;if(0===a)return k[1];if(0===c)return k[0];if(1===c)return k[1];if(-1===c)return b.isEven()?k[1]:k[-1];if(b.sign)return k[0];if(!b.isSmall)throw Error("The exponent "+b.toString()+" is too large.");
-if(this.isSmall&&w(d=Math.pow(c,a)))return new e(B(d));d=this;for(b=k[1];;){a&1&&(b=b.times(d),--a);if(0===a)break;a/=2;d=d.square()}return b};e.prototype.pow=d.prototype.pow;d.prototype.modPow=function(a,b){a=l(a);b=l(b);if(b.isZero())throw Error("Cannot take modPow with modulus 0");for(var c=k[1],d=this.mod(b);a.isPositive();){if(d.isZero())return k[0];a.isOdd()&&(c=c.multiply(d).mod(b));a=a.divide(2);d=d.square().mod(b)}return c};e.prototype.modPow=d.prototype.modPow;d.prototype.compareAbs=function(a){a=
-l(a);return a.isSmall?1:A(this.value,a.value)};e.prototype.compareAbs=function(a){a=l(a);var b=Math.abs(this.value),c=a.value;return a.isSmall?(c=Math.abs(c),b===c?0:b>c?1:-1):-1};d.prototype.compare=function(a){if(Infinity===a)return-1;if(-Infinity===a)return 1;a=l(a);return this.sign!==a.sign?a.sign?1:-1:a.isSmall?this.sign?-1:1:A(this.value,a.value)*(this.sign?-1:1)};d.prototype.compareTo=d.prototype.compare;e.prototype.compare=function(a){if(Infinity===a)return-1;if(-Infinity===a)return 1;a=l(a);
-var b=this.value,c=a.value;return a.isSmall?b==c?0:b>c?1:-1:0>b!==a.sign?0>b?-1:1:0>b?1:-1};e.prototype.compareTo=e.prototype.compare;d.prototype.equals=function(a){return 0===this.compare(a)};e.prototype.eq=e.prototype.equals=d.prototype.eq=d.prototype.equals;d.prototype.notEquals=function(a){return 0!==this.compare(a)};e.prototype.neq=e.prototype.notEquals=d.prototype.neq=d.prototype.notEquals;d.prototype.greater=function(a){return 0<this.compare(a)};e.prototype.gt=e.prototype.greater=d.prototype.gt=
-d.prototype.greater;d.prototype.lesser=function(a){return 0>this.compare(a)};e.prototype.lt=e.prototype.lesser=d.prototype.lt=d.prototype.lesser;d.prototype.greaterOrEquals=function(a){return 0<=this.compare(a)};e.prototype.geq=e.prototype.greaterOrEquals=d.prototype.geq=d.prototype.greaterOrEquals;d.prototype.lesserOrEquals=function(a){return 0>=this.compare(a)};e.prototype.leq=e.prototype.lesserOrEquals=d.prototype.leq=d.prototype.lesserOrEquals;d.prototype.isEven=function(){return 0===(this.value[0]&
-1)};e.prototype.isEven=function(){return 0===(this.value&1)};d.prototype.isOdd=function(){return 1===(this.value[0]&1)};e.prototype.isOdd=function(){return 1===(this.value&1)};d.prototype.isPositive=function(){return!this.sign};e.prototype.isPositive=function(){return 0<this.value};d.prototype.isNegative=function(){return this.sign};e.prototype.isNegative=function(){return 0>this.value};d.prototype.isUnit=function(){return!1};e.prototype.isUnit=function(){return 1===Math.abs(this.value)};d.prototype.isZero=
-function(){return!1};e.prototype.isZero=function(){return 0===this.value};d.prototype.isDivisibleBy=function(a){a=l(a);var b=a.value;return 0===b?!1:1===b?!0:2===b?this.isEven():this.mod(a).equals(k[0])};e.prototype.isDivisibleBy=d.prototype.isDivisibleBy;d.prototype.isPrime=function(){var a=X(this);if(a!==E)return a;for(var a=this.abs(),b=a.prev(),c=[2,3,5,7,11,13,17,19],d=b,e,l,g,h;d.isEven();)d=d.divide(2);for(g=0;g<c.length;g++)if(h=bigInt(c[g]).modPow(d,a),!h.equals(k[1])&&!h.equals(b)){l=!0;
-for(e=d;l&&e.lesser(b);e=e.multiply(2))h=h.square().mod(a),h.equals(b)&&(l=!1);if(l)return!1}return!0};e.prototype.isPrime=d.prototype.isPrime;d.prototype.isProbablePrime=function(a){var b=X(this);if(b!==E)return b;b=this.abs();a=a===E?5:a;for(var c=0;c<a;c++)if(!bigInt.randBetween(2,b.minus(2)).modPow(b.prev(),b).isUnit())return!1;return!0};e.prototype.isProbablePrime=d.prototype.isProbablePrime;d.prototype.next=function(){var a=this.value;return this.sign?M(a,1,this.sign):new d(L(a,1),this.sign)};
-e.prototype.next=function(){var a=this.value;return 9007199254740992>a+1?new e(a+1):new d(P,!1)};d.prototype.prev=function(){var a=this.value;return this.sign?new d(L(a,1),!0):M(a,1,this.sign)};e.prototype.prev=function(){var a=this.value;return-9007199254740992<a-1?new e(a-1):new d(P,!0)};for(var v=[1];1E7>=v[v.length-1];)v.push(2*v[v.length-1]);var J=v.length,fa=v[J-1];d.prototype.shiftLeft=function(a){if(!Y(a))throw Error(String(a)+" is too large for shifting.");a=+a;if(0>a)return this.shiftRight(-a);
-for(var b=this;a>=J;)b=b.multiply(fa),a-=J-1;return b.multiply(v[a])};e.prototype.shiftLeft=d.prototype.shiftLeft;d.prototype.shiftRight=function(a){var b;if(!Y(a))throw Error(String(a)+" is too large for shifting.");a=+a;if(0>a)return this.shiftLeft(-a);for(b=this;a>=J;){if(b.isZero())return b;b=I(b,fa);b=b[1].isNegative()?b[0].prev():b[0];a-=J-1}b=I(b,v[a]);return b[1].isNegative()?b[0].prev():b[0]};e.prototype.shiftRight=d.prototype.shiftRight;d.prototype.not=function(){return this.negate().prev()};
-e.prototype.not=d.prototype.not;d.prototype.and=function(a){return R(this,a,function(a,c){return a&c})};e.prototype.and=d.prototype.and;d.prototype.or=function(a){return R(this,a,function(a,c){return a|c})};e.prototype.or=d.prototype.or;d.prototype.xor=function(a){return R(this,a,function(a,c){return a^c})};e.prototype.xor=d.prototype.xor;d.prototype.toString=function(a){a===E&&(a=10);if(10!==a)return da(this,a);a=this.value;for(var b=a.length,c=String(a[--b]),d;0<=--b;)d=String(a[b]),c+="0000000".slice(d.length)+
-d;return(this.sign?"-":"")+c};e.prototype.toString=function(a){a===E&&(a=10);return 10!=a?da(this,a):String(this.value)};d.prototype.valueOf=function(){return+this.toString()};d.prototype.toJSNumber=d.prototype.valueOf;e.prototype.valueOf=function(){return this.value};e.prototype.toJSNumber=e.prototype.valueOf;for(var C=0;1E3>C;C++)k[C]=new e(C),0<C&&(k[-C]=new e(-C));k.one=k[1];k.zero=k[0];k.minusOne=k[-1];k.max=Z;k.min=aa;k.gcd=ba;k.lcm=function(a,b){a=l(a).abs();b=l(b).abs();return a.divide(ba(a,
-b)).multiply(b)};k.isInstance=function(a){return a instanceof d||a instanceof e};k.randBetween=function(a,b){a=l(a);b=l(b);var c=aa(a,b),k=Z(a,b).subtract(c);if(k.isSmall)return c.add(Math.round(Math.random()*k));for(var f=[],m=!0,g=k.value.length-1;0<=g;g--){var h=m?k.value[g]:1E7,q=B(Math.random()*h);f.unshift(q);q<h&&(m=!1)}f=y(f);return c.add("number"===typeof f?new e(f):new d(f,!1))};return k}();"undefined"!==typeof module&&module.hasOwnProperty("exports")&&(module.exports=bigInt);
\ No newline at end of file
+var bigInt=function(e){"use strict";function o(e,t){return typeof e=="undefined"?o[0]:typeof t!="undefined"?+t===10?Y(e):$(e,t):Y(e)}function u(e,t){this.value=e,this.sign=t,this.isSmall=!1}function a(e){this.value=e,this.sign=e<0,this.isSmall=!0}function f(e){return-r<e&&e<r}function l(e){return e<1e7?[e]:e<1e14?[e%1e7,Math.floor(e/1e7)]:[e%1e7,Math.floor(e/1e7)%1e7,Math.floor(e/1e14)]}function c(e){h(e);var n=e.length;if(n<4&&_(e,i)<0)switch(n){case 0:return 0;case 1:return e[0];case 2:return e[0]+e[1]*t;default:return e[0]+(e[1]+e[2]*t)*t}return e}function h(e){var t=e.length;while(e[--t]===0);e.length=t+1}function p(e){var t=new Array(e),n=-1;while(++n<e)t[n]=0;return t}function d(e){return e>0?Math.floor(e):Math.ceil(e)}function v(e,n){var r=e.length,i=n.length,s=new Array(r),o=0,u=t,a,f;for(f=0;f<i;f++)a=e[f]+n[f]+o,o=a>=u?1:0,s[f]=a-o*u;while(f<r)a=e[f]+o,o=a===u?1:0,s[f++]=a-o*u;return o>0&&s.push(o),s}function m(e,t){return e.length>=t.length?v(e,t):v(t,e)}function g(e,n){v
 ar r=e.length,i=new Array(r),s=t,o,u;for(u=0;u<r;u++)o=e[u]-s+n,n=Math.floor(o/s),i[u]=o-n*s,n+=1;while(n>0)i[u++]=n%s,n=Math.floor(n/s);return i}function y(e,n){var r=e.length,i=n.length,s=new Array(r),o=0,u=t,a,f;for(a=0;a<i;a++)f=e[a]-o-n[a],f<0?(f+=u,o=1):o=0,s[a]=f;for(a=i;a<r;a++){f=e[a]-o;if(!(f<0)){s[a++]=f;break}f+=u,s[a]=f}for(;a<r;a++)s[a]=e[a];return h(s),s}function b(e,t,n){var r,i;return _(e,t)>=0?r=y(e,t):(r=y(t,e),n=!n),r=c(r),typeof r=="number"?(n&&(r=-r),new a(r)):new u(r,n)}function w(e,n,r){var i=e.length,s=new Array(i),o=-n,f=t,l,h;for(l=0;l<i;l++)h=e[l]+o,o=Math.floor(h/f),h%=f,s[l]=h<0?h+f:h;return s=c(s),typeof s=="number"?(r&&(s=-s),new a(s)):new u(s,r)}function E(e,n){var r=e.length,i=n.length,s=r+i,o=p(s),u=t,a,f,l,c,d;for(l=0;l<r;++l){c=e[l];for(var v=0;v<i;++v)d=n[v],a=c*d+o[l+v],f=Math.floor(a/u),o[l+v]=a-f*u,o[l+v+1]+=f}return h(o),o}function S(e,n){var r=e.length,i=new Array(r),s=t,o=0,u,a;for(a=0;a<r;a++)u=e[a]*n+o,o=Math.floor(u/s),i[a]=u-o*s;while(
 o>0)i[a++]=o%s,o=Math.floor(o/s);return i}function x(e,t){var n=[];while(t-->0)n.push(0);return n.concat(e)}function T(e,t){var n=Math.max(e.length,t.length);if(n<=30)return E(e,t);n=Math.ceil(n/2);var r=e.slice(n),i=e.slice(0,n),s=t.slice(n),o=t.slice(0,n),u=T(i,o),a=T(r,s),f=T(m(i,r),m(o,s)),l=m(m(u,x(y(y(f,u),a),n)),x(a,2*n));return h(l),l}function N(e,t){return-0.012*e-.012*t+15e-6*e*t>0}function C(e,n,r){return e<t?new u(S(n,e),r):new u(E(n,l(e)),r)}function k(e){var n=e.length,r=p(n+n),i=t,s,o,u,a,f;for(u=0;u<n;u++){a=e[u];for(var l=0;l<n;l++)f=e[l],s=a*f+r[u+l],o=Math.floor(s/i),r[u+l]=s-o*i,r[u+l+1]+=o}return h(r),r}function L(e,n){var r=e.length,i=n.length,s=t,o=p(n.length),u=n[i-1],a=Math.ceil(s/(2*u)),f=S(e,a),l=S(n,a),h,d,v,m,g,y,b;f.length<=r&&f.push(0),l.push(0),u=l[i-1];for(d=r-i;d>=0;d--){h=s-1,f[d+i]!==u&&(h=Math.floor((f[d+i]*s+f[d+i-1])/u)),v=0,m=0,y=l.length;for(g=0;g<y;g++)v+=h*l[g],b=Math.floor(v/s),m+=f[d+g]-(v-b*s),v=b,m<0?(f[d+g]=m+s,m=-1):(f[d+g]=m,m=0);whi
 le(m!==0){h-=1,v=0;for(g=0;g<y;g++)v+=f[d+g]-s+l[g],v<0?(f[d+g]=v+s,v=0):(f[d+g]=v,v=1);m+=v}o[d]=h}return f=O(f,a)[0],[c(o),c(f)]}function A(e,n){var r=e.length,i=n.length,s=[],o=[],u=t,a,f,l,h,p;while(r){o.unshift(e[--r]);if(_(o,n)<0){s.push(0);continue}f=o.length,l=o[f-1]*u+o[f-2],h=n[i-1]*u+n[i-2],f>i&&(l=(l+1)*u),a=Math.ceil(l/h);do{p=S(n,a);if(_(p,o)<=0)break;a--}while(a);s.push(a),o=y(o,p)}return s.reverse(),[c(s),c(o)]}function O(e,n){var r=e.length,i=p(r),s=t,o,u,a,f;a=0;for(o=r-1;o>=0;--o)f=a*s+e[o],u=d(f/n),a=f-u*n,i[o]=u|0;return[i,a|0]}function M(e,n){var r,i=Y(n),s=e.value,f=i.value,h;if(f===0)throw new Error("Cannot divide by zero");if(e.isSmall)return i.isSmall?[new a(d(s/f)),new a(s%f)]:[o[0],e];if(i.isSmall){if(f===1)return[e,o[0]];if(f==-1)return[e.negate(),o[0]];var p=Math.abs(f);if(p<t){r=O(s,p),h=c(r[0]);var v=r[1];return e.sign&&(v=-v),typeof h=="number"?(e.sign!==i.sign&&(h=-h),[new a(h),new a(v)]):[new u(h,e.sign!==i.sign),new a(v)]}f=l(p)}var m=_(s,f);if(m=
 ==-1)return[o[0],e];if(m===0)return[o[e.sign===i.sign?1:-1],o[0]];s.length+f.length<=200?r=L(s,f):r=A(s,f),h=r[0];var g=e.sign!==i.sign,y=r[1],b=e.sign;return typeof h=="number"?(g&&(h=-h),h=new a(h)):h=new u(h,g),typeof y=="number"?(b&&(y=-y),y=new a(y)):y=new u(y,b),[h,y]}function _(e,t){if(e.length!==t.length)return e.length>t.length?1:-1;for(var n=e.length-1;n>=0;n--)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}function D(e){var t=e.abs();if(t.isUnit())return!1;if(t.equals(2)||t.equals(3)||t.equals(5))return!0;if(t.isEven()||t.isDivisibleBy(3)||t.isDivisibleBy(5))return!1;if(t.lesser(25))return!0}function j(e){return(typeof e=="number"||typeof e=="string")&&+Math.abs(e)<=t||e instanceof u&&e.value.length<=1}function F(e,t,n){t=Y(t);var r=e.isNegative(),i=t.isNegative(),s=r?e.not():e,o=i?t.not():t,u=[],a=[],f=!1,l=!1;while(!f||!l)s.isZero()?(f=!0,u.push(r?1:0)):r?u.push(s.isEven()?1:0):u.push(s.isEven()?0:1),o.isZero()?(l=!0,a.push(i?1:0)):i?a.push(o.isEven()?1:0):a.push(o.isEve
 n()?0:1),s=s.over(2),o=o.over(2);var c=[];for(var h=0;h<u.length;h++)c.push(n(u[h],a[h]));var p=bigInt(c.pop()).negate().times(bigInt(2).pow(c.length));while(c.length)p=p.add(bigInt(c.pop()).times(bigInt(2).pow(c.length)));return p}function R(e){var n=e.value,r=typeof n=="number"?n|I:n[0]+n[1]*t|q;return r&-r}function U(e,t){return e=Y(e),t=Y(t),e.greater(t)?e:t}function z(e,t){return e=Y(e),t=Y(t),e.lesser(t)?e:t}function W(e,t){e=Y(e).abs(),t=Y(t).abs();if(e.equals(t))return e;if(e.isZero())return t;if(t.isZero())return e;var n=o[1],r,i;while(e.isEven()&&t.isEven())r=Math.min(R(e),R(t)),e=e.divide(r),t=t.divide(r),n=n.multiply(r);while(e.isEven())e=e.divide(R(e));do{while(t.isEven())t=t.divide(R(t));e.greater(t)&&(i=t,t=e,e=i),t=t.subtract(e)}while(!t.isZero());return n.isUnit()?e:e.multiply(n)}function X(e,t){return e=Y(e).abs(),t=Y(t).abs(),e.divide(W(e,t)).multiply(t)}function V(e,n){e=Y(e),n=Y(n);var r=z(e,n),i=U(e,n),s=i.subtract(r);if(s.isSmall)return r.add(Math.round(Math.r
 andom()*s));var o=s.value.length-1,f=[],l=!0;for(var h=o;h>=0;h--){var p=l?s.value[h]:t,v=d(Math.random()*p);f.unshift(v),v<p&&(l=!1)}return f=c(f),r.add(typeof f=="number"?new a(f):new u(f,!1))}function J(e){var t=e.value;return typeof t=="number"&&(t=[t]),t.length===1&&t[0]<=35?"0123456789abcdefghijklmnopqrstuvwxyz".charAt(t[0]):"<"+t+">"}function K(e,t){t=bigInt(t);if(t.isZero()){if(e.isZero())return"0";throw new Error("Cannot convert nonzero numbers to base 0.")}if(t.equals(-1))return e.isZero()?"0":e.isNegative()?(new Array(1-e)).join("10"):"1"+(new Array(+e)).join("01");var n="";e.isNegative()&&t.isPositive()&&(n="-",e=e.abs());if(t.equals(1))return e.isZero()?"0":n+(new Array(+e+1)).join(1);var r=[],i=e,s;while(i.isNegative()||i.compareAbs(t)>=0){s=i.divmod(t),i=s.quotient;var o=s.remainder;o.isNegative()&&(o=t.minus(o).abs(),i=i.next()),r.push(J(o))}return r.push(J(i)),n+r.reverse().join("")}function Q(e){if(f(+e)){var t=+e;if(t===d(t))return new a(t);throw"Invalid integer: 
 "+e}var r=e[0]==="-";r&&(e=e.slice(1));var i=e.split(/e/i);if(i.length>2)throw new Error("Invalid integer: "+i.join("e"));if(i.length===2){var s=i[1];s[0]==="+"&&(s=s.slice(1)),s=+s;if(s!==d(s)||!f(s))throw new Error("Invalid integer: "+s+" is not a valid exponent.");var o=i[0],l=o.indexOf(".");l>=0&&(s-=o.length-l-1,o=o.slice(0,l)+o.slice(l+1));if(s<0)throw new Error("Cannot include negative exponent part for integers");o+=(new Array(s+1)).join("0"),e=o}var c=/^([0-9][0-9]*)$/.test(e);if(!c)throw new Error("Invalid integer: "+e);var p=[],v=e.length,m=n,g=v-m;while(v>0)p.push(+e.slice(g,v)),g-=m,g<0&&(g=0),v-=m;return h(p),new u(p,r)}function G(e){if(f(e)){if(e!==d(e))throw new Error(e+" is not an integer.");return new a(e)}return Q(e.toString())}function Y(e){return typeof e=="number"?G(e):typeof e=="string"?Q(e):e}var t=1e7,n=7,r=9007199254740992,i=l(r),s=Math.log(r);u.prototype=Object.create(o.prototype),a.prototype=Object.create(o.prototype),u.prototype.add=function(e){var t,n=Y
 (e);if(this.sign!==n.sign)return this.subtract(n.negate());var r=this.value,i=n.value;return n.isSmall?new u(g(r,Math.abs(i)),this.sign):new u(m(r,i),this.sign)},u.prototype.plus=u.prototype.add,a.prototype.add=function(e){var t=Y(e),n=this.value;if(n<0!==t.sign)return this.subtract(t.negate());var r=t.value;if(t.isSmall){if(f(n+r))return new a(n+r);r=l(Math.abs(r))}return new u(g(r,Math.abs(n)),n<0)},a.prototype.plus=a.prototype.add,u.prototype.subtract=function(e){var t=Y(e);if(this.sign!==t.sign)return this.add(t.negate());var n=this.value,r=t.value;return t.isSmall?w(n,Math.abs(r),this.sign):b(n,r,this.sign)},u.prototype.minus=u.prototype.subtract,a.prototype.subtract=function(e){var t=Y(e),n=this.value;if(n<0!==t.sign)return this.add(t.negate());var r=t.value;return t.isSmall?new a(n-r):w(r,Math.abs(n),n>=0)},a.prototype.minus=a.prototype.subtract,u.prototype.negate=function(){return new u(this.value,!this.sign)},a.prototype.negate=function(){var e=this.sign,t=new a(-this.value
 );return t.sign=!e,t},u.prototype.abs=function(){return new u(this.value,!1)},a.prototype.abs=function(){return new a(Math.abs(this.value))},u.prototype.multiply=function(e){var n,r=Y(e),i=this.value,s=r.value,a=this.sign!==r.sign,f;if(r.isSmall){if(s===0)return o[0];if(s===1)return this;if(s===-1)return this.negate();f=Math.abs(s);if(f<t)return new u(S(i,f),a);s=l(f)}return N(i.length,s.length)?new u(T(i,s),a):new u(E(i,s),a)},u.prototype.times=u.prototype.multiply,a.prototype._multiplyBySmall=function(e){return f(e.value*this.value)?new a(e.value*this.value):C(Math.abs(e.value),l(Math.abs(this.value)),this.sign!==e.sign)},u.prototype._multiplyBySmall=function(e){return e.value===0?o[0]:e.value===1?this:e.value===-1?this.negate():C(Math.abs(e.value),this.value,this.sign!==e.sign)},a.prototype.multiply=function(e){return Y(e)._multiplyBySmall(this)},a.prototype.times=a.prototype.multiply,u.prototype.square=function(){return new u(k(this.value),!1)},a.prototype.square=function(){var 
 e=this.value*this.value;return f(e)?new a(e):new u(k(l(Math.abs(this.value))),!1)},u.prototype.divmod=function(e){var t=M(this,e);return{quotient:t[0],remainder:t[1]}},a.prototype.divmod=u.prototype.divmod,u.prototype.divide=function(e){return M(this,e)[0]},a.prototype.over=a.prototype.divide=u.prototype.over=u.prototype.divide,u.prototype.mod=function(e){return M(this,e)[1]},a.prototype.remainder=a.prototype.mod=u.prototype.remainder=u.prototype.mod,u.prototype.pow=function(e){var t=Y(e),n=this.value,r=t.value,i,s,u;if(r===0)return o[1];if(n===0)return o[0];if(n===1)return o[1];if(n===-1)return t.isEven()?o[1]:o[-1];if(t.sign)return o[0];if(!t.isSmall)throw new Error("The exponent "+t.toString()+" is too large.");if(this.isSmall&&f(i=Math.pow(n,r)))return new a(d(i));s=this,u=o[1];for(;;){r&!0&&(u=u.times(s),--r);if(r===0)break;r/=2,s=s.square()}return u},a.prototype.pow=u.prototype.pow,u.prototype.modPow=function(e,t){e=Y(e),t=Y(t);if(t.isZero())throw new Error("Cannot take modPow
  with modulus 0");var n=o[1],r=this.mod(t);while(e.isPositive()){if(r.isZero())return o[0];e.isOdd()&&(n=n.multiply(r).mod(t)),e=e.divide(2),r=r.square().mod(t)}return n},a.prototype.modPow=u.prototype.modPow,u.prototype.compareAbs=function(e){var t=Y(e),n=this.value,r=t.value;return t.isSmall?1:_(n,r)},a.prototype.compareAbs=function(e){var t=Y(e),n=Math.abs(this.value),r=t.value;return t.isSmall?(r=Math.abs(r),n===r?0:n>r?1:-1):-1},u.prototype.compare=function(e){if(e===Infinity)return-1;if(e===-Infinity)return 1;var t=Y(e),n=this.value,r=t.value;return this.sign!==t.sign?t.sign?1:-1:t.isSmall?this.sign?-1:1:_(n,r)*(this.sign?-1:1)},u.prototype.compareTo=u.prototype.compare,a.prototype.compare=function(e){if(e===Infinity)return-1;if(e===-Infinity)return 1;var t=Y(e),n=this.value,r=t.value;return t.isSmall?n==r?0:n>r?1:-1:n<0!==t.sign?n<0?-1:1:n<0?1:-1},a.prototype.compareTo=a.prototype.compare,u.prototype.equals=function(e){return this.compare(e)===0},a.prototype.eq=a.prototype.eq
 uals=u.prototype.eq=u.prototype.equals,u.prototype.notEquals=function(e){return this.compare(e)!==0},a.prototype.neq=a.prototype.notEquals=u.prototype.neq=u.prototype.notEquals,u.prototype.greater=function(e){return this.compare(e)>0},a.prototype.gt=a.prototype.greater=u.prototype.gt=u.prototype.greater,u.prototype.lesser=function(e){return this.compare(e)<0},a.prototype.lt=a.prototype.lesser=u.prototype.lt=u.prototype.lesser,u.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},a.prototype.geq=a.prototype.greaterOrEquals=u.prototype.geq=u.prototype.greaterOrEquals,u.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},a.prototype.leq=a.prototype.lesserOrEquals=u.prototype.leq=u.prototype.lesserOrEquals,u.prototype.isEven=function(){return(this.value[0]&1)===0},a.prototype.isEven=function(){return(this.value&1)===0},u.prototype.isOdd=function(){return(this.value[0]&1)===1},a.prototype.isOdd=function(){return(this.value&1)===1},u.prototype.isPositive=function(
 ){return!this.sign},a.prototype.isPositive=function(){return this.value>0},u.prototype.isNegative=function(){return this.sign},a.prototype.isNegative=function(){return this.value<0},u.prototype.isUnit=function(){return!1},a.prototype.isUnit=function(){return Math.abs(this.value)===1},u.prototype.isZero=function(){return!1},a.prototype.isZero=function(){return this.value===0},u.prototype.isDivisibleBy=function(e){var t=Y(e),n=t.value;return n===0?!1:n===1?!0:n===2?this.isEven():this.mod(t).equals(o[0])},a.prototype.isDivisibleBy=u.prototype.isDivisibleBy,u.prototype.isPrime=function(){var t=D(this);if(t!==e)return t;var n=this.abs(),r=n.prev(),i=[2,3,5,7,11,13,17,19],s=r,u,a,f,l;while(s.isEven())s=s.divide(2);for(f=0;f<i.length;f++){l=bigInt(i[f]).modPow(s,n);if(l.equals(o[1])||l.equals(r))continue;for(a=!0,u=s;a&&u.lesser(r);u=u.multiply(2))l=l.square().mod(n),l.equals(r)&&(a=!1);if(a)return!1}return!0},a.prototype.isPrime=u.prototype.isPrime,u.prototype.isProbablePrime=function(t){
 var n=D(this);if(n!==e)return n;var r=this.abs(),i=t===e?5:t;for(var s=0;s<i;s++){var o=bigInt.randBetween(2,r.minus(2));if(!o.modPow(r.prev(),r).isUnit())return!1}return!0},a.prototype.isProbablePrime=u.prototype.isProbablePrime,u.prototype.modInv=function(e){var t=bigInt.zero,n=bigInt.one,r=Y(e),i=this.abs(),s,o,u;while(!i.equals(bigInt.zero))s=r.divide(i),o=t,u=r,t=n,r=i,n=o.subtract(s.multiply(n)),i=u.subtract(s.multiply(i));return t.compare(0)===-1&&(t=t.add(e)),t},a.prototype.modInv=u.prototype.modInv,u.prototype.next=function(){var e=this.value;return this.sign?w(e,1,this.sign):new u(g(e,1),this.sign)},a.prototype.next=function(){var e=this.value;return e+1<r?new a(e+1):new u(i,!1)},u.prototype.prev=function(){var e=this.value;return this.sign?new u(g(e,1),!0):w(e,1,this.sign)},a.prototype.prev=function(){var e=this.value;return e-1>-r?new a(e-1):new u(i,!0)};var P=[1];while(P[P.length-1]<=t)P.push(2*P[P.length-1]);var H=P.length,B=P[H-1];u.prototype.shiftLeft=function(e){if(
 !j(e))throw new Error(String(e)+" is too large for shifting.");e=+e;if(e<0)return this.shiftRight(-e);var t=this;while(e>=H)t=t.multiply(B),e-=H-1;return t.multiply(P[e])},a.prototype.shiftLeft=u.prototype.shiftLeft,u.prototype.shiftRight=function(e){var t;if(!j(e))throw new Error(String(e)+" is too large for shifting.");e=+e;if(e<0)return this.shiftLeft(-e);var n=this;while(e>=H){if(n.isZero())return n;t=M(n,B),n=t[1].isNegative()?t[0].prev():t[0],e-=H-1}return t=M(n,P[e]),t[1].isNegative()?t[0].prev():t[0]},a.prototype.shiftRight=u.prototype.shiftRight,u.prototype.not=function(){return this.negate().prev()},a.prototype.not=u.prototype.not,u.prototype.and=function(e){return F(this,e,function(e,t){return e&t})},a.prototype.and=u.prototype.and,u.prototype.or=function(e){return F(this,e,function(e,t){return e|t})},a.prototype.or=u.prototype.or,u.prototype.xor=function(e){return F(this,e,function(e,t){return e^t})},a.prototype.xor=u.prototype.xor;var I=1<<30,q=(t&-t)*(t&-t)|I,$=functio
 n(e,t){var n=o[0],r=o[1],i=e.length;if(2<=t&&t<=36&&i<=s/Math.log(t))return new a(parseInt(e,t));t=Y(t);var u=[],f,l=e[0]==="-";for(f=l?1:0;f<e.length;f++){var c=e[f].toLowerCase(),h=c.charCodeAt(0);if(48<=h&&h<=57)u.push(Y(c));else if(97<=h&&h<=122)u.push(Y(c.charCodeAt(0)-87));else{if(c!=="<")throw new Error(c+" is not a valid character");var p=f;do f++;while(e[f]!==">");u.push(Y(e.slice(p+1,f)))}}u.reverse();for(f=0;f<u.length;f++)n=n.add(u[f].times(r)),r=r.times(t);return l?n.negate():n};u.prototype.toString=function(t){t===e&&(t=10);if(t!==10)return K(this,t);var n=this.value,r=n.length,i=String(n[--r]),s="0000000",o;while(--r>=0)o=String(n[r]),i+=s.slice(o.length)+o;var u=this.sign?"-":"";return u+i},a.prototype.toString=function(t){return t===e&&(t=10),t!=10?K(this,t):String(this.value)},u.prototype.valueOf=function(){return+this.toString()},u.prototype.toJSNumber=u.prototype.valueOf,a.prototype.valueOf=function(){return this.value},a.prototype.toJSNumber=a.prototype.valueOf;
 for(var Z=0;Z<1e3;Z++)o[Z]=new a(Z),Z>0&&(o[-Z]=new a(-Z));return o.one=o[1],o.zero=o[0],o.minusOne=o[-1],o.max=U,o.min=z,o.gcd=W,o.lcm=X,o.isInstance=function(e){return e instanceof u||e instanceof a},o.randBetween=V,o}();typeof module!="undefined"&&module.hasOwnProperty("exports")&&(module.exports=bigInt);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/LICENSE b/node_modules/big-integer/LICENSE
deleted file mode 100644
index cf1ab25..0000000
--- a/node_modules/big-integer/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-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 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.
-
-For more information, please refer to <http://unlicense.org>

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/README.md
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/README.md b/node_modules/big-integer/README.md
index 6d9ee85..51eb657 100644
--- a/node_modules/big-integer/README.md
+++ b/node_modules/big-integer/README.md
@@ -280,6 +280,13 @@ Performs division and returns the remainder, disregarding the quotient. The sign
  
 [View benchmarks for this method](http://peterolson.github.io/BigInteger.js/benchmark/#Division)
 
+#### `modInv(mod)`
+
+Finds the [multiplicative inverse](https://en.wikipedia.org/wiki/Modular_multiplicative_inverse) of the number modulo `mod`.
+
+ - `bigInt(3).modInv(11)` => `4`
+ - `bigInt(42).modInv(2017)` => `1969`
+
 #### `modPow(exp, mod)`
 
 Takes the number to the power `exp` modulo `mod`.

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/bower.json
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/bower.json b/node_modules/big-integer/bower.json
new file mode 100644
index 0000000..c7c7291
--- /dev/null
+++ b/node_modules/big-integer/bower.json
@@ -0,0 +1,30 @@
+{
+  "name": "big-integer",
+  "description": "An arbitrary length integer library for Javascript",
+  "main": "./BigInteger.js",
+  "authors": [
+    "Peter Olson"
+  ],
+  "license": "Unlicense",
+  "keywords": [
+    "math",
+    "big",
+    "bignum",
+    "bigint",
+    "biginteger",
+    "integer",
+    "arbitrary",
+    "precision",
+    "arithmetic"
+  ],
+  "homepage": "https://github.com/peterolson/BigInteger.js",
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "coverage",
+    "spec",
+    "tests"
+  ]
+}

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/big-integer/package.json
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/package.json b/node_modules/big-integer/package.json
index fc85923..5bbc4e9 100644
--- a/node_modules/big-integer/package.json
+++ b/node_modules/big-integer/package.json
@@ -10,24 +10,24 @@
         "spec": ">=1.6.7 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\bplist-parser"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/bplist-parser"
     ]
   ],
   "_from": "big-integer@>=1.6.7 <2.0.0",
-  "_id": "big-integer@1.6.15",
+  "_id": "big-integer@1.6.16",
   "_inCache": true,
   "_installable": true,
   "_location": "/big-integer",
-  "_nodeVersion": "0.12.3",
+  "_nodeVersion": "4.4.5",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/big-integer-1.6.15.tgz_1460079231162_0.7087579960934818"
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/big-integer-1.6.16.tgz_1473665148825_0.5824211346916854"
   },
   "_npmUser": {
     "name": "peterolson",
     "email": "peter.e.c.olson+npm@gmail.com"
   },
-  "_npmVersion": "2.9.1",
+  "_npmVersion": "2.15.5",
   "_phantomChildren": {},
   "_requested": {
     "raw": "big-integer@^1.6.7",
@@ -41,11 +41,11 @@
   "_requiredBy": [
     "/bplist-parser"
   ],
-  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.15.tgz",
-  "_shasum": "33d27d3b7388dfcc4b86d3130c10740cec01fb9e",
+  "_resolved": "http://registry.npmjs.org/big-integer/-/big-integer-1.6.16.tgz",
+  "_shasum": "0ca30b58013db46b10084a09242ca1d8954724cc",
   "_shrinkwrap": null,
   "_spec": "big-integer@^1.6.7",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\bplist-parser",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/bplist-parser",
   "author": {
     "name": "Peter Olson",
     "email": "peter.e.c.olson+npm@gmail.com"
@@ -68,13 +68,13 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "33d27d3b7388dfcc4b86d3130c10740cec01fb9e",
-    "tarball": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.15.tgz"
+    "shasum": "0ca30b58013db46b10084a09242ca1d8954724cc",
+    "tarball": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.16.tgz"
   },
   "engines": {
     "node": ">=0.6"
   },
-  "gitHead": "cda5bcce74c3a4eb34951201d50c1b8776a56eca",
+  "gitHead": "09b50ab4e701a2ec4d403fa3ecf12ae327227190",
   "homepage": "https://github.com/peterolson/BigInteger.js#readme",
   "keywords": [
     "math",
@@ -105,5 +105,5 @@
   "scripts": {
     "test": "karma start my.conf.js"
   },
-  "version": "1.6.15"
+  "version": "1.6.16"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/bplist-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/bplist-parser/package.json b/node_modules/bplist-parser/package.json
index 90562fc..e792a0d 100644
--- a/node_modules/bplist-parser/package.json
+++ b/node_modules/bplist-parser/package.json
@@ -10,7 +10,7 @@
         "spec": ">=0.1.0 <0.2.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\cordova-common"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "bplist-parser@>=0.1.0 <0.2.0",
@@ -37,11 +37,11 @@
   "_requiredBy": [
     "/cordova-common"
   ],
-  "_resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
+  "_resolved": "http://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
   "_shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
   "_shrinkwrap": null,
   "_spec": "bplist-parser@^0.1.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Joe Ferner",
     "email": "joe.ferner@nearinfinity.com"

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/bplist-parser/test/utf16_chinese.plist
----------------------------------------------------------------------
diff --git a/node_modules/bplist-parser/test/utf16_chinese.plist b/node_modules/bplist-parser/test/utf16_chinese.plist
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/brace-expansion/package.json
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index 1b5d417..4dac7ac 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -10,7 +10,7 @@
         "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\minimatch"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/minimatch"
     ]
   ],
   "_from": "brace-expansion@>=1.0.0 <2.0.0",
@@ -41,11 +41,11 @@
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
+  "_resolved": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
   "_shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9",
   "_shrinkwrap": null,
   "_spec": "brace-expansion@^1.0.0",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\minimatch",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/minimatch",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/concat-map/package.json
----------------------------------------------------------------------
diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json
index c2fea30..e6fa81c 100644
--- a/node_modules/concat-map/package.json
+++ b/node_modules/concat-map/package.json
@@ -10,7 +10,7 @@
         "spec": "0.0.1",
         "type": "version"
       },
-      "d:\\cordova\\cordova-windows\\node_modules\\brace-expansion"
+      "/Users/steveng/repo/cordova/cordova-windows/node_modules/brace-expansion"
     ]
   ],
   "_from": "concat-map@0.0.1",
@@ -36,11 +36,11 @@
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+  "_resolved": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
   "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
   "_shrinkwrap": null,
   "_spec": "concat-map@0.0.1",
-  "_where": "d:\\cordova\\cordova-windows\\node_modules\\brace-expansion",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows/node_modules/brace-expansion",
   "author": {
     "name": "James Halliday",
     "email": "mail@substack.net",

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/cordova-common/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 01037d4..02dbcee 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,6 +20,19 @@
 -->
 # Cordova-common Release Notes
 
+### 1.5.1 (Oct 12, 2016)
+* [CB-12002](https://issues.apache.org/jira/browse/CB-12002) Add `getAllowIntents()` to `ConfigParser`
+* [CB-11998](https://issues.apache.org/jira/browse/CB-11998) `cordova platform add` error with `cordova-common@1.5.0`
+
+### 1.5.0 (Oct 06, 2016)
+* [CB-11776](https://issues.apache.org/jira/browse/CB-11776) Add test case for different `edit-config` targets
+* [CB-11908](https://issues.apache.org/jira/browse/CB-11908) Add `edit-config` to `config.xml`
+* [CB-11936](https://issues.apache.org/jira/browse/CB-11936) Support four new **App Transport Security (ATS)** keys
+* update `config.xml` location if it is a **Android Studio** project.
+* use `array` methods and `object.keys` for iterating. avoiding `for-in` loops
+* [CB-11517](https://issues.apache.org/jira/browse/CB-11517) Allow `.folder` matches
+* [CB-11776](https://issues.apache.org/jira/browse/CB-11776) check `edit-config` target exists
+
 ### 1.4.1 (Aug 09, 2016)
 * Add general purpose `ConfigParser.getAttribute` API
 * [CB-11653](https://issues.apache.org/jira/browse/CB-11653) moved `findProjectRoot` from `cordova-lib` to `cordova-common`
@@ -27,6 +40,9 @@
 * [CB-11645](https://issues.apache.org/jira/browse/CB-11645) added check to see if `getEditConfig` exists before trying to use it
 * [CB-9825](https://issues.apache.org/jira/browse/CB-9825) framework tag spec parsing
 
+### 1.4.0 (Jul 12, 2016)
+* [CB-11023](https://issues.apache.org/jira/browse/CB-11023) Add edit-config functionality
+
 ### 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

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/cordova-common/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index aa0ee4c..48da932 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -2,50 +2,50 @@
   "_args": [
     [
       {
-        "raw": "cordova-common@^1.4.1",
+        "raw": "cordova-common@^1.5.1",
         "scope": null,
         "escapedName": "cordova-common",
         "name": "cordova-common",
-        "rawSpec": "^1.4.1",
-        "spec": ">=1.4.1 <2.0.0",
+        "rawSpec": "^1.5.1",
+        "spec": ">=1.5.1 <2.0.0",
         "type": "range"
       },
-      "d:\\cordova\\cordova-windows"
+      "/Users/steveng/repo/cordova/cordova-windows"
     ]
   ],
-  "_from": "cordova-common@>=1.4.1 <2.0.0",
-  "_id": "cordova-common@1.4.1",
+  "_from": "cordova-common@>=1.5.1 <2.0.0",
+  "_id": "cordova-common@1.5.1",
   "_inCache": true,
   "_installable": true,
   "_location": "/cordova-common",
-  "_nodeVersion": "6.2.2",
+  "_nodeVersion": "6.6.0",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/cordova-common-1.4.1.tgz_1471306335501_0.6723270947113633"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/cordova-common-1.5.1.tgz_1476725179180_0.39604957425035536"
   },
   "_npmUser": {
     "name": "stevegill",
     "email": "stevengill97@gmail.com"
   },
-  "_npmVersion": "3.9.5",
+  "_npmVersion": "3.10.3",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "cordova-common@^1.4.1",
+    "raw": "cordova-common@^1.5.1",
     "scope": null,
     "escapedName": "cordova-common",
     "name": "cordova-common",
-    "rawSpec": "^1.4.1",
-    "spec": ">=1.4.1 <2.0.0",
+    "rawSpec": "^1.5.1",
+    "spec": ">=1.5.1 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.1.tgz",
-  "_shasum": "8b4f07b3199b398fff553b32bff66676ecd30ab9",
+  "_resolved": "file:cordova-dist/tools/cordova-common-1.5.1.tgz",
+  "_shasum": "6770de0d6200ad6f94a1abe8939b5bd9ece139e3",
   "_shrinkwrap": null,
-  "_spec": "cordova-common@^1.4.1",
-  "_where": "d:\\cordova\\cordova-windows",
+  "_spec": "cordova-common@^1.5.1",
+  "_where": "/Users/steveng/repo/cordova/cordova-windows",
   "author": {
     "name": "Apache Software Foundation"
   },
@@ -79,8 +79,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "8b4f07b3199b398fff553b32bff66676ecd30ab9",
-    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.1.tgz"
+    "shasum": "6770de0d6200ad6f94a1abe8939b5bd9ece139e3",
+    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.5.1.tgz"
   },
   "engineStrict": true,
   "engines": {
@@ -127,5 +127,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.4.1"
+  "version": "1.5.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
index e5b09a7..6a80730 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
@@ -148,6 +148,11 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
     }
     else {
         var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, plugin_force);
+
+        if (isConflictingInfo.conflictWithConfigxml) {
+            throw new Error(pluginInfo.id +
+                ' cannot be added. <edit-config> changes in this plugin conflicts with <edit-config> changes in config.xml. Conflicts must be resolved before plugin can be added.');
+        }
         if (plugin_force) {
             CordovaLogger.get().log(CordovaLogger.WARN, '--force is used. edit-config will overwrite conflicts if any. Conflicting plugins may not work as expected.');
 
@@ -170,7 +175,67 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
             config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
         }
     }
-    // global munge looks at all plugins' changes to config files
+
+    self = munge_helper(should_increment, self, platform_config, config_munge);
+
+    // Move to installed/dependent_plugins
+    self.platformJson.addPlugin(pluginInfo.id, plugin_vars || {}, is_top_level);
+    return self;
+}
+
+
+// Handle edit-config changes from config.xml
+PlatformMunger.prototype.add_config_changes = add_config_changes;
+function add_config_changes(config, should_increment) {
+    var self = this;
+    var platform_config = self.platformJson.root;
+
+    var config_munge;
+    var edit_config_changes = null;
+    if(config.getEditConfigs) {
+        edit_config_changes = config.getEditConfigs(self.platform);
+    }
+
+    if (!edit_config_changes || edit_config_changes.length === 0) {
+        // There are no edit-config changes to add, return here
+        return self;
+    }
+    else {
+        var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, true /*always force overwrite other edit-config*/);
+
+        if(isConflictingInfo.conflictFound) {
+            var conflict_munge;
+            var conflict_file;
+
+            if (Object.keys(isConflictingInfo.configxmlMunge.files).length !== 0) {
+                // silently remove conflicting config.xml munges so new munges can be added
+                conflict_munge = mungeutil.decrement_munge(platform_config.config_munge, isConflictingInfo.configxmlMunge);
+                for (conflict_file in conflict_munge.files) {
+                    self.apply_file_munge(conflict_file, conflict_munge.files[conflict_file], /* remove = */ true);
+                }
+            }
+            if (Object.keys(isConflictingInfo.conflictingMunge.files).length !== 0) {
+                CordovaLogger.get().log(CordovaLogger.WARN, 'Conflict found, edit-config changes from config.xml will overwrite plugin.xml changes');
+
+                // remove conflicting plugin.xml munges
+                conflict_munge = mungeutil.decrement_munge(platform_config.config_munge, isConflictingInfo.conflictingMunge);
+                for (conflict_file in conflict_munge.files) {
+                    self.apply_file_munge(conflict_file, conflict_munge.files[conflict_file], /* remove = */ true);
+                }
+            }
+        }
+        // Add config.xml edit-config munges
+        config_munge = self.generate_config_xml_munge(config, edit_config_changes, 'config.xml');
+    }
+
+    self = munge_helper(should_increment, self, platform_config, config_munge);
+
+    // Move to installed/dependent_plugins
+    return self;
+}
+
+function munge_helper(should_increment, self, platform_config, config_munge) {
+    // global munge looks at all changes to config files
 
     // TODO: The should_increment param is only used by cordova-cli and is going away soon.
     // If should_increment is set to false, avoid modifying the global_munge (use clone)
@@ -196,11 +261,10 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
             });
             /* jshint loopfunc:false */
         }
+
         self.apply_file_munge(file, munge.files[file]);
     }
 
-    // Move to installed/dependent_plugins
-    self.platformJson.addPlugin(pluginInfo.id, plugin_vars || {}, is_top_level);
     return self;
 }
 
@@ -221,6 +285,39 @@ function reapply_global_munge () {
     return self;
 }
 
+// generate_plugin_config_munge
+// Generate the munge object from config.xml
+PlatformMunger.prototype.generate_config_xml_munge = generate_config_xml_munge;
+function generate_config_xml_munge(config, edit_config_changes, type) {
+
+    var munge = { files: {} };
+    var changes = edit_config_changes;
+    var id;
+
+    if(!changes) {
+        return munge;
+    }
+
+    if (type === 'config.xml') {
+        id = type;
+    }
+    else {
+        id = config.id;
+    }
+
+    changes.forEach(function(change) {
+        change.xmls.forEach(function(xml) {
+            // 1. stringify each xml
+            var stringified = (new et.ElementTree(xml)).write({xml_declaration:false});
+            // 2. add into munge
+            if (change.mode) {
+                mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, id: id });
+            }
+        });
+    });
+    return munge;
+}
+
 
 // generate_plugin_config_munge
 // Generate the munge object from plugin.xml + vars
@@ -335,7 +432,9 @@ function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) {
             }
             // 2. add into munge
             if (change.mode) {
-                mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, plugin: pluginInfo.id });
+                if (change.mode !== 'remove') {
+                    mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, plugin: pluginInfo.id });
+                }
             }
             else {
                 mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after });
@@ -348,7 +447,9 @@ function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) {
 function is_conflicting(editchanges, config_munge, self, force) {
     var files = config_munge.files;
     var conflictFound = false;
+    var conflictWithConfigxml = false;
     var conflictingMunge = { files: {} };
+    var configxmlMunge = { files: {} };
     var conflictingParent;
     var conflictingPlugin;
 
@@ -378,23 +479,43 @@ function is_conflicting(editchanges, config_munge, self, force) {
                 conflictingParent = editchange.target;
             }
 
-            if (target.length !== 0) {
-                // conflict has been found, exit and throw an error
+            if (target && target.length !== 0) {
+                // conflict has been found
                 conflictFound = true;
-                if (!force) {
-                    // since there has been modifications to the attributes at this target,
-                    // the current plugin should not modify the attributes
-                    conflictingPlugin = target[0].plugin;
-                    return;
+
+                if (editchange.id === 'config.xml') {
+                    if (target[0].id === 'config.xml') {
+                        // Keep track of config.xml/config.xml edit-config conflicts
+                        mungeutil.deep_add(configxmlMunge, editchange.file, conflictingParent, target[0]);
+                    }
+                    else {
+                        // Keep track of config.xml x plugin.xml edit-config conflicts
+                        mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
+                    }
                 }
+                else {
+                    if (target[0].id === 'config.xml') {
+                        // plugin.xml cannot overwrite config.xml changes even if --force is used
+                        conflictWithConfigxml = true;
+                        return;
+                    }
 
-                // need to find all conflicts when --force is used, track conflicting munges
-                mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
+                    if (force) {
+                        // Need to find all conflicts when --force is used, track conflicting munges
+                        mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
+                    }
+                    else {
+                        // plugin cannot overwrite other plugin changes without --force
+                        conflictingPlugin = target[0].plugin;
+                        return;
+                    }
+                }
             }
         }
     });
 
-    return {conflictFound: conflictFound, conflictingPlugin: conflictingPlugin, conflictingMunge: conflictingMunge};
+    return {conflictFound: conflictFound, conflictingPlugin: conflictingPlugin, conflictingMunge: conflictingMunge,
+        configxmlMunge: configxmlMunge, conflictWithConfigxml:conflictWithConfigxml};
 }
 
 // Go over the prepare queue and apply the config munges for each plugin

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/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 179d54d..4a58008 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
@@ -110,6 +110,9 @@ ConfigFile.prototype.graft_child = function ConfigFile_graft_child(selector, xml
             case 'overwrite':
                 result = modules.xml_helpers.graftXMLOverwrite(self.data, xml_to_graft, selector, xml_child);
                 break;
+            case 'remove':
+                result= true;
+                break;
             default:
                 result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
         }
@@ -137,6 +140,9 @@ ConfigFile.prototype.prune_child = function ConfigFile_prune_child(selector, xml
             case 'overwrite':
                 result = modules.xml_helpers.pruneXMLRestore(self.data, selector, xml_child);
                 break;
+            case 'remove':
+                result = modules.xml_helpers.prunXMLRemove(self.data, selector, xml_to_graft);
+                break;
             default:
                 result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector);
         }
@@ -193,6 +199,12 @@ function resolveConfigFilePath(project_dir, platform, file) {
         return filepath;
     }
 
+    // XXX this checks for android studio projects
+    // only if none of the options above are satisfied does this get called
+    if(platform === 'android' && !fs.existsSync(filepath)) {
+      filepath = path.join(project_dir, 'app', 'src', 'main', 'res', 'xml', 'config.xml');
+    }
+
     // None of the special cases matched, returning project_dir/file.
     return filepath;
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
index 195164a..6e74ce3 100644
--- a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
+++ b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
@@ -448,10 +448,19 @@ ConfigParser.prototype = {
         return accesses.map(function(access){
             var minimum_tls_version = access.attrib['minimum-tls-version']; /* String */
             var requires_forward_secrecy = access.attrib['requires-forward-secrecy']; /* Boolean */
+            var requires_certificate_transparency = access.attrib['requires-certificate-transparency']; /* Boolean */
+            var allows_arbitrary_loads_in_web_content = access.attrib['allows-arbitrary-loads-in-web-content']; /* Boolean */
+            var allows_arbitrary_loads_in_media = access.attrib['allows-arbitrary-loads-in-media']; /* Boolean */
+            var allows_local_networking = access.attrib['allows-local-networking']; /* Boolean */
+            
             return {
                 'origin': access.attrib.origin,
                 'minimum_tls_version': minimum_tls_version,
-                'requires_forward_secrecy' : requires_forward_secrecy
+                'requires_forward_secrecy' : requires_forward_secrecy,
+                'requires_certificate_transparency' : requires_certificate_transparency,
+                'allows_arbitrary_loads_in_web_content' : allows_arbitrary_loads_in_web_content,
+                'allows_arbitrary_loads_in_media' : allows_arbitrary_loads_in_media,
+                'allows_local_networking' : allows_local_networking
             };
         });
     },
@@ -461,13 +470,44 @@ ConfigParser.prototype = {
         return allow_navigations.map(function(allow_navigation){
             var minimum_tls_version = allow_navigation.attrib['minimum-tls-version']; /* String */
             var requires_forward_secrecy = allow_navigation.attrib['requires-forward-secrecy']; /* Boolean */
+            var requires_certificate_transparency = allow_navigation.attrib['requires-certificate-transparency']; /* Boolean */
+
             return {
                 'href': allow_navigation.attrib.href,
                 'minimum_tls_version': minimum_tls_version,
-                'requires_forward_secrecy' : requires_forward_secrecy
+                'requires_forward_secrecy' : requires_forward_secrecy,
+                'requires_certificate_transparency' : requires_certificate_transparency
             };
         });
     },
+    /* Get all the allow-intent tags */
+    getAllowIntents: function() {
+        var allow_intents = this.doc.findall('./allow-intent');
+        return allow_intents.map(function(allow_intent){
+            return {
+                'href': allow_intent.attrib.href
+            };
+        });
+    },
+    /* Get all edit-config tags */
+    getEditConfigs: function(platform) {
+        var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
+        var platform_edit_configs = platform_tag ? platform_tag.findall('edit-config') : [];
+
+        var edit_configs = this.doc.findall('edit-config').concat(platform_edit_configs);
+
+        return edit_configs.map(function(tag) {
+            var editConfig =
+                {
+                    file : tag.attrib['file'],
+                    target : tag.attrib['target'],
+                    mode : tag.attrib['mode'],
+                    id : 'config.xml',
+                    xmls : tag.getchildren()
+                };
+            return editConfig;
+        });
+    },
     write:function() {
         fs.writeFileSync(this.path, this.doc.write({indent: 4}), 'utf-8');
     }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/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
index a09f39c..8b6876b 100644
--- a/node_modules/cordova-common/src/FileUpdater.js
+++ b/node_modules/cordova-common/src/FileUpdater.js
@@ -285,14 +285,14 @@ function mergeAndUpdateDir(sourceDirs, targetDir, options, log) {
     }
 
     // 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);
-    }
+    var sourceMaps = sourceDirs.map(function (sourceDir) {
+            return path.join(rootDir, sourceDir);
+        }).map(function (sourcePath) {
+            if (!fs.existsSync(sourcePath)) {
+                throw new Error("Source directory does not exist: " + sourcePath);
+            }
+            return mapDirectory(rootDir, path.relative(rootDir, sourcePath), include, exclude);
+        });
 
     // Scan the files in the target directory, if it exists.
     var targetMap = {};
@@ -331,46 +331,40 @@ function mapDirectory(rootDir, subDir, include, exclude) {
     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;
+        items.forEach(function(item) {
+            var relativePath = path.join(relativeDir, item);
+            if(!matchGlobArray(relativePath, exclude)) {
+                // 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;
+        return globs.some(function(elem) {
+            return minimatch(path, elem, {dot:true});
+        });
     }
 }
 
@@ -384,7 +378,7 @@ function mergePathMaps(sourceMaps, targetMap, targetDir) {
     // Target stats will be filled in below for targets that exist.
     var pathMap = {};
     sourceMaps.forEach(function (sourceMap) {
-        for (var sourceSubPath in sourceMap) {
+        Object.keys(sourceMap).forEach(function(sourceSubPath){
             var sourceEntry = sourceMap[sourceSubPath];
             pathMap[sourceSubPath] = {
                 targetPath: path.join(targetDir, sourceSubPath),
@@ -392,12 +386,12 @@ function mergePathMaps(sourceMaps, targetMap, targetDir) {
                 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) {
+    Object.keys(targetMap).forEach(function(subPath){
         var entry = pathMap[subPath];
         if (entry) {
             entry.targetStats = targetMap[subPath].stats;
@@ -409,7 +403,7 @@ function mergePathMaps(sourceMaps, targetMap, targetDir) {
                 sourceStats: null
             };
         }
-    }
+    });
 
     return pathMap;
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/db0a391f/node_modules/cordova-common/src/util/xml-helpers.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/xml-helpers.js b/node_modules/cordova-common/src/util/xml-helpers.js
index 4b630fa..9a1e82d 100644
--- a/node_modules/cordova-common/src/util/xml-helpers.js
+++ b/node_modules/cordova-common/src/util/xml-helpers.js
@@ -160,6 +160,23 @@ module.exports = {
         return true;
     },
 
+    prunXMLRemove: function(doc, selector, nodes) {
+        var target = module.exports.resolveParent(doc, selector);
+        if (!target) return false;
+
+        nodes.forEach(function (node) {
+            var attributes = node.attrib;
+            for (var attribute in attributes) {
+                if (target.attrib[attribute]) {
+                    delete target.attrib[attribute];
+                }
+            }
+        });
+
+        return true;
+
+    },
+
 
     parseElementtreeSync: function (filename) {
         var contents = fs.readFileSync(filename, 'utf-8');


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


[11/21] cordova-windows git commit: CB-11522 [windows] Make cordova-js handle 'unknown' type

Posted by da...@apache.org.
CB-11522 [windows] Make cordova-js handle 'unknown' type


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

Branch: refs/heads/4.4.x
Commit: ddb7f39e54069339855c540e4ee1dae58ffef2ec
Parents: 50bbc3e
Author: daserge <v-...@microsoft.com>
Authored: Wed Sep 14 19:31:28 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:55 2016 +0300

----------------------------------------------------------------------
 template/www/cordova.js | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/ddb7f39e/template/www/cordova.js
----------------------------------------------------------------------
diff --git a/template/www/cordova.js b/template/www/cordova.js
index 2ea0612..75392f2 100644
--- a/template/www/cordova.js
+++ b/template/www/cordova.js
@@ -1,5 +1,5 @@
 \ufeff// Platform: windows
-// d403ce434788ffe1937711d6ebcbcc837fcbcb14
+// 640f151f0badfbf7d3ede6b7a2befb7a96054dd7
 /*
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
@@ -817,7 +817,7 @@ module.exports = channel;
 
 });
 
-// file: D:/cordova/cordova-windows/cordova-js-src/confighelper.js
+// file: F:/coho/cordova-windows/cordova-js-src/confighelper.js
 define("cordova/confighelper", function(require, exports, module) {
 
 // config.xml wrapper (non-node ConfigParser analogue)
@@ -891,7 +891,7 @@ exports.readConfig = readConfig;
 
 });
 
-// file: D:/cordova/cordova-windows/cordova-js-src/exec.js
+// file: F:/coho/cordova-windows/cordova-js-src/exec.js
 define("cordova/exec", function(require, exports, module) {
 
 /*jslint sloppy:true, plusplus:true*/
@@ -1482,7 +1482,7 @@ exports.reset();
 
 });
 
-// file: D:/cordova/cordova-windows/cordova-js-src/platform.js
+// file: F:/coho/cordova-windows/cordova-js-src/platform.js
 define("cordova/platform", function(require, exports, module) {
 
 module.exports = {
@@ -1801,7 +1801,7 @@ exports.load = function(callback) {
 
 });
 
-// file: D:/cordova/cordova-windows/cordova-js-src/splashscreen.js
+// file: F:/coho/cordova-windows/cordova-js-src/splashscreen.js
 define("cordova/splashscreen", function(require, exports, module) {
 
 var isPhone = (cordova.platformId == 'windows') && WinJS.Utilities.isPhone;
@@ -2234,7 +2234,10 @@ utils.clone = function(obj) {
 
     retVal = {};
     for(i in obj){
-        if((!(i in retVal) || retVal[i] != obj[i]) && typeof obj[i] != 'undefined') {
+        // https://issues.apache.org/jira/browse/CB-11522 'unknown' type may be returned in
+        // custom protocol activation case on Windows Phone 8.1 causing "No such interface supported" exception
+        // on cloning.
+        if((!(i in retVal) || retVal[i] != obj[i]) && typeof obj[i] != 'undefined' && typeof obj[i] != 'unknown') {
             retVal[i] = utils.clone(obj[i]);
         }
     }


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


[19/21] cordova-windows git commit: CB-12044 Fix splashscreen image path for ms-appx on Windows

Posted by da...@apache.org.
CB-12044 Fix splashscreen image path for ms-appx on Windows

Updated cordova-js to latest


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

Branch: refs/heads/4.4.x
Commit: c9a9f96728606cd1c25e722fa87abc8636b4da0f
Parents: fb894de
Author: daserge <v-...@microsoft.com>
Authored: Thu Oct 20 18:55:45 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:57 2016 +0300

----------------------------------------------------------------------
 cordova-js-src/splashscreen.js |  9 +++--
 template/www/cordova.js        | 69 ++++++++++++++++++++++++++-----------
 2 files changed, 54 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c9a9f967/cordova-js-src/splashscreen.js
----------------------------------------------------------------------
diff --git a/cordova-js-src/splashscreen.js b/cordova-js-src/splashscreen.js
index 0d1be69..838b2c3 100644
--- a/cordova-js-src/splashscreen.js
+++ b/cordova-js-src/splashscreen.js
@@ -1,4 +1,4 @@
-/*
+\ufeff/*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,8 +24,11 @@ var isWp81 = navigator.appVersion.indexOf("Windows Phone 8.1") !== -1;
 var isWp10 = navigator.appVersion.indexOf("Windows Phone 10") !== -1;
 var isWin10UWP = navigator.appVersion.indexOf('MSAppHost/3.0') !== -1;
 var isHosted = window.location.protocol.indexOf('http') === 0;
-var splashImageSrc = ((isHosted || isWin10UWP) ? 'ms-appx-web' : 'ms-appx') + ':///images/'
-    + (isPhone ? 'splashscreenphone.png' : 'splashscreen.png');
+var isMsAppxWeb = window.location.protocol.indexOf('ms-appx-web') === 0;
+
+var schema = (isHosted || isWin10UWP && isMsAppxWeb) ? 'ms-appx-web' : 'ms-appx';
+var fileName = isPhone ? 'splashscreenphone.png' : 'splashscreen.png';
+var splashImageSrc = schema + ':///images/' + fileName;
 
 var splashElement = null, extendedSplashImage = null, extendedSplashProgress = null;
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c9a9f967/template/www/cordova.js
----------------------------------------------------------------------
diff --git a/template/www/cordova.js b/template/www/cordova.js
index 75392f2..5af4cdc 100644
--- a/template/www/cordova.js
+++ b/template/www/cordova.js
@@ -1,5 +1,5 @@
 \ufeff// Platform: windows
-// 640f151f0badfbf7d3ede6b7a2befb7a96054dd7
+// 53ea1913735222d326e65326e03391405df3cd4e
 /*
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
@@ -697,8 +697,13 @@ var Channel = function(type, sticky) {
         }
     };
 
-function forceFunction(f) {
-    if (typeof f != 'function') throw "Function required as first argument!";
+function checkSubscriptionArgument(argument) {
+    if (typeof argument !== "function" && typeof argument.handleEvent !== "function") {
+        throw new Error(
+                "Must provide a function or an EventListener object " +
+                "implementing the handleEvent interface."
+        );
+    }
 }
 
 /**
@@ -708,28 +713,39 @@ function forceFunction(f) {
  * and a guid that can be used to stop subscribing to the channel.
  * Returns the guid.
  */
-Channel.prototype.subscribe = function(f, c) {
-    // need a function to call
-    forceFunction(f);
+Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) {
+    checkSubscriptionArgument(eventListenerOrFunction);
+    var handleEvent, guid;
+
+    if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
+        // Received an EventListener object implementing the handleEvent interface
+        handleEvent = eventListenerOrFunction.handleEvent;
+        eventListener = eventListenerOrFunction;
+    } else {
+        // Received a function to handle event
+        handleEvent = eventListenerOrFunction;
+    }
+
     if (this.state == 2) {
-        f.apply(c || this, this.fireArgs);
+        handleEvent.apply(eventListener || this, this.fireArgs);
         return;
     }
 
-    var func = f,
-        guid = f.observer_guid;
-    if (typeof c == "object") { func = utils.close(c, f); }
+    guid = eventListenerOrFunction.observer_guid;
+    if (typeof eventListener === "object") {
+        handleEvent = utils.close(eventListener, handleEvent);
+    }
 
     if (!guid) {
-        // first time any channel has seen this subscriber
+        // First time any channel has seen this subscriber
         guid = '' + nextGuid++;
     }
-    func.observer_guid = guid;
-    f.observer_guid = guid;
+    handleEvent.observer_guid = guid;
+    eventListenerOrFunction.observer_guid = guid;
 
     // Don't add the same handler more than once.
     if (!this.handlers[guid]) {
-        this.handlers[guid] = func;
+        this.handlers[guid] = handleEvent;
         this.numHandlers++;
         if (this.numHandlers == 1) {
             this.onHasSubscribersChange && this.onHasSubscribersChange();
@@ -740,12 +756,20 @@ Channel.prototype.subscribe = function(f, c) {
 /**
  * Unsubscribes the function with the given guid from the channel.
  */
-Channel.prototype.unsubscribe = function(f) {
-    // need a function to unsubscribe
-    forceFunction(f);
+Channel.prototype.unsubscribe = function(eventListenerOrFunction) {
+    checkSubscriptionArgument(eventListenerOrFunction);
+    var handleEvent, guid, handler;
 
-    var guid = f.observer_guid,
-        handler = this.handlers[guid];
+    if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
+        // Received an EventListener object implementing the handleEvent interface
+        handleEvent = eventListenerOrFunction.handleEvent;
+    } else {
+        // Received a function to handle event
+        handleEvent = eventListenerOrFunction;
+    }
+
+    guid = handleEvent.observer_guid;
+    handler = this.handlers[guid];
     if (handler) {
         delete this.handlers[guid];
         this.numHandlers--;
@@ -1809,8 +1833,11 @@ var isWp81 = navigator.appVersion.indexOf("Windows Phone 8.1") !== -1;
 var isWp10 = navigator.appVersion.indexOf("Windows Phone 10") !== -1;
 var isWin10UWP = navigator.appVersion.indexOf('MSAppHost/3.0') !== -1;
 var isHosted = window.location.protocol.indexOf('http') === 0;
-var splashImageSrc = ((isHosted || isWin10UWP) ? 'ms-appx-web' : 'ms-appx') + ':///images/'
-    + (isPhone ? 'splashscreenphone.png' : 'splashscreen.png');
+var isMsAppxWeb = window.location.protocol.indexOf('ms-appx-web') === 0;
+
+var schema = (isHosted || isWin10UWP && isMsAppxWeb) ? 'ms-appx-web' : 'ms-appx';
+var fileName = isPhone ? 'splashscreenphone.png' : 'splashscreen.png';
+var splashImageSrc = schema + ':///images/' + fileName;
 
 var splashElement = null, extendedSplashImage = null, extendedSplashProgress = null;
 


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


[13/21] cordova-windows git commit: CB-11825 Windows dll file won't be copied as resource while adding custom plugin to a UWP project

Posted by da...@apache.org.
CB-11825 Windows dll file won't be copied as resource while adding custom plugin to a UWP project

Changing Package action from Content to None because Content does not work for Mobile - dlls were not being packaged into appx


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

Branch: refs/heads/4.4.x
Commit: adddd0893e9e5a4918169b959f75f0d8fa6c047f
Parents: 44e400c
Author: daserge <v-...@microsoft.com>
Authored: Wed Oct 5 19:01:26 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:55 2016 +0300

----------------------------------------------------------------------
 spec/unit/pluginHandler/windows.spec.js | 10 +++++-----
 template/cordova/lib/JsprojManager.js   |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/adddd089/spec/unit/pluginHandler/windows.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/pluginHandler/windows.spec.js b/spec/unit/pluginHandler/windows.spec.js
index 161f6f5..ae2cd56 100644
--- a/spec/unit/pluginHandler/windows.spec.js
+++ b/spec/unit/pluginHandler/windows.spec.js
@@ -216,16 +216,16 @@ describe('windows project handler', function () {
             // project files, which is not needed.
             it('should write to correct project files when conditions are specified', function () {
 
-                var xpath = 'Content[@Include="' + computeResourcePath(resourceFiles[0]) + '"][@Condition="\'$(Platform)\'==\'x86\'"]';
+                var xpath = 'None[@Include="' + computeResourcePath(resourceFiles[0]) + '"][@Condition="\'$(Platform)\'==\'x86\'"]';
                 validateInstalledProjects('resource-file', resourceFiles[0], xpath, ['all']);
 
-                xpath = 'Content[@Include="' + computeResourcePath(resourceFiles[1]) + '"]';
+                xpath = 'None[@Include="' + computeResourcePath(resourceFiles[1]) + '"]';
                 validateInstalledProjects('resource-file', resourceFiles[1], xpath, ['windows', 'phone', 'windows10']);
 
-                xpath = 'Content[@Include="' + computeResourcePath(resourceFiles[2]) + '"]';
+                xpath = 'None[@Include="' + computeResourcePath(resourceFiles[2]) + '"]';
                 validateInstalledProjects('resource-file', resourceFiles[2], xpath, ['phone']);
 
-                xpath = 'Content[@Include="' + computeResourcePath(resourceFiles[3]) + '"][@Condition="\'$(Platform)\'==\'x64\'"]';
+                xpath = 'None[@Include="' + computeResourcePath(resourceFiles[3]) + '"][@Condition="\'$(Platform)\'==\'x64\'"]';
                 validateInstalledProjects('resource-file', resourceFiles[3], xpath, ['windows8']);
             });
 
@@ -454,7 +454,7 @@ describe('windows project handler', function () {
                 resourcefiles.forEach(function(resourceFile) {
                     install(resourceFile, dummyPluginInfo, dummyProject);
                 });
-                var path = 'ItemGroup/Content';
+                var path = 'ItemGroup/None';
                 var incText = computeResourcePath(resourcefiles[0]);
                 var targetConditions = {versions: undefined, deviceTarget: undefined, arch: 'x86'};
                 validateUninstalledProjects('resource-file', resourcefiles[0], path, incText, targetConditions, ['all']);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/adddd089/template/cordova/lib/JsprojManager.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/JsprojManager.js b/template/cordova/lib/JsprojManager.js
index 21ee808..3bd7ac6 100644
--- a/template/cordova/lib/JsprojManager.js
+++ b/template/cordova/lib/JsprojManager.js
@@ -121,7 +121,7 @@ jsprojManager.prototype = {
         copyToOutputDirectory.text = 'Always';
         children.push(copyToOutputDirectory);
 
-        var item = createItemGroupElement('ItemGroup/Content', sourcePath, targetConditions, children);
+        var item = createItemGroupElement('ItemGroup/None', sourcePath, targetConditions, children);
         this._getMatchingProjects(targetConditions).forEach(function (project) {
             project.appendToRoot(item);
         });
@@ -130,7 +130,7 @@ jsprojManager.prototype = {
     removeResourceFileFromProject: function (relPath, targetConditions) {
         events.emit('verbose', 'jsprojManager.removeResourceFile(relPath: ' + relPath + ', targetConditions: ' + JSON.stringify(targetConditions) + ')');
         this._getMatchingProjects(targetConditions).forEach(function (project) {
-            project.removeItemGroupElement('ItemGroup/Content', relPath, targetConditions);
+            project.removeItemGroupElement('ItemGroup/None', relPath, targetConditions);
         });
     },
 


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


[14/21] cordova-windows git commit: CB-11933: Add uap prefixes for capabilities at plugin install

Posted by da...@apache.org.
CB-11933: Add uap prefixes for capabilities at plugin install

This closes #203


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

Branch: refs/heads/4.4.x
Commit: 966acc850bc60710bdcda935c8359b660e4d8aac
Parents: db0a391
Author: Nikita Matrosov <ma...@gmail.com>
Authored: Wed Oct 19 14:23:52 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:56 2016 +0300

----------------------------------------------------------------------
 spec/unit/ConfigChanges.spec.js                 |  81 +++++++-----
 .../windows/package.windows10.appxmanifest      |  73 +++++++++++
 template/cordova/Api.js                         |   5 +-
 template/cordova/lib/AppxManifest.js            |   7 ++
 template/cordova/lib/ConfigChanges.js           | 125 +++++++++++++++----
 5 files changed, 237 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/966acc85/spec/unit/ConfigChanges.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/ConfigChanges.spec.js b/spec/unit/ConfigChanges.spec.js
index 44ad4cd..df346dd 100644
--- a/spec/unit/ConfigChanges.spec.js
+++ b/spec/unit/ConfigChanges.spec.js
@@ -61,72 +61,97 @@ describe('PlatformMunger', function () {
         });
 
         it('should additionally call parent\'s method with another munge if removing changes from windows 10 appxmanifest', function () {
-            munger.apply_file_munge('package.windows10.appxmanifest', munge, /*remove=*/true);
+            munger.apply_file_munge(WINDOWS10_MANIFEST, munge, /*remove=*/true);
             expect(BaseMunger.prototype.apply_file_munge).toHaveBeenCalledWith(WINDOWS10_MANIFEST, munge, true);
-            expect(BaseMunger.prototype.apply_file_munge).toHaveBeenCalledWith(WINDOWS10_MANIFEST, jasmine.any(Object), true);
         });
 
         it('should remove uap: capabilities added by windows prepare step', function () {
             // Generate a munge that contain non-prefixed capabilities changes
-            var baseMunge = { parents: { WINDOWS10_MANIFEST: [
+            var baseMunge = { parents: { '/Package/Capabilities': [
                 // Emulate capability that was initially added with uap prefix
                 { before: undefined, count: 1, xml: '<uap:Capability Name=\"privateNetworkClientServer\">'},
                 { before: undefined, count: 1, xml: '<Capability Name=\"enterpriseAuthentication\">'}
             ]}};
 
-            var capabilitiesMunge = { parents: { WINDOWS10_MANIFEST: [
+            var capabilitiesMunge = { parents: { '/Package/Capabilities': [
                 { before: undefined, count: 1, xml: '<uap:Capability Name=\"enterpriseAuthentication\">'}
             ]}};
-
-            munger.apply_file_munge('package.windows10.appxmanifest', baseMunge, /*remove=*/true);
+            munger.apply_file_munge(WINDOWS10_MANIFEST, baseMunge, /*remove=*/true);
             expect(BaseMunger.prototype.apply_file_munge).toHaveBeenCalledWith(WINDOWS10_MANIFEST, capabilitiesMunge, true);
         });
     });
 });
 
 describe('Capabilities within package.windows.appxmanifest', function() {
-    var testDir;
+
+    var testDir, windowsPlatform, windowsManifest, windowsManifest10, dummyPluginInfo, api;
 
     beforeEach(function() {
         testDir = path.join(__dirname, 'testDir');
         shell.mkdir('-p', testDir);
         shell.cp('-rf', windowsProject + '/*', testDir);
+        windowsPlatform = path.join(testDir, 'platforms/windows');
+        windowsManifest = path.join(windowsPlatform, WINDOWS_MANIFEST);
+        windowsManifest10 = path.join(windowsPlatform, WINDOWS10_MANIFEST);
+        dummyPluginInfo = new PluginInfo(dummyPlugin);
+        api = new Api();
+        api.root = windowsPlatform;
+        api.locations.root = windowsPlatform;
+        api.locations.www = path.join(windowsPlatform, 'www');
     });
 
     afterEach(function() {
         shell.rm('-rf', testDir);
     });
 
-    it('should be removed using overriden PlatformMunger', function(done) {
-        var windowsPlatform = path.join(testDir, 'platforms/windows');
-        var windowsManifest = path.join(windowsPlatform, WINDOWS_MANIFEST);
-        var api = new Api();
-        api.root = windowsPlatform;
-        api.locations.root = windowsPlatform;
-        api.locations.www = path.join(windowsPlatform, 'www');
-        var dummyPluginInfo = new PluginInfo(dummyPlugin);
+    function getPluginCapabilities(pluginInfo) {
+        return pluginInfo.getConfigFiles()[0].xmls;
+    }
 
-        var fail = jasmine.createSpy('fail')
-        .andCallFake(function (err) {
-            console.error(err);
-        });
+    function getManifestCapabilities(manifest) {
+        var appxmanifest = AppxManifest.get(manifest, true);
+        return appxmanifest.getCapabilities();
+    }
 
-        function getPluginCapabilities() {
-            return dummyPluginInfo.getConfigFiles()[0].xmls;
-        }
+    var fail = jasmine.createSpy('fail')
+    .andCallFake(function (err) {
+        console.error(err);
+    });
+
+    it('should be removed using overriden PlatformMunger', function(done) {
+        api.addPlugin(dummyPluginInfo)
+        .then(function() {
+            //  There is the one default capability in manifest with 'internetClient' name
+            expect(getManifestCapabilities(windowsManifest).length).toBe(getPluginCapabilities(dummyPluginInfo).length + 1);
+            api.removePlugin(dummyPluginInfo);
+        })
+        .then(function() {
+            expect(getManifestCapabilities(windowsManifest).length).toBe(1);
+        })
+        .catch(fail)
+        .finally(function() {
+            expect(fail).not.toHaveBeenCalled();
+            done();
+        });
+    });
 
-        function getManifestCapabilities() {
-            var appxmanifest = AppxManifest.get(windowsManifest, true);
-            return appxmanifest.getCapabilities();
-        }
+    it('should be added with uap prefixes when install plugin', function(done) {
         api.addPlugin(dummyPluginInfo)
         .then(function() {
             //  There is the one default capability in manifest with 'internetClient' name
-            expect(getManifestCapabilities().length).toBe(getPluginCapabilities().length + 1); 
+            var manifestCapabilities = getManifestCapabilities(windowsManifest10);
+            expect(manifestCapabilities.length).toBe(getPluginCapabilities(dummyPluginInfo).length + 1);
+
+            //  Count 'uap' prefixed capabilities
+            var uapPrefixedCapsCount = manifestCapabilities.filter(function(capability) {
+                return capability.type === 'uap:Capability';
+            }).length;
+
+            expect(uapPrefixedCapsCount).toBe(2);
             api.removePlugin(dummyPluginInfo);
         })
         .then(function() {
-            expect(getManifestCapabilities().length).toBe(1);
+            expect(getManifestCapabilities(windowsManifest10).length).toBe(1);
         })
         .catch(fail)
         .finally(function() {

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/966acc85/spec/unit/fixtures/testProj/platforms/windows/package.windows10.appxmanifest
----------------------------------------------------------------------
diff --git a/spec/unit/fixtures/testProj/platforms/windows/package.windows10.appxmanifest b/spec/unit/fixtures/testProj/platforms/windows/package.windows10.appxmanifest
new file mode 100644
index 0000000..59e435a
--- /dev/null
+++ b/spec/unit/fixtures/testProj/platforms/windows/package.windows10.appxmanifest
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+       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.
+-->
+<Package
+  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
+  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
+  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
+  IgnorableNamespaces="uap mp">
+
+  <Identity
+    Name="$guid1$"
+    Version="1.0.0.0"
+    Publisher="CN=$username$" />
+
+  <mp:PhoneIdentity PhoneProductId="$guid1$" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
+
+  <Properties>
+    <DisplayName>$projectname$</DisplayName>
+    <PublisherDisplayName>$username$</PublisherDisplayName>
+    <Logo>images\StoreLogo.png</Logo>
+  </Properties>
+
+  <Dependencies>
+    <TargetDeviceFamily Name="Windows.Universal" MinVersion="0.0.0.0" MaxVersionTested="10.0.0.0" />
+  </Dependencies>
+
+  <Resources>
+    <Resource Language="x-generate" />
+  </Resources>
+
+  <Applications>
+    <Application
+      Id="App"
+      StartPage="www/index.html">
+
+      <uap:VisualElements
+        DisplayName="$projectname$"
+        Description="CordovaApp"
+        BackgroundColor="#464646"
+        Square150x150Logo="images\Square150x150Logo.png"
+        Square44x44Logo="images\Square44x44Logo.png">
+
+        <uap:SplashScreen Image="images\splashscreen.png" />
+        <uap:DefaultTile ShortName="$projectname$"
+                         Square310x310Logo="images\Square310x310Logo.png"
+                         Square71x71Logo="images\Square71x71Logo.png"
+                         Wide310x150Logo="images\Wide310x150Logo.png" />
+
+      </uap:VisualElements>
+    </Application>
+  </Applications>
+
+  <Capabilities>
+    <Capability Name="internetClient" />
+  </Capabilities>
+
+</Package>

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/966acc85/template/cordova/Api.js
----------------------------------------------------------------------
diff --git a/template/cordova/Api.js b/template/cordova/Api.js
index 50a0778..7637582 100644
--- a/template/cordova/Api.js
+++ b/template/cordova/Api.js
@@ -208,7 +208,10 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
         installOptions.variables.PACKAGE_NAME = jsProject.getPackageName();
     }
 
-    return PluginManager.get(this.platform, this.locations, jsProject)
+    var platformJson = PlatformJson.load(this.root, this.platform);
+    var pluginManager = PluginManager.get(this.platform, this.locations, jsProject);
+    pluginManager.munger = new PlatformMunger(this.platform, this.locations.root, platformJson, new PluginInfoProvider());
+    return pluginManager
         .addPlugin(plugin, installOptions)
         .then(function () {
             // CB-11657 Add BOM to www files here because files added by plugin

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/966acc85/template/cordova/lib/AppxManifest.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/AppxManifest.js b/template/cordova/lib/AppxManifest.js
index db59cf1..80cf113 100644
--- a/template/cordova/lib/AppxManifest.js
+++ b/template/cordova/lib/AppxManifest.js
@@ -72,6 +72,13 @@ function AppxManifest(path, prefix) {
     this.hasPhoneIdentity = this.prefix === 'uap:' || this.prefix === 'm3:';
 }
 
+//  Static read-only property to get capabilities which need to be prefixed with uap
+Object.defineProperty(AppxManifest, 'CapsNeedUapPrefix', {
+    writable: false,
+    configurable: false,
+    value: CAPS_NEEDING_UAPNS
+});
+
 /**
  * @static
  * @constructs AppxManifest|Win10AppxManifest

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/966acc85/template/cordova/lib/ConfigChanges.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/ConfigChanges.js b/template/cordova/lib/ConfigChanges.js
index 7e15606..64eba4d 100644
--- a/template/cordova/lib/ConfigChanges.js
+++ b/template/cordova/lib/ConfigChanges.js
@@ -15,7 +15,12 @@
 */
 
 var util = require('util');
+var path = require('path');
 var CommonMunger = require('cordova-common').ConfigChanges.PlatformMunger;
+var CapsNeedUapPrefix = require(path.join(__dirname, 'AppxManifest')).CapsNeedUapPrefix;
+
+var CAPS_SELECTOR = '/Package/Capabilities';
+var WINDOWS10_MANIFEST = 'package.windows10.appxmanifest';
 
 function PlatformMunger(platform, project_dir, platformJson, pluginInfoProvider) {
     CommonMunger.apply(this, arguments);
@@ -34,36 +39,111 @@ util.inherits(PlatformMunger, CommonMunger);
  *   need to be removed or added to the file
  */
 PlatformMunger.prototype.apply_file_munge = function (file, munge, remove) {
-    // Call parent class' method
-    PlatformMunger.super_.prototype.apply_file_munge.call(this, file, munge, remove);
-
-    // CB-11066 If this is a windows10 manifest and we're removing the changes
-    // then we also need to check if there are <Capability> elements were previously
-    // added and schedule removal of corresponding <uap:Capability> elements
-    if (remove && file === 'package.windows10.appxmanifest') {
-        var uapCapabilitiesMunge = generateUapCapabilities(munge);
-        // We do not check whether generated munge is empty or not before calling
-        // 'apply_file_munge' since applying empty one is just a no-op
-        PlatformMunger.super_.prototype.apply_file_munge.call(this, file, uapCapabilitiesMunge, remove);
+
+    // Create a copy to avoid modification of original munge
+    var mungeCopy = cloneObject(munge);
+    var capabilities = mungeCopy.parents[CAPS_SELECTOR];
+
+    if (capabilities) {
+        // Add 'uap' prefixes for windows 10 manifest
+        if (file === WINDOWS10_MANIFEST) {
+            capabilities = generateUapCapabilities(capabilities);
+        }
+
+        // Remove duplicates and sort capabilities when installing plugin
+        if (!remove) {
+            capabilities = getUniqueCapabilities(capabilities).sort(compareCapabilities);
+        }
+
+        // Put back capabilities into munge's copy
+        mungeCopy.parents[CAPS_SELECTOR] = capabilities;
     }
+
+    PlatformMunger.super_.prototype.apply_file_munge.call(this, file, mungeCopy, remove);
 };
 
+// Recursive function to clone an object
+function cloneObject(obj) {
+    if (obj === null || typeof obj !== 'object') {
+        return obj;
+    }
+
+    var copy = obj.constructor();
+    Object.keys(obj).forEach(function(key) {
+        copy[key] = cloneObject(obj[key]);
+    });
+
+    return copy;
+}
+
+/**
+ * Retrieve capabality name from xml field
+ * @param {Object} capability with xml field like <Capability Name="CapabilityName">
+ * @return {String} name of capability
+ */
+function getCapabilityName(capability) {
+    var reg = /Name="(\w+)"/i;
+    return capability.xml.match(reg)[1];
+}
+
+/**
+ * Remove capabilities with same names
+ * @param {Object} an array of capabilities
+ * @return {Object} an unique array of capabilities
+ */
+function getUniqueCapabilities(capabilities) {
+    return capabilities.reduce(function(uniqueCaps, currCap) {
+
+        var isRepeated = uniqueCaps.some(function(cap) {
+            return getCapabilityName(cap) === getCapabilityName(currCap);
+        });
+
+        return isRepeated ? uniqueCaps : uniqueCaps.concat([currCap]);
+    }, []);
+}
+
+/**
+ * Comparator function to pass to Array.sort
+ * @param {Object} firstCap first capability
+ * @param {Object} secondCap second capability
+ * @return {Number} either -1, 0 or 1
+ */
+function compareCapabilities(firstCap, secondCap) {
+    var firstCapName = getCapabilityName(firstCap);
+    var secondCapName = getCapabilityName(secondCap);
+
+    if (firstCapName < secondCapName) {
+        return -1;
+    }
+
+    if (firstCapName > secondCapName) {
+        return 1;
+    }
+
+    return 0;
+}
+
+
 /**
  * Generates a new munge that contains <uap:Capability> elements created based on
  * corresponding <Capability> elements from base munge. If there are no such elements
  * found in base munge, the empty munge is returned (selectors might be present under
  * the 'parents' key, but they will contain no changes).
  *
- * @param {Object} munge A munge that we need to check for <Capability> elements
- * @return {Object} A munge with 'uap'-prefixed capabilities or empty one
+ * @param {Object} capabilities A list of capabilities
+ * @return {Object} A list with 'uap'-prefixed capabilities
  */
-function generateUapCapabilities(munge) {
+function generateUapCapabilities(capabilities) {
 
     function hasCapabilityChange(change) {
         return /^\s*<Capability\s/.test(change.xml);
     }
 
     function createPrefixedCapabilityChange(change) {
+        if (CapsNeedUapPrefix.indexOf(getCapabilityName(change)) < 0) {
+            return change;
+        }
+
         return {
             xml: change.xml.replace(/Capability/, 'uap:Capability'),
             count: change.count,
@@ -71,17 +151,12 @@ function generateUapCapabilities(munge) {
         };
     }
 
-    // Iterate through all selectors in munge
-    return Object.keys(munge.parents)
-    .reduce(function (result, selector) {
-        result.parents[selector] = munge.parents[selector]
-        // For every xml change check if it adds a <Capability> element ...
-        .filter(hasCapabilityChange)
-        // ... and create a duplicate with 'uap:' prefix
-        .map(createPrefixedCapabilityChange);
-
-        return result;
-    }, { parents: {} });
+    return capabilities
+     // For every xml change check if it adds a <Capability> element ...
+    .filter(hasCapabilityChange)
+    // ... and create a duplicate with 'uap:' prefix
+    .map(createPrefixedCapabilityChange);
+
 }
 
 exports.PlatformMunger = PlatformMunger;


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


[06/21] cordova-windows git commit: Update bundled cordova-common dependency to 1.4.1

Posted by da...@apache.org.
Update bundled cordova-common dependency to 1.4.1


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

Branch: refs/heads/4.4.x
Commit: 85fe3553b733822369ddb99b9b3474de8aaf23e7
Parents: f3fb389
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Tue Aug 30 14:00:51 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:54 2016 +0300

----------------------------------------------------------------------
 node_modules/cordova-common/RELEASENOTES.md     |  8 +-
 node_modules/cordova-common/cordova-common.js   |  1 +
 node_modules/cordova-common/package.json        | 38 ++++-----
 .../src/ConfigChanges/ConfigChanges.js          | 12 ++-
 .../src/ConfigParser/ConfigParser.js            | 20 +++--
 node_modules/cordova-common/src/CordovaCheck.js | 76 ++++++++++++++++++
 .../cordova-common/src/PluginInfo/PluginInfo.js |  1 +
 .../cordova-common/src/util/xml-helpers.js      | 84 ++++++++++----------
 node_modules/minimatch/minimatch.js             | 39 +++++----
 node_modules/minimatch/package.json             | 20 ++---
 package.json                                    |  2 +-
 11 files changed, 198 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 71ad1ea..01037d4 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,8 +20,12 @@
 -->
 # Cordova-common Release Notes
 
-### 1.4.0 (Jul 12, 2016)
-* [CB-11023](https://issues.apache.org/jira/browse/CB-11023) Add edit-config functionality
+### 1.4.1 (Aug 09, 2016)
+* Add general purpose `ConfigParser.getAttribute` API
+* [CB-11653](https://issues.apache.org/jira/browse/CB-11653) moved `findProjectRoot` from `cordova-lib` to `cordova-common`
+* [CB-11636](https://issues.apache.org/jira/browse/CB-11636) Handle attributes with quotes correctly
+* [CB-11645](https://issues.apache.org/jira/browse/CB-11645) added check to see if `getEditConfig` exists before trying to use it
+* [CB-9825](https://issues.apache.org/jira/browse/CB-9825) framework tag spec parsing
 
 ### 1.3.0 (May 12, 2016)
 * [CB-11259](https://issues.apache.org/jira/browse/CB-11259): Improving prepare and build logging

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/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 dcaf7a4..801d510 100644
--- a/node_modules/cordova-common/cordova-common.js
+++ b/node_modules/cordova-common/cordova-common.js
@@ -27,6 +27,7 @@ addProperty(module, 'superspawn', './src/superspawn');
 addProperty(module, 'ActionStack', './src/ActionStack');
 addProperty(module, 'CordovaError', './src/CordovaError/CordovaError');
 addProperty(module, 'CordovaLogger', './src/CordovaLogger');
+addProperty(module, 'CordovaCheck', './src/CordovaCheck');
 addProperty(module, 'CordovaExternalToolErrorContext', './src/CordovaError/CordovaExternalToolErrorContext');
 addProperty(module, 'PlatformJson', './src/PlatformJson');
 addProperty(module, 'ConfigParser', './src/ConfigParser/ConfigParser');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index 6543ba3..aa0ee4c 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -2,49 +2,49 @@
   "_args": [
     [
       {
-        "raw": "cordova-common@^1.4.0",
+        "raw": "cordova-common@^1.4.1",
         "scope": null,
         "escapedName": "cordova-common",
         "name": "cordova-common",
-        "rawSpec": "^1.4.0",
-        "spec": ">=1.4.0 <2.0.0",
+        "rawSpec": "^1.4.1",
+        "spec": ">=1.4.1 <2.0.0",
         "type": "range"
       },
       "d:\\cordova\\cordova-windows"
     ]
   ],
-  "_from": "cordova-common@>=1.4.0 <2.0.0",
-  "_id": "cordova-common@1.4.0",
+  "_from": "cordova-common@>=1.4.1 <2.0.0",
+  "_id": "cordova-common@1.4.1",
   "_inCache": true,
   "_installable": true,
   "_location": "/cordova-common",
-  "_nodeVersion": "6.3.0",
+  "_nodeVersion": "6.2.2",
   "_npmOperationalInternal": {
     "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/cordova-common-1.4.0.tgz_1469092638680_0.9961137105710804"
+    "tmp": "tmp/cordova-common-1.4.1.tgz_1471306335501_0.6723270947113633"
   },
   "_npmUser": {
-    "name": "kotikov.vladimir",
-    "email": "kotikov.vladimir@gmail.com"
+    "name": "stevegill",
+    "email": "stevengill97@gmail.com"
   },
-  "_npmVersion": "3.10.5",
+  "_npmVersion": "3.9.5",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "cordova-common@^1.4.0",
+    "raw": "cordova-common@^1.4.1",
     "scope": null,
     "escapedName": "cordova-common",
     "name": "cordova-common",
-    "rawSpec": "^1.4.0",
-    "spec": ">=1.4.0 <2.0.0",
+    "rawSpec": "^1.4.1",
+    "spec": ">=1.4.1 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "file:cordova-common-1.4.0.tgz",
-  "_shasum": "b3ba73595caa34fe8250ac11f20a4ed44e7c84e4",
+  "_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.1.tgz",
+  "_shasum": "8b4f07b3199b398fff553b32bff66676ecd30ab9",
   "_shrinkwrap": null,
-  "_spec": "cordova-common@^1.4.0",
+  "_spec": "cordova-common@^1.4.1",
   "_where": "d:\\cordova\\cordova-windows",
   "author": {
     "name": "Apache Software Foundation"
@@ -79,8 +79,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "b3ba73595caa34fe8250ac11f20a4ed44e7c84e4",
-    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.0.tgz"
+    "shasum": "8b4f07b3199b398fff553b32bff66676ecd30ab9",
+    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.1.tgz"
   },
   "engineStrict": true,
   "engines": {
@@ -127,5 +127,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.4.0"
+  "version": "1.4.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
index a395c6d..e5b09a7 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
@@ -97,7 +97,10 @@ function remove_plugin_changes(pluginInfo, is_top_level) {
     var plugin_vars = is_top_level ?
         platform_config.installed_plugins[pluginInfo.id] :
         platform_config.dependent_plugins[pluginInfo.id];
-    var edit_config_changes = pluginInfo.getEditConfigs(self.platform);
+    var edit_config_changes = null;
+    if(pluginInfo.getEditConfigs) {
+        edit_config_changes = pluginInfo.getEditConfigs(self.platform);
+    }
 
     // get config munge, aka how did this plugin change various config files
     var config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
@@ -131,7 +134,12 @@ PlatformMunger.prototype.add_plugin_changes = add_plugin_changes;
 function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increment, plugin_force) {
     var self = this;
     var platform_config = self.platformJson.root;
-    var edit_config_changes = pluginInfo.getEditConfigs(self.platform);
+
+    var edit_config_changes = null;
+    if(pluginInfo.getEditConfigs) {
+        edit_config_changes = pluginInfo.getEditConfigs(self.platform);
+    }
+
     var config_munge;
 
     if (!edit_config_changes || edit_config_changes.length === 0) {

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
index aae59db..195164a 100644
--- a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
+++ b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
@@ -90,20 +90,24 @@ function findElementAttributeValue(attributeName, elems) {
 }
 
 ConfigParser.prototype = {
+    getAttribute: function(attr) {
+        return this.doc.getroot().attrib[attr];
+    },
+
     packageName: function(id) {
-        return this.doc.getroot().attrib['id'];
+        return this.getAttribute('id');
     },
     setPackageName: function(id) {
         this.doc.getroot().attrib['id'] = id;
     },
     android_packageName: function() {
-        return this.doc.getroot().attrib['android-packageName'];
+        return this.getAttribute('android-packageName');
     },
     android_activityName: function() {
-	return this.doc.getroot().attrib['android-activityName'];
+        return this.getAttribute('android-activityName');
     },
     ios_CFBundleIdentifier: function() {
-        return this.doc.getroot().attrib['ios-CFBundleIdentifier'];
+        return this.getAttribute('ios-CFBundleIdentifier');
     },
     name: function() {
         return getNodeTextSafe(this.doc.find('name'));
@@ -120,16 +124,16 @@ ConfigParser.prototype = {
         el.text = text;
     },
     version: function() {
-        return this.doc.getroot().attrib['version'];
+        return this.getAttribute('version');
     },
     windows_packageVersion: function() {
-        return this.doc.getroot().attrib('windows-packageVersion');
+        return this.getAttribute('windows-packageVersion');
     },
     android_versionCode: function() {
-        return this.doc.getroot().attrib['android-versionCode'];
+        return this.getAttribute('android-versionCode');
     },
     ios_CFBundleVersion: function() {
-        return this.doc.getroot().attrib['ios-CFBundleVersion'];
+        return this.getAttribute('ios-CFBundleVersion');
     },
     setVersion: function(value) {
         this.doc.getroot().attrib['version'] = value;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/src/CordovaCheck.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/CordovaCheck.js b/node_modules/cordova-common/src/CordovaCheck.js
new file mode 100644
index 0000000..46e733f
--- /dev/null
+++ b/node_modules/cordova-common/src/CordovaCheck.js
@@ -0,0 +1,76 @@
+/**
+    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.
+*/
+
+var fs = require('fs'),
+    path = require('path');
+
+function isRootDir(dir) {
+    if (fs.existsSync(path.join(dir, 'www'))) {
+        if (fs.existsSync(path.join(dir, 'config.xml'))) {
+            // For sure is.
+            if (fs.existsSync(path.join(dir, 'platforms'))) {
+                return 2;
+            } else {
+                return 1;
+            }
+        }
+        // Might be (or may be under platforms/).
+        if (fs.existsSync(path.join(dir, 'www', 'config.xml'))) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+// Runs up the directory chain looking for a .cordova directory.
+// IF it is found we are in a Cordova project.
+// Omit argument to use CWD.
+function isCordova(dir) {
+    if (!dir) {
+        // Prefer PWD over cwd so that symlinked dirs within your PWD work correctly (CB-5687).
+        var pwd = process.env.PWD;
+        var cwd = process.cwd();
+        if (pwd && pwd != cwd && pwd != 'undefined') {
+            return isCordova(pwd) || isCordova(cwd);
+        }
+        return isCordova(cwd);
+    }
+    var bestReturnValueSoFar = false;
+    for (var i = 0; i < 1000; ++i) {
+        var result = isRootDir(dir);
+        if (result === 2) {
+            return dir;
+        }
+        if (result === 1) {
+            bestReturnValueSoFar = dir;
+        }
+        var parentDir = path.normalize(path.join(dir, '..'));
+        // Detect fs root.
+        if (parentDir == dir) {
+            return bestReturnValueSoFar;
+        }
+        dir = parentDir;
+    }
+    console.error('Hit an unhandled case in CordovaCheck.isCordova');
+    return false;
+}
+
+module.exports = {
+    findProjectRoot : isCordova
+};

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/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 bf1f75b..0be0c41 100644
--- a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
+++ b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
@@ -318,6 +318,7 @@ function PluginInfo(dirname) {
                 parent: el.attrib.parent,
                 custom: isStrTrue(el.attrib.custom),
                 src: el.attrib.src,
+                spec: el.attrib.spec,
                 weak: isStrTrue(el.attrib.weak),
                 versions: el.attrib.versions,
                 targetDir: el.attrib['target-dir'],

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/cordova-common/src/util/xml-helpers.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/xml-helpers.js b/node_modules/cordova-common/src/util/xml-helpers.js
index f16eaaf..4b630fa 100644
--- a/node_modules/cordova-common/src/util/xml-helpers.js
+++ b/node_modules/cordova-common/src/util/xml-helpers.js
@@ -44,23 +44,9 @@ module.exports = {
             return false;
         }
 
-        var oneAttribKeys = Object.keys(one.attrib),
-            twoAttribKeys = Object.keys(two.attrib),
-            i = 0, attribName;
+        if (!attribMatch(one, two)) return false;
 
-        if (oneAttribKeys.length != twoAttribKeys.length) {
-            return false;
-        }
-
-        for (i; i < oneAttribKeys.length; i++) {
-            attribName = oneAttribKeys[i];
-
-            if (one.attrib[attribName] != two.attrib[attribName]) {
-                return false;
-            }
-        }
-
-        for (i; i < one._children.length; i++) {
+        for (var i = 0; i < one._children.length; i++) {
             if (!module.exports.equalNodes(one._children[i], two._children[i])) {
                 return false;
             }
@@ -287,33 +273,30 @@ function mergeXml(src, dest, platform, clobber) {
             query = srcTag + '',
             shouldMerge = true;
 
-        if (BLACKLIST.indexOf(srcTag) === -1) {
-            if (SINGLETONS.indexOf(srcTag) !== -1) {
-                foundChild = dest.find(query);
-                if (foundChild) {
-                    destChild = foundChild;
-                    dest.remove(destChild);
-                }
-            } else {
-                //Check for an exact match and if you find one don't add
-                Object.getOwnPropertyNames(srcChild.attrib).forEach(function (attribute) {
-                    query += '[@' + attribute + '="' + srcChild.attrib[attribute] + '"]';
-                });
-                var foundChildren = dest.findall(query);
-                for(var i = 0; i < foundChildren.length; i++) {
-                    foundChild = foundChildren[i];
-                    if (foundChild && textMatch(srcChild, foundChild) && (Object.keys(srcChild.attrib).length==Object.keys(foundChild.attrib).length)) {
-                        destChild = foundChild;
-                        dest.remove(destChild);
-                        shouldMerge = false;
-                        break;
-                    }
-                }
-            }
+        if (BLACKLIST.indexOf(srcTag) !== -1) return;
 
-            mergeXml(srcChild, destChild, platform, clobber && shouldMerge);
-            dest.append(destChild);
+        if (SINGLETONS.indexOf(srcTag) !== -1) {
+            foundChild = dest.find(query);
+            if (foundChild) {
+                destChild = foundChild;
+                dest.remove(destChild);
+            }
+        } else {
+            //Check for an exact match and if you find one don't add
+            var mergeCandidates = dest.findall(query)
+            .filter(function (foundChild) {
+                return foundChild && textMatch(srcChild, foundChild) && attribMatch(srcChild, foundChild);
+            });
+
+            if (mergeCandidates.length > 0) {
+                destChild = mergeCandidates[0];
+                dest.remove(destChild);
+                shouldMerge = false;
+            }
         }
+
+        mergeXml(srcChild, destChild, platform, clobber && shouldMerge);
+        dest.append(destChild);
     }
 
     function removeDuplicatePreferences(xml) {
@@ -345,3 +328,22 @@ function textMatch(elm1, elm2) {
         text2 = elm2.text ? elm2.text.replace(/\s+/, '') : '';
     return (text1 === '' || text1 === text2);
 }
+
+function attribMatch(one, two) {
+    var oneAttribKeys = Object.keys(one.attrib);
+    var twoAttribKeys = Object.keys(two.attrib);
+
+    if (oneAttribKeys.length != twoAttribKeys.length) {
+        return false;
+    }
+
+    for (var i = 0; i < oneAttribKeys.length; i++) {
+        var attribName = oneAttribKeys[i];
+
+        if (one.attrib[attribName] != two.attrib[attribName]) {
+            return false;
+        }
+    }
+
+    return true;
+}

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/minimatch/minimatch.js
----------------------------------------------------------------------
diff --git a/node_modules/minimatch/minimatch.js b/node_modules/minimatch/minimatch.js
index 830a272..5b5f8cf 100644
--- a/node_modules/minimatch/minimatch.js
+++ b/node_modules/minimatch/minimatch.js
@@ -9,6 +9,14 @@ try {
 var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
 var expand = require('brace-expansion')
 
+var plTypes = {
+  '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
+  '?': { open: '(?:', close: ')?' },
+  '+': { open: '(?:', close: ')+' },
+  '*': { open: '(?:', close: ')*' },
+  '@': { open: '(?:', close: ')' }
+}
+
 // any single thing other than /
 // don't need to escape / when using new RegExp()
 var qmark = '[^/]'
@@ -277,7 +285,6 @@ function parse (pattern, isSub) {
   // ? => one single character
   var patternListStack = []
   var negativeLists = []
-  var plType
   var stateChar
   var inClass = false
   var reClassStart = -1
@@ -376,11 +383,12 @@ function parse (pattern, isSub) {
           continue
         }
 
-        plType = stateChar
         patternListStack.push({
-          type: plType,
+          type: stateChar,
           start: i - 1,
-          reStart: re.length
+          reStart: re.length,
+          open: plTypes[stateChar].open,
+          close: plTypes[stateChar].close
         })
         // negation is (?:(?!js)[^/]*)
         re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
@@ -396,24 +404,14 @@ function parse (pattern, isSub) {
 
         clearStateChar()
         hasMagic = true
-        re += ')'
         var pl = patternListStack.pop()
-        plType = pl.type
         // negation is (?:(?!js)[^/]*)
         // The others are (?:<pattern>)<type>
-        switch (plType) {
-          case '!':
-            negativeLists.push(pl)
-            re += ')[^/]*?)'
-            pl.reEnd = re.length
-            break
-          case '?':
-          case '+':
-          case '*':
-            re += plType
-            break
-          case '@': break // the default anyway
+        re += pl.close
+        if (pl.type === '!') {
+          negativeLists.push(pl)
         }
+        pl.reEnd = re.length
       continue
 
       case '|':
@@ -520,7 +518,8 @@ function parse (pattern, isSub) {
   // Go through and escape them, taking care not to double-escape any
   // | chars that were already escaped.
   for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
-    var tail = re.slice(pl.reStart + 3)
+    var tail = re.slice(pl.reStart + pl.open.length)
+    this.debug('setting tail', re, pl)
     // maybe some even number of \, then maybe 1 \, followed by a |
     tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
       if (!$2) {
@@ -537,7 +536,7 @@ function parse (pattern, isSub) {
       return $1 + $1 + $2 + '|'
     })
 
-    this.debug('tail=%j\n   %s', tail, tail)
+    this.debug('tail=%j\n   %s', tail, tail, pl, re)
     var t = pl.type === '*' ? star
       : pl.type === '?' ? qmark
       : '\\' + pl.type

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/node_modules/minimatch/package.json
----------------------------------------------------------------------
diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json
index 7e5c1f5..cce7587 100644
--- a/node_modules/minimatch/package.json
+++ b/node_modules/minimatch/package.json
@@ -14,20 +14,20 @@
     ]
   ],
   "_from": "minimatch@>=3.0.0 <4.0.0",
-  "_id": "minimatch@3.0.2",
+  "_id": "minimatch@3.0.3",
   "_inCache": true,
   "_installable": true,
   "_location": "/minimatch",
   "_nodeVersion": "4.4.4",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/minimatch-3.0.2.tgz_1466194379770_0.11417287751100957"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/minimatch-3.0.3.tgz_1470678322731_0.1892083385027945"
   },
   "_npmUser": {
     "name": "isaacs",
     "email": "i@izs.me"
   },
-  "_npmVersion": "3.9.1",
+  "_npmVersion": "3.10.6",
   "_phantomChildren": {},
   "_requested": {
     "raw": "minimatch@^3.0.0",
@@ -42,8 +42,8 @@
     "/cordova-common",
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz",
-  "_shasum": "0f398a7300ea441e9c348c83d98ab8c9dbf9c40a",
+  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
+  "_shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
   "_shrinkwrap": null,
   "_spec": "minimatch@^3.0.0",
   "_where": "d:\\cordova\\cordova-windows\\node_modules\\cordova-common",
@@ -65,8 +65,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "0f398a7300ea441e9c348c83d98ab8c9dbf9c40a",
-    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz"
+    "shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
+    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
   },
   "engines": {
     "node": "*"
@@ -74,7 +74,7 @@
   "files": [
     "minimatch.js"
   ],
-  "gitHead": "81edb7c763abd31ba981c87ec5e835f178786be0",
+  "gitHead": "eed89491bd4a4e6bc463aac0dfb5c29ef0d1dc13",
   "homepage": "https://github.com/isaacs/minimatch#readme",
   "license": "ISC",
   "main": "minimatch.js",
@@ -95,5 +95,5 @@
     "posttest": "standard minimatch.js test/*.js",
     "test": "tap test/*.js"
   },
-  "version": "3.0.2"
+  "version": "3.0.3"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/85fe3553/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 6dbfe70..946e712 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
     "jshint": "jshint bin && jshint template && jshint spec"
   },
   "dependencies": {
-    "cordova-common": "^1.4.0",
+    "cordova-common": "^1.4.1",
     "elementtree": "^0.1.6",
     "node-uuid": "^1.4.3",
     "nopt": "^3.0.4",


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


[09/21] cordova-windows git commit: CB-11993 - windows platform doesn't test all node versions on appveyor and travis

Posted by da...@apache.org.
CB-11993 - windows platform doesn't test all node versions on appveyor and travis

 This closes #201


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

Branch: refs/heads/4.4.x
Commit: 2dfdc16c8aee03cfde262f8a87b3cf4d4bad77f8
Parents: adddd08
Author: Shazron Abdullah <sh...@apache.org>
Authored: Sat Oct 15 00:33:00 2016 -0700
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:55 2016 +0300

----------------------------------------------------------------------
 .travis.yml                  |  7 +++++++
 appveyor.yml                 |  8 ++++++++
 spec/unit/deployment.spec.js | 14 ++++++++++++++
 3 files changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/2dfdc16c/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 89d3468..dcbeeda 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,12 @@
 language: node_js
 sudo: false
+git:
+  depth: 10
+node_js:
+  - "0.10"
+  - "0.12"
+  - "4"
+  - "6"
 install:
     - npm install
     - npm install -g codecov

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/2dfdc16c/appveyor.yml
----------------------------------------------------------------------
diff --git a/appveyor.yml b/appveyor.yml
index 808c28a..b8d1fea 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -19,7 +19,15 @@
 # appveyor file
 # http://www.appveyor.com/docs/appveyor-yml
 
+environment:
+  matrix:
+  - nodejs_version: "0.10"
+  - nodejs_version: "0.12"
+  - nodejs_version: "4"
+  - nodejs_version: "6"
+
 install:
+  - ps: Install-Product node $env:nodejs_version
   - npm install
 
 build: off

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/2dfdc16c/spec/unit/deployment.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/deployment.spec.js b/spec/unit/deployment.spec.js
index 97365fb..b9a5959 100644
--- a/spec/unit/deployment.spec.js
+++ b/spec/unit/deployment.spec.js
@@ -29,6 +29,20 @@ var TEST_APP_PACKAGE_NAME = '"c:\\testapppackage.appx"',
 
 describe('The correct version of the app deployment tool is obtained.', function() {
 
+    var mockedProgramFiles = process.env['ProgramFiles(x86)'];
+
+    beforeEach(function() {
+        process.env['ProgramFiles(x86)'] = path.join('c:/Program Files (x86)');
+    });
+
+    afterEach(function() {
+        if (mockedProgramFiles) {
+            process.env['ProgramFiles(x86)'] = mockedProgramFiles;
+        } else {
+            delete process.env['ProgramFiles(x86)'];
+        }
+    });
+
     it('Provides an AppDeployCmdTool when 8.1 is requested.', function() {
 
         var tool = deployment.getDeploymentTool('8.1');


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


[12/21] cordova-windows git commit: output message, catch exception if require fails, change eventEmitter to events to be consistent with ios+android

Posted by da...@apache.org.
output message, catch exception if require fails, change eventEmitter to events to be consistent with ios+android


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

Branch: refs/heads/4.4.x
Commit: 44e400c496cfbc0b9d304a47bd939dfa18e7551c
Parents: ddb7f39
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Tue Oct 11 23:26:01 2016 -0700
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:55 2016 +0300

----------------------------------------------------------------------
 template/cordova/Api.js | 50 +++++++++++++++++++++++++++++---------------
 1 file changed, 33 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/44e400c4/template/cordova/Api.js
----------------------------------------------------------------------
diff --git a/template/cordova/Api.js b/template/cordova/Api.js
index 1fb62ce..70e4797 100644
--- a/template/cordova/Api.js
+++ b/template/cordova/Api.js
@@ -86,14 +86,24 @@ function Api(platform, platformRootDir, eventEmitter) {
  * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
  *   instance or rejected with CordovaError.
  */
-Api.createPlatform = function (destinationDir, projectConfig, options, eventEmitter) {
-    setupEvents(eventEmitter);
-    return require('../../bin/lib/create')
-    .create(destinationDir, projectConfig, options)
-    .then(function () {
-        var PlatformApi = require(path.resolve(destinationDir, 'cordova/Api'));
-        return new PlatformApi(PLATFORM, destinationDir, eventEmitter);
-    });
+Api.createPlatform = function (destinationDir, projectConfig, options, events) {
+    setupEvents(events);
+    var result;
+
+    try {
+        result = require('../../bin/lib/create')
+        .create(destinationDir, projectConfig, options)
+        .then(function () {
+            var PlatformApi = require(path.resolve(destinationDir, 'cordova/Api'));
+            return new PlatformApi(PLATFORM, destinationDir, events);
+        });
+    }
+    catch(e) {
+        events.emit('error','createPlatform is not callable from the windows project API.');
+        throw(e);
+    }
+
+    return result;
 };
 
 /**
@@ -106,19 +116,25 @@ Api.createPlatform = function (destinationDir, projectConfig, options, eventEmit
  *   should override the default one from platform.
  * @param  {Boolean}  [options.link=false]  Flag that indicates that platform's sources
  *   will be linked to installed platform instead of copying.
- * @param {EventEmitter} [eventEmitter] The emitter that will be used for logging
+ * @param {EventEmitter} [events] The emitter that will be used for logging
  *
  * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
  *   instance or rejected with CordovaError.
  */
-Api.updatePlatform = function (destinationDir, options, eventEmitter) {
-    setupEvents(eventEmitter);
-    return require('../../bin/lib/update')
-    .update(destinationDir, options)
-    .then(function () {
-        var PlatformApi = require(path.resolve(destinationDir, 'cordova/Api'));
-        return new PlatformApi(PLATFORM, destinationDir, eventEmitter);
-    });
+Api.updatePlatform = function (destinationDir, options, events) {
+    setupEvents(events);
+    try {
+        return require('../../bin/lib/update')
+        .update(destinationDir, options)
+        .then(function () {
+            var PlatformApi = require(path.resolve(destinationDir, 'cordova/Api'));
+            return new PlatformApi(PLATFORM, destinationDir, events);
+        });
+    }
+    catch(e) {
+        events.emit('error','updatePlatform is not callable from the windows project API.');
+        throw(e);
+    }
 };
 
 /**


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


[03/21] cordova-windows git commit: CB-11478 Parse --archs option consistently

Posted by da...@apache.org.
CB-11478 Parse --archs option consistently

Update arguments parsing logic to be consistent with build command
where passing --archs as CLI argument (cordova build --archs) or platform
arg, behind -- (cordova build -- --archs) doesn't make any difference


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

Branch: refs/heads/4.4.x
Commit: 5e45d70063add74f6ca2a632b82cc677189c1131
Parents: 96533be
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Tue Aug 2 13:18:58 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:53 2016 +0300

----------------------------------------------------------------------
 spec/unit/run.spec.js       | 60 ++++++++++++++++++++++++++++++++++++++++
 template/cordova/lib/run.js | 15 ++++++----
 2 files changed, 70 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5e45d700/spec/unit/run.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/run.spec.js b/spec/unit/run.spec.js
index 5a2cbd7..6ffcda0 100644
--- a/spec/unit/run.spec.js
+++ b/spec/unit/run.spec.js
@@ -16,6 +16,7 @@
     specific language governing permissions and limitations
     under the License.
 */
+
 var Q = require('q'),
     path = require('path'),
     rewire = require('rewire'),
@@ -23,6 +24,9 @@ var Q = require('q'),
     buildPath = path.join(platformRoot, 'cordova', 'build'),
     run = rewire(platformRoot + '/cordova/lib/run.js');
 
+var utils = require(path.join(platformRoot, 'cordova/lib/utils'));
+var packages = require(path.join(platformRoot, 'cordova/lib/package'));
+
 describe('run method', function() {
     var consoleLogOriginal,
         isCordovaProjectOriginal,
@@ -244,4 +248,60 @@ describe('run method', function() {
             done();
         });
     });
+
+    it('spec.8 should accept --archs parameter either as cli or as platform arg', function(done) {
+
+        spyOn(utils, 'isCordovaProject').andReturn(true);
+        spyOn(packages, 'getPackage').andReturn(Q({ arch: 'arm' }));
+        spyOn(packages, 'deployToDesktop').andReturn(Q());
+
+        var anyString = jasmine.any(String);
+        var expectedDeployOptions = jasmine.objectContaining({arch: 'arm'});
+
+        var fail = jasmine.createSpy('fail')
+        .andCallFake(function (err) {
+            console.error(err);
+        });
+
+        run.run({nobuild: true, argv: ['--archs=arm'] })
+        .then(function () {
+            expect(packages.getPackage).toHaveBeenCalledWith(anyString, anyString, 'arm');
+            expect(packages.deployToDesktop).toHaveBeenCalledWith(expectedDeployOptions, anyString, anyString);
+        })
+        .then(function () {
+            return run.run({nobuild: true, archs: 'arm' });
+        })
+        .then(function () {
+            expect(packages.getPackage).toHaveBeenCalledWith(anyString, anyString, 'arm');
+            expect(packages.deployToDesktop).toHaveBeenCalledWith(expectedDeployOptions, anyString, anyString);
+        })
+        .catch(fail)
+        .finally(function() {
+            expect(fail).not.toHaveBeenCalled();
+            done();
+        });
+    });
+
+    it('spec.9 should fall back to anycpu if --archs parameter is not specified', function(done) {
+
+        spyOn(utils, 'isCordovaProject').andReturn(true);
+        spyOn(packages, 'getPackage').andReturn(Q({ arch: 'anycpu' }));
+        spyOn(packages, 'deployToDesktop').andReturn(Q());
+
+        var anyString = jasmine.any(String);
+        var expectedDeployOptions = jasmine.objectContaining({arch: 'anycpu'});
+
+        var fail = jasmine.createSpy('fail');
+
+        run.run({nobuild: true})
+        .then(function () {
+            expect(packages.getPackage).toHaveBeenCalledWith(anyString, anyString, 'anycpu');
+            expect(packages.deployToDesktop).toHaveBeenCalledWith(expectedDeployOptions, anyString, anyString);
+        })
+        .catch(fail)
+        .finally(function() {
+            expect(fail).not.toHaveBeenCalled();
+            done();
+        });
+    });
 });

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5e45d700/template/cordova/lib/run.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/run.js b/template/cordova/lib/run.js
index f67bd20..b2f362c 100644
--- a/template/cordova/lib/run.js
+++ b/template/cordova/lib/run.js
@@ -39,7 +39,7 @@ module.exports.run = function (options) {
 
     // parse arg
     var args  = nopt({
-        'archs': String,
+        'archs': [String],
         'phone': Boolean,
         'win': Boolean,
         'appx': String,
@@ -58,9 +58,14 @@ module.exports.run = function (options) {
     }
 
     // Get build/deploy options
-    var buildType    = options.release ? 'release' : 'debug',
-        buildArchs   = args.archs ? args.archs.split(' ') : ['anycpu'],
-        deployTarget = options.target ? options.target : (options.emulator ? 'emulator' : 'device');
+    var buildType    = options.release ? 'release' : 'debug';
+    // CB-11478 Allow to specify 'archs' parameter as either cli or platform
+    // option i.e. 'cordova run --archs' vs. 'cordova run -- --archs'
+    var archs = options.archs || args.archs || ['anycpu'];
+    if (typeof archs === 'string') { archs = archs.split(' '); }
+
+    var buildArchs = archs.map(function (arch) { return arch.toLowerCase(); });
+    var deployTarget = options.target ? options.target : (options.emulator ? 'emulator' : 'device');
 
      var buildTargets = build.getBuildTargets(args.win, args.phone, args.appx);
 
@@ -73,7 +78,7 @@ module.exports.run = function (options) {
      var projectType = projFileToType(buildTargets[0]);
 
     // if --nobuild isn't specified then build app first
-    var buildPackages = options.nobuild ? packages.getPackage(projectType, buildType, buildArchs) : build.run.call(this, options);
+    var buildPackages = options.nobuild ? packages.getPackage(projectType, buildType, buildArchs[0]) : build.run.call(this, options);
 
     // buildPackages also deploys bundles
     return buildPackages


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


[02/21] cordova-windows git commit: CB-11657 Add bom to www after plugin operations

Posted by da...@apache.org.
CB-11657 Add bom to www after plugin operations

Since cordova is not calling `prepare` immediately after plugin
has been installed/removed, we need to take care of adding BOM ourselves.
Otherwise user can run into situation when project, built from Visual
Studio immediately after installation/removal of plugin, will not pass
WACK tests due to missing BOM in some files.


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

Branch: refs/heads/4.4.x
Commit: df242ce83afc781508609787defb089fc7649574
Parents: 5e45d70
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Wed Aug 10 13:04:24 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:53 2016 +0300

----------------------------------------------------------------------
 template/cordova/Api.js         | 13 ++++++++++++
 template/cordova/lib/prepare.js | 41 ++++++++++++++++++++++++------------
 2 files changed, 40 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/df242ce8/template/cordova/Api.js
----------------------------------------------------------------------
diff --git a/template/cordova/Api.js b/template/cordova/Api.js
index 00cf29a..1fb62ce 100644
--- a/template/cordova/Api.js
+++ b/template/cordova/Api.js
@@ -179,6 +179,8 @@ Api.prototype.prepare = function (cordovaProject, prepareOptions) {
  */
 Api.prototype.addPlugin = function (plugin, installOptions) {
 
+    var self = this;
+
     var jsProject = JsprojManager.getProject(this.root);
     installOptions = installOptions || {};
     installOptions.variables = installOptions.variables || {};
@@ -189,6 +191,11 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
 
     return PluginManager.get(this.platform, this.locations, jsProject)
         .addPlugin(plugin, installOptions)
+        .then(function () {
+            // CB-11657 Add BOM to www files here because files added by plugin
+            // probably don't have it. Prepare would add BOM but it might not be called
+            return require('./lib/prepare').addBOMSignature(self.locations.www);
+        })
         // CB-11022 return non-falsy value to indicate
         // that there is no need to run prepare after
         .thenResolve(true);
@@ -208,9 +215,15 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
  *   CordovaError instance.
  */
 Api.prototype.removePlugin = function (plugin, uninstallOptions) {
+    var self = this;
     var jsProject = JsprojManager.getProject(this.root);
     return PluginManager.get(this.platform, this.locations, jsProject)
         .removePlugin(plugin, uninstallOptions)
+        .then(function () {
+            // CB-11657 Add BOM to cordova_plugins, since it is was
+            // regenerated after plugin uninstallation and does not have BOM
+            return require('./lib/prepare').addBOMToFile(path.resolve(self.locations.www, 'cordova_plugins.js'));
+        })
         // CB-11022 return non-falsy value to indicate
         // that there is no need to run prepare after
         .thenResolve(true);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/df242ce8/template/cordova/lib/prepare.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/prepare.js b/template/cordova/lib/prepare.js
index 0067803..53838d5 100644
--- a/template/cordova/lib/prepare.js
+++ b/template/cordova/lib/prepare.js
@@ -497,24 +497,37 @@ module.exports.clean = function (options) {
  */
 function addBOMSignature(directory) {
     shell.ls('-R', directory)
-    .forEach(function (file) {
-        if (!file.match(/\.(js|htm|html|css|json)$/i)) {
-            return;
-        }
+    .map(function (file) {
+        return path.join(directory, file);
+    })
+    .forEach(addBOMToFile);
+}
 
-        var filePath = path.join(directory, file);
-        // skip if this is a folder
-        if (!fs.lstatSync(filePath).isFile()) {
-            return;
-        }
+/**
+ * Adds BOM signature at the beginning of file, specified by absolute
+ * path. Ignores directories and non-js, -html or -css files.
+ *
+ * @param {String} file Absolute path to file to add BOM to
+ */
+function addBOMToFile(file) {
+    if (!file.match(/\.(js|htm|html|css|json)$/i)) {
+        return;
+    }
 
-        var content = fs.readFileSync(filePath);
-        if (content[0] !== 0xEF && content[1] !== 0xBE && content[2] !== 0xBB) {
-            fs.writeFileSync(filePath, '\ufeff' + content);
-        }
-    });
+    // skip if this is a folder
+    if (!fs.lstatSync(file).isFile()) {
+        return;
+    }
+
+    var content = fs.readFileSync(file);
+    if (content[0] !== 0xEF && content[1] !== 0xBE && content[2] !== 0xBB) {
+        fs.writeFileSync(file, '\ufeff' + content);
+    }
 }
 
+module.exports.addBOMSignature = addBOMSignature;
+module.exports.addBOMToFile = addBOMToFile;
+
 /**
  * Updates config files in project based on app's config.xml and config munge,
  *   generated by plugins.


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


[18/21] cordova-windows git commit: CB-12042 Copy base.js to www directory at create

Posted by da...@apache.org.
CB-12042 Copy base.js to www directory at create


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

Branch: refs/heads/4.4.x
Commit: fb894defe63f6ba31a13baf8ccf51aa440176ae2
Parents: 966acc8
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Thu Oct 20 16:03:22 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:57 2016 +0300

----------------------------------------------------------------------
 bin/lib/create.js | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/fb894def/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index eb6bb7d..08c5156 100644
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -92,6 +92,10 @@ module.exports.create = function (destinationDir, config, options) {
     recursiveCreateDirectory(destinationDirectory);
     shell.cp('-f', srcBaseJsPath, destBaseJsPath);
 
+    // CB-12042 Also copy base.js to www directory
+    shell.mkdir('-p', path.join(projectPath, 'www/WinJS/js'));
+    shell.cp('-f', srcBaseJsPath, path.join(projectPath, 'www/WinJS/js/base.js'));
+
     // replace specific values in manifests' templates
     events.emit('verbose', 'Updating manifest files with project configuration.');
     [ 'package.windows.appxmanifest', 'package.phone.appxmanifest',


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


[05/21] cordova-windows git commit: Add missing license headers to prebuild scripts

Posted by da...@apache.org.
Add missing license headers to prebuild scripts


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

Branch: refs/heads/4.4.x
Commit: c1d331e76b7a5b37d3fe93a13f4cd9a9208fecba
Parents: 85fe355
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Tue Aug 30 18:03:52 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:54 2016 +0300

----------------------------------------------------------------------
 template/cordova/prebuild-10.js       | 18 ++++++++++++++++++
 template/cordova/prebuild-81.js       | 18 ++++++++++++++++++
 template/cordova/prebuild-phone-81.js | 18 ++++++++++++++++++
 template/cordova/prebuild.js          | 19 +++++++++++++++++++
 4 files changed, 73 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c1d331e7/template/cordova/prebuild-10.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-10.js b/template/cordova/prebuild-10.js
index 6c081f3..c3183ff 100644
--- a/template/cordova/prebuild-10.js
+++ b/template/cordova/prebuild-10.js
@@ -1,2 +1,20 @@
+/**
+    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.
+*/
 var patch = require('./prebuild');
 patch('10');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c1d331e7/template/cordova/prebuild-81.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-81.js b/template/cordova/prebuild-81.js
index 9d8103b..c37284b 100644
--- a/template/cordova/prebuild-81.js
+++ b/template/cordova/prebuild-81.js
@@ -1,2 +1,20 @@
+/**
+    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.
+*/
 var patch = require('./prebuild');
 patch('8.1');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c1d331e7/template/cordova/prebuild-phone-81.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild-phone-81.js b/template/cordova/prebuild-phone-81.js
index f9dcb17..d3f7fa8 100644
--- a/template/cordova/prebuild-phone-81.js
+++ b/template/cordova/prebuild-phone-81.js
@@ -1,2 +1,20 @@
+/**
+    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.
+*/
 var patch = require('./prebuild');
 patch('phone-8.1');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/c1d331e7/template/cordova/prebuild.js
----------------------------------------------------------------------
diff --git a/template/cordova/prebuild.js b/template/cordova/prebuild.js
index 6dbafa0..f8aab91 100644
--- a/template/cordova/prebuild.js
+++ b/template/cordova/prebuild.js
@@ -1,3 +1,22 @@
+/**
+    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.
+*/
+
 // https://issues.apache.org/jira/browse/CB-11658 activated event is not fired on Windows 10 RS1
 // Patching start page to include WinJS/base.js reference to HTML as a workaround
 


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