You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2016/05/27 07:08:56 UTC

[03/51] [abbrv] [partial] cordova-windows git commit: CB-11117: Bundle updated node modules

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/cdata-end-split.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/cdata-end-split.js b/node_modules/sax/test/cdata-end-split.js
new file mode 100644
index 0000000..b41bd00
--- /dev/null
+++ b/node_modules/sax/test/cdata-end-split.js
@@ -0,0 +1,15 @@
+
+require(__dirname).test({
+  expect : [
+    ["opentag", {"name": "R","attributes": {}}],
+    ["opencdata", undefined],
+    ["cdata", " this is "],
+    ["closecdata", undefined],
+    ["closetag", "R"]
+  ]
+})
+  .write("<r><![CDATA[ this is ]")
+  .write("]>")
+  .write("</r>")
+  .close();
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/cdata-fake-end.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/cdata-fake-end.js b/node_modules/sax/test/cdata-fake-end.js
new file mode 100644
index 0000000..07aeac4
--- /dev/null
+++ b/node_modules/sax/test/cdata-fake-end.js
@@ -0,0 +1,28 @@
+
+var p = require(__dirname).test({
+  expect : [
+    ["opentag", {"name": "R","attributes": {}}],
+    ["opencdata", undefined],
+    ["cdata", "[[[[[[[[]]]]]]]]"],
+    ["closecdata", undefined],
+    ["closetag", "R"]
+  ]
+})
+var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
+for (var i = 0; i < x.length ; i ++) {
+  p.write(x.charAt(i))
+}
+p.close();
+
+
+var p2 = require(__dirname).test({
+  expect : [
+    ["opentag", {"name": "R","attributes": {}}],
+    ["opencdata", undefined],
+    ["cdata", "[[[[[[[[]]]]]]]]"],
+    ["closecdata", undefined],
+    ["closetag", "R"]
+  ]
+})
+var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
+p2.write(x).close();

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/cdata-multiple.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/cdata-multiple.js b/node_modules/sax/test/cdata-multiple.js
new file mode 100644
index 0000000..dab2015
--- /dev/null
+++ b/node_modules/sax/test/cdata-multiple.js
@@ -0,0 +1,15 @@
+
+require(__dirname).test({
+  expect : [
+    ["opentag", {"name": "R","attributes": {}}],
+    ["opencdata", undefined],
+    ["cdata", " this is "],
+    ["closecdata", undefined],
+    ["opencdata", undefined],
+    ["cdata", "character data \uf8ff "],
+    ["closecdata", undefined],
+    ["closetag", "R"]
+  ]
+}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[")
+  .write("character data \uf8ff ").write("]]></r>").close();
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/cdata.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/cdata.js b/node_modules/sax/test/cdata.js
new file mode 100644
index 0000000..0f09cce
--- /dev/null
+++ b/node_modules/sax/test/cdata.js
@@ -0,0 +1,10 @@
+require(__dirname).test({
+  xml : "<r><![CDATA[ this is character data \uf8ff ]]></r>",
+  expect : [
+    ["opentag", {"name": "R","attributes": {}}],
+    ["opencdata", undefined],
+    ["cdata", " this is character data \uf8ff "],
+    ["closecdata", undefined],
+    ["closetag", "R"]
+  ]
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/index.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/index.js b/node_modules/sax/test/index.js
new file mode 100644
index 0000000..d4e1ef4
--- /dev/null
+++ b/node_modules/sax/test/index.js
@@ -0,0 +1,86 @@
+var globalsBefore = JSON.stringify(Object.keys(global))
+  , util = require("util")
+  , assert = require("assert")
+  , fs = require("fs")
+  , path = require("path")
+  , sax = require("../lib/sax")
+
+exports.sax = sax
+
+// handy way to do simple unit tests
+// if the options contains an xml string, it'll be written and the parser closed.
+// otherwise, it's assumed that the test will write and close.
+exports.test = function test (options) {
+  var xml = options.xml
+    , parser = sax.parser(options.strict, options.opt)
+    , expect = options.expect
+    , e = 0
+  sax.EVENTS.forEach(function (ev) {
+    parser["on" + ev] = function (n) {
+      if (process.env.DEBUG) {
+        console.error({ expect: expect[e]
+                      , actual: [ev, n] })
+      }
+      if (e >= expect.length && (ev === "end" || ev === "ready")) return
+      assert.ok( e < expect.length,
+        "expectation #"+e+" "+util.inspect(expect[e])+"\n"+
+        "Unexpected event: "+ev+" "+(n ? util.inspect(n) : ""))
+      var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n)
+      assert.equal(ev, expect[e][0],
+        "expectation #"+e+"\n"+
+        "Didn't get expected event\n"+
+        "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
+        "actual: "+ev+" "+inspected+"\n")
+      if (ev === "error") assert.equal(n.message, expect[e][1])
+      else assert.deepEqual(n, expect[e][1],
+        "expectation #"+e+"\n"+
+        "Didn't get expected argument\n"+
+        "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
+        "actual: "+ev+" "+inspected+"\n")
+      e++
+      if (ev === "error") parser.resume()
+    }
+  })
+  if (xml) parser.write(xml).close()
+  return parser
+}
+
+if (module === require.main) {
+  var running = true
+    , failures = 0
+
+  function fail (file, er) {
+    util.error("Failed: "+file)
+    util.error(er.stack || er.message)
+    failures ++
+  }
+
+  fs.readdir(__dirname, function (error, files) {
+    files = files.filter(function (file) {
+      return (/\.js$/.exec(file) && file !== 'index.js')
+    })
+    var n = files.length
+      , i = 0
+    console.log("0.." + n)
+    files.forEach(function (file) {
+      // run this test.
+      try {
+        require(path.resolve(__dirname, file))
+        var globalsAfter = JSON.stringify(Object.keys(global))
+        if (globalsAfter !== globalsBefore) {
+          var er = new Error("new globals introduced\n"+
+                             "expected: "+globalsBefore+"\n"+
+                             "actual:   "+globalsAfter)
+          globalsBefore = globalsAfter
+          throw er
+        }
+        console.log("ok " + (++i) + " - " + file)
+      } catch (er) {
+        console.log("not ok "+ (++i) + " - " + file)
+        fail(file, er)
+      }
+    })
+    if (!failures) return console.log("#all pass")
+    else return console.error(failures + " failure" + (failures > 1 ? "s" : ""))
+  })
+}

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/issue-23.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/issue-23.js b/node_modules/sax/test/issue-23.js
new file mode 100644
index 0000000..e7991b2
--- /dev/null
+++ b/node_modules/sax/test/issue-23.js
@@ -0,0 +1,43 @@
+
+require(__dirname).test
+  ( { xml :
+      "<compileClassesResponse>"+
+        "<result>"+
+          "<bodyCrc>653724009</bodyCrc>"+
+          "<column>-1</column>"+
+          "<id>01pG0000002KoSUIA0</id>"+
+          "<line>-1</line>"+
+          "<name>CalendarController</name>"+
+          "<success>true</success>"+
+        "</result>"+
+      "</compileClassesResponse>"
+
+    , expect :
+      [ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ]
+      , [ "opentag", { name : "RESULT", attributes: {} } ]
+      , [ "opentag", { name: "BODYCRC", attributes: {} } ]
+      , [ "text", "653724009" ]
+      , [ "closetag", "BODYCRC" ]
+      , [ "opentag", { name: "COLUMN", attributes: {} } ]
+      , [ "text", "-1" ]
+      , [ "closetag", "COLUMN" ]
+      , [ "opentag", { name: "ID", attributes: {} } ]
+      , [ "text", "01pG0000002KoSUIA0" ]
+      , [ "closetag", "ID" ]
+      , [ "opentag", {name: "LINE", attributes: {} } ]
+      , [ "text", "-1" ]
+      , [ "closetag", "LINE" ]
+      , [ "opentag", {name: "NAME", attributes: {} } ]
+      , [ "text", "CalendarController" ]
+      , [ "closetag", "NAME" ]
+      , [ "opentag", {name: "SUCCESS", attributes: {} } ]
+      , [ "text", "true" ]
+      , [ "closetag", "SUCCESS" ]
+      , [ "closetag", "RESULT" ]
+      , [ "closetag", "COMPILECLASSESRESPONSE" ]
+      ]
+    , strict : false
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/issue-30.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/issue-30.js b/node_modules/sax/test/issue-30.js
new file mode 100644
index 0000000..c2cc809
--- /dev/null
+++ b/node_modules/sax/test/issue-30.js
@@ -0,0 +1,24 @@
+// https://github.com/isaacs/sax-js/issues/33
+require(__dirname).test
+  ( { xml : "<xml>\n"+
+            "<!-- \n"+
+            "  comment with a single dash- in it\n"+
+            "-->\n"+
+            "<data/>\n"+
+            "</xml>"
+
+    , expect :
+      [ [ "opentag", { name: "xml", attributes: {} } ]
+      , [ "text", "\n" ]
+      , [ "comment", " \n  comment with a single dash- in it\n" ]
+      , [ "text", "\n" ]
+      , [ "opentag", { name: "data", attributes: {} } ]
+      , [ "closetag", "data" ]
+      , [ "text", "\n" ]
+      , [ "closetag", "xml" ]
+      ]
+    , strict : true
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/issue-35.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/issue-35.js b/node_modules/sax/test/issue-35.js
new file mode 100644
index 0000000..7c521c5
--- /dev/null
+++ b/node_modules/sax/test/issue-35.js
@@ -0,0 +1,15 @@
+// https://github.com/isaacs/sax-js/issues/35
+require(__dirname).test
+  ( { xml : "<xml>&#Xd;&#X0d;\n"+
+            "</xml>"
+
+    , expect :
+      [ [ "opentag", { name: "xml", attributes: {} } ]
+      , [ "text", "\r\r\n" ]
+      , [ "closetag", "xml" ]
+      ]
+    , strict : true
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/issue-47.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/issue-47.js b/node_modules/sax/test/issue-47.js
new file mode 100644
index 0000000..911c7d0
--- /dev/null
+++ b/node_modules/sax/test/issue-47.js
@@ -0,0 +1,13 @@
+// https://github.com/isaacs/sax-js/issues/47
+require(__dirname).test
+  ( { xml : '<a href="query.svc?x=1&y=2&z=3"/>'
+    , expect : [ 
+        [ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ],
+        [ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ],
+        [ "closetag", "a" ]
+      ]
+    , strict : true
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/issue-49.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/issue-49.js b/node_modules/sax/test/issue-49.js
new file mode 100644
index 0000000..2964325
--- /dev/null
+++ b/node_modules/sax/test/issue-49.js
@@ -0,0 +1,31 @@
+// https://github.com/isaacs/sax-js/issues/49
+require(__dirname).test
+  ( { xml : "<xml><script>hello world</script></xml>"
+    , expect :
+      [ [ "opentag", { name: "xml", attributes: {} } ]
+      , [ "opentag", { name: "script", attributes: {} } ]
+      , [ "text", "hello world" ]
+      , [ "closetag", "script" ]
+      , [ "closetag", "xml" ]
+      ]
+    , strict : false
+    , opt : { lowercasetags: true, noscript: true }
+    }
+  )
+
+require(__dirname).test
+  ( { xml : "<xml><script><![CDATA[hello world]]></script></xml>"
+    , expect :
+      [ [ "opentag", { name: "xml", attributes: {} } ]
+      , [ "opentag", { name: "script", attributes: {} } ]
+      , [ "opencdata", undefined ]
+      , [ "cdata", "hello world" ]
+      , [ "closecdata", undefined ]
+      , [ "closetag", "script" ]
+      , [ "closetag", "xml" ]
+      ]
+    , strict : false
+    , opt : { lowercasetags: true, noscript: true }
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/parser-position.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/parser-position.js b/node_modules/sax/test/parser-position.js
new file mode 100644
index 0000000..e4a68b1
--- /dev/null
+++ b/node_modules/sax/test/parser-position.js
@@ -0,0 +1,28 @@
+var sax = require("../lib/sax"),
+    assert = require("assert")
+
+function testPosition(chunks, expectedEvents) {
+  var parser = sax.parser();
+  expectedEvents.forEach(function(expectation) {
+    parser['on' + expectation[0]] = function() {
+      for (var prop in expectation[1]) {
+        assert.equal(parser[prop], expectation[1][prop]);
+      }
+    }
+  });
+  chunks.forEach(function(chunk) {
+    parser.write(chunk);
+  });
+};
+
+testPosition(['<div>abcdefgh</div>'],
+             [ ['opentag',  { position:  5, startTagPosition:  1 }]
+             , ['text',     { position: 19, startTagPosition: 14 }]
+             , ['closetag', { position: 19, startTagPosition: 14 }]
+             ]);
+
+testPosition(['<div>abcde','fgh</div>'],
+             [ ['opentag',  { position:  5, startTagPosition:  1 }]
+             , ['text',     { position: 19, startTagPosition: 14 }]
+             , ['closetag', { position: 19, startTagPosition: 14 }]
+             ]);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/script.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/script.js b/node_modules/sax/test/script.js
new file mode 100644
index 0000000..464c051
--- /dev/null
+++ b/node_modules/sax/test/script.js
@@ -0,0 +1,12 @@
+require(__dirname).test({
+  xml : "<html><head><script>if (1 < 0) { console.log('elo there'); }</script></head></html>",
+  expect : [
+    ["opentag", {"name": "HTML","attributes": {}}],
+    ["opentag", {"name": "HEAD","attributes": {}}],
+    ["opentag", {"name": "SCRIPT","attributes": {}}],
+    ["script", "if (1 < 0) { console.log('elo there'); }"],
+    ["closetag", "SCRIPT"],
+    ["closetag", "HEAD"],
+    ["closetag", "HTML"]
+  ]
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/self-closing-child-strict.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/self-closing-child-strict.js b/node_modules/sax/test/self-closing-child-strict.js
new file mode 100644
index 0000000..ce9c045
--- /dev/null
+++ b/node_modules/sax/test/self-closing-child-strict.js
@@ -0,0 +1,40 @@
+
+require(__dirname).test({
+  xml :
+  "<root>"+
+    "<child>" +
+      "<haha />" +
+    "</child>" +
+    "<monkey>" +
+      "=(|)" +
+    "</monkey>" +
+  "</root>",
+  expect : [
+    ["opentag", {
+     "name": "root",
+     "attributes": {}
+    }],
+    ["opentag", {
+     "name": "child",
+     "attributes": {}
+    }],
+    ["opentag", {
+     "name": "haha",
+     "attributes": {}
+    }],
+    ["closetag", "haha"],
+    ["closetag", "child"],
+    ["opentag", {
+     "name": "monkey",
+     "attributes": {}
+    }],
+    ["text", "=(|)"],
+    ["closetag", "monkey"],
+    ["closetag", "root"],
+    ["end"],
+    ["ready"]
+  ],
+  strict : true,
+  opt : {}
+});
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/self-closing-child.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/self-closing-child.js b/node_modules/sax/test/self-closing-child.js
new file mode 100644
index 0000000..bc6b52b
--- /dev/null
+++ b/node_modules/sax/test/self-closing-child.js
@@ -0,0 +1,40 @@
+
+require(__dirname).test({
+  xml :
+  "<root>"+
+    "<child>" +
+      "<haha />" +
+    "</child>" +
+    "<monkey>" +
+      "=(|)" +
+    "</monkey>" +
+  "</root>",
+  expect : [
+    ["opentag", {
+     "name": "ROOT",
+     "attributes": {}
+    }],
+    ["opentag", {
+     "name": "CHILD",
+     "attributes": {}
+    }],
+    ["opentag", {
+     "name": "HAHA",
+     "attributes": {}
+    }],
+    ["closetag", "HAHA"],
+    ["closetag", "CHILD"],
+    ["opentag", {
+     "name": "MONKEY",
+     "attributes": {}
+    }],
+    ["text", "=(|)"],
+    ["closetag", "MONKEY"],
+    ["closetag", "ROOT"],
+    ["end"],
+    ["ready"]
+  ],
+  strict : false,
+  opt : {}
+});
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/self-closing-tag.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/self-closing-tag.js b/node_modules/sax/test/self-closing-tag.js
new file mode 100644
index 0000000..b2c5736
--- /dev/null
+++ b/node_modules/sax/test/self-closing-tag.js
@@ -0,0 +1,25 @@
+
+require(__dirname).test({
+  xml :
+  "<root>   "+
+    "<haha /> "+
+    "<haha/>  "+
+    "<monkey> "+
+      "=(|)     "+
+    "</monkey>"+
+  "</root>  ",
+  expect : [
+    ["opentag", {name:"ROOT", attributes:{}}],
+    ["opentag", {name:"HAHA", attributes:{}}],
+    ["closetag", "HAHA"],
+    ["opentag", {name:"HAHA", attributes:{}}],
+    ["closetag", "HAHA"],
+    // ["opentag", {name:"HAHA", attributes:{}}],
+    // ["closetag", "HAHA"],
+    ["opentag", {name:"MONKEY", attributes:{}}],
+    ["text", "=(|)"],
+    ["closetag", "MONKEY"],
+    ["closetag", "ROOT"]
+  ],
+  opt : { trim : true }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/stray-ending.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/stray-ending.js b/node_modules/sax/test/stray-ending.js
new file mode 100644
index 0000000..6b0aa7f
--- /dev/null
+++ b/node_modules/sax/test/stray-ending.js
@@ -0,0 +1,17 @@
+// stray ending tags should just be ignored in non-strict mode.
+// https://github.com/isaacs/sax-js/issues/32
+require(__dirname).test
+  ( { xml :
+      "<a><b></c></b></a>"
+    , expect :
+      [ [ "opentag", { name: "A", attributes: {} } ]
+      , [ "opentag", { name: "B", attributes: {} } ]
+      , [ "text", "</c>" ]
+      , [ "closetag", "B" ]
+      , [ "closetag", "A" ]
+      ]
+    , strict : false
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/trailing-non-whitespace.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/trailing-non-whitespace.js b/node_modules/sax/test/trailing-non-whitespace.js
new file mode 100644
index 0000000..3e1fb2e
--- /dev/null
+++ b/node_modules/sax/test/trailing-non-whitespace.js
@@ -0,0 +1,17 @@
+
+require(__dirname).test({
+  xml : "<span>Welcome,</span> to monkey land",
+  expect : [
+    ["opentag", {
+     "name": "SPAN",
+     "attributes": {}
+    }],
+    ["text", "Welcome,"],
+    ["closetag", "SPAN"],
+    ["text", " to monkey land"],
+    ["end"],
+    ["ready"]
+  ],
+  strict : false,
+  opt : {}
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/unquoted.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/unquoted.js b/node_modules/sax/test/unquoted.js
new file mode 100644
index 0000000..79f1d0b
--- /dev/null
+++ b/node_modules/sax/test/unquoted.js
@@ -0,0 +1,17 @@
+// unquoted attributes should be ok in non-strict mode
+// https://github.com/isaacs/sax-js/issues/31
+require(__dirname).test
+  ( { xml :
+      "<span class=test hello=world></span>"
+    , expect :
+      [ [ "attribute", { name: "class", value: "test" } ]
+      , [ "attribute", { name: "hello", value: "world" } ]
+      , [ "opentag", { name: "SPAN",
+                       attributes: { class: "test", hello: "world" } } ]
+      , [ "closetag", "SPAN" ]
+      ]
+    , strict : false
+    , opt : {}
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-issue-41.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-issue-41.js b/node_modules/sax/test/xmlns-issue-41.js
new file mode 100644
index 0000000..596d82b
--- /dev/null
+++ b/node_modules/sax/test/xmlns-issue-41.js
@@ -0,0 +1,67 @@
+var t = require(__dirname)
+
+  , xmls = // should be the same both ways.
+    [ "<parent xmlns:a='http://ATTRIBUTE' a:attr='value' />"
+    , "<parent a:attr='value' xmlns:a='http://ATTRIBUTE' />" ]
+
+  , ex1 =
+    [ [ "opennamespace"
+      , { prefix: "a"
+        , uri: "http://ATTRIBUTE"
+        }
+      ]
+    , [ "attribute"
+      , { name: "xmlns:a"
+        , value: "http://ATTRIBUTE"
+        , prefix: "xmlns"
+        , local: "a"
+        , uri: "http://www.w3.org/2000/xmlns/"
+        }
+      ]
+    , [ "attribute"
+      , { name: "a:attr"
+        , local: "attr"
+        , prefix: "a"
+        , uri: "http://ATTRIBUTE"
+        , value: "value"
+        }
+      ]
+    , [ "opentag"
+      , { name: "parent"
+        , uri: ""
+        , prefix: ""
+        , local: "parent"
+        , attributes:
+          { "a:attr":
+            { name: "a:attr"
+            , local: "attr"
+            , prefix: "a"
+            , uri: "http://ATTRIBUTE"
+            , value: "value"
+            }
+          , "xmlns:a":
+            { name: "xmlns:a"
+            , local: "a"
+            , prefix: "xmlns"
+            , uri: "http://www.w3.org/2000/xmlns/"
+            , value: "http://ATTRIBUTE"
+            }
+          }
+        , ns: {"a": "http://ATTRIBUTE"}
+        }
+      ]
+    , ["closetag", "parent"]
+    , ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }]
+    ]
+
+  // swap the order of elements 2 and 1
+  , ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3))
+  , expected = [ex1, ex2]
+
+xmls.forEach(function (x, i) {
+  t.test({ xml: x
+         , expect: expected[i]
+         , strict: true
+         , opt: { xmlns: true }
+         })
+})

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-rebinding.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-rebinding.js b/node_modules/sax/test/xmlns-rebinding.js
new file mode 100644
index 0000000..f464876
--- /dev/null
+++ b/node_modules/sax/test/xmlns-rebinding.js
@@ -0,0 +1,59 @@
+
+require(__dirname).test
+  ( { xml :
+      "<root xmlns:x='x1' xmlns:y='y1' x:a='x1' y:a='y1'>"+
+        "<rebind xmlns:x='x2'>"+
+          "<check x:a='x2' y:a='y1'/>"+
+        "</rebind>"+
+        "<check x:a='x1' y:a='y1'/>"+
+      "</root>"
+
+    , expect :
+      [ [ "opennamespace", { prefix: "x", uri: "x1" } ]
+      , [ "opennamespace", { prefix: "y", uri: "y1" } ]
+      , [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
+      , [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ]
+      , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
+      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
+      , [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
+            attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" }
+                        , "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" }
+                        , "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
+                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
+            ns: { x: 'x1', y: 'y1' } } ]
+
+      , [ "opennamespace", { prefix: "x", uri: "x2" } ]
+      , [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
+      , [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind",
+            attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } },
+            ns: { x: 'x2' } } ]
+
+      , [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ]
+      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
+      , [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
+            attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" }
+                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
+            ns: { x: 'x2' } } ]
+
+      , [ "closetag", "check" ]
+
+      , [ "closetag", "rebind" ]
+      , [ "closenamespace", { prefix: "x", uri: "x2" } ]
+
+      , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
+      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
+      , [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
+            attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
+                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
+            ns: { x: 'x1', y: 'y1' } } ]
+      , [ "closetag", "check" ]
+
+      , [ "closetag", "root" ]
+      , [ "closenamespace", { prefix: "x", uri: "x1" } ]
+      , [ "closenamespace", { prefix: "y", uri: "y1" } ]
+      ]
+    , strict : true
+    , opt : { xmlns: true }
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-strict.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-strict.js b/node_modules/sax/test/xmlns-strict.js
new file mode 100644
index 0000000..4ad615b
--- /dev/null
+++ b/node_modules/sax/test/xmlns-strict.js
@@ -0,0 +1,71 @@
+
+require(__dirname).test
+  ( { xml :
+      "<root>"+
+        "<plain attr='normal'/>"+
+        "<ns1 xmlns='uri:default'>"+
+          "<plain attr='normal'/>"+
+        "</ns1>"+
+        "<ns2 xmlns:a='uri:nsa'>"+
+          "<plain attr='normal'/>"+
+          "<a:ns a:attr='namespaced'/>"+
+        "</ns2>"+
+      "</root>"
+
+    , expect :
+      [ [ "opentag", { name: "root", prefix: "", local: "root", uri: "",
+            attributes: {}, ns: {} } ]
+
+      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
+      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
+            attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } },
+            ns: {} } ]
+      , [ "closetag", "plain" ]
+
+      , [ "opennamespace", { prefix: "", uri: "uri:default" } ]
+
+      , [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ]
+      , [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default",
+            attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } },
+            ns: { "": "uri:default" } } ]
+
+      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ]
+      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' },
+            attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ]
+      , [ "closetag", "plain" ]
+
+      , [ "closetag", "ns1" ]
+
+      , [ "closenamespace", { prefix: "", uri: "uri:default" } ]
+
+      , [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ]
+
+      , [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ]
+
+      , [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "",
+            attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } },
+            ns: { a: "uri:nsa" } } ]
+
+      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
+      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
+            attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } },
+            ns: { a: 'uri:nsa' } } ]
+      , [ "closetag", "plain" ]
+
+      , [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ]
+      , [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa",
+            attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } },
+            ns: { a: 'uri:nsa' } } ]
+      , [ "closetag", "a:ns" ]
+
+      , [ "closetag", "ns2" ]
+
+      , [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ]
+
+      , [ "closetag", "root" ]
+      ]
+    , strict : true
+    , opt : { xmlns: true }
+    }
+  )
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-unbound.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-unbound.js b/node_modules/sax/test/xmlns-unbound.js
new file mode 100644
index 0000000..2944b87
--- /dev/null
+++ b/node_modules/sax/test/xmlns-unbound.js
@@ -0,0 +1,15 @@
+
+require(__dirname).test(
+  { strict : true
+  , opt : { xmlns: true }
+  , expect :
+    [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"]
+
+    , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ]
+    , [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
+          attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } },
+          ns: {} } ]
+    , [ "closetag", "root" ]
+    ]
+  }
+).write("<root unbound:attr='value'/>")

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js b/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
new file mode 100644
index 0000000..16da771
--- /dev/null
+++ b/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
@@ -0,0 +1,35 @@
+require(__dirname).test(
+  { xml : "<root xml:lang='en'/>"
+  , expect :
+    [ [ "attribute"
+      , { name: "xml:lang"
+        , local: "lang"
+        , prefix: "xml"
+        , uri: "http://www.w3.org/XML/1998/namespace"
+        , value: "en"
+        }
+      ]
+    , [ "opentag"
+      , { name: "root"
+        , uri: ""
+        , prefix: ""
+        , local: "root"
+        , attributes:
+          { "xml:lang":
+            { name: "xml:lang"
+            , local: "lang"
+            , prefix: "xml"
+            , uri: "http://www.w3.org/XML/1998/namespace"
+            , value: "en"
+            }
+          }
+        , ns: {}
+        }
+      ]
+    , ["closetag", "root"]
+    ]
+  , strict : true
+  , opt : { xmlns: true }
+  }
+)
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-xml-default-prefix.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-xml-default-prefix.js b/node_modules/sax/test/xmlns-xml-default-prefix.js
new file mode 100644
index 0000000..9a1ce1b
--- /dev/null
+++ b/node_modules/sax/test/xmlns-xml-default-prefix.js
@@ -0,0 +1,20 @@
+require(__dirname).test(
+  { xml : "<xml:root/>"
+  , expect :
+    [
+      [ "opentag"
+      , { name: "xml:root"
+        , uri: "http://www.w3.org/XML/1998/namespace"
+        , prefix: "xml"
+        , local: "root"
+        , attributes: {}
+        , ns: {}
+        }
+      ]
+    , ["closetag", "xml:root"]
+    ]
+  , strict : true
+  , opt : { xmlns: true }
+  }
+)
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/sax/test/xmlns-xml-default-redefine.js
----------------------------------------------------------------------
diff --git a/node_modules/sax/test/xmlns-xml-default-redefine.js b/node_modules/sax/test/xmlns-xml-default-redefine.js
new file mode 100644
index 0000000..1eba9c7
--- /dev/null
+++ b/node_modules/sax/test/xmlns-xml-default-redefine.js
@@ -0,0 +1,40 @@
+require(__dirname).test(
+  { xml : "<xml:root xmlns:xml='ERROR'/>"
+  , expect :
+    [ ["error"
+      , "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n"
+                        + "Actual: ERROR\n"
+      + "Line: 0\nColumn: 27\nChar: '"
+      ]
+    , [ "attribute"
+      , { name: "xmlns:xml"
+        , local: "xml"
+        , prefix: "xmlns"
+        , uri: "http://www.w3.org/2000/xmlns/"
+        , value: "ERROR"
+        }
+      ]
+    , [ "opentag"
+      , { name: "xml:root"
+        , uri: "http://www.w3.org/XML/1998/namespace"
+        , prefix: "xml"
+        , local: "root"
+        , attributes:
+          { "xmlns:xml":
+            { name: "xmlns:xml"
+            , local: "xml"
+            , prefix: "xmlns"
+            , uri: "http://www.w3.org/2000/xmlns/"
+            , value: "ERROR"
+            }
+          }
+        , ns: {}
+        }
+      ]
+    , ["closetag", "xml:root"]
+    ]
+  , strict : true
+  , opt : { xmlns: true }
+  }
+)
+

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/package.json
----------------------------------------------------------------------
diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json
index fe5b8eb..f370155 100644
--- a/node_modules/semver/package.json
+++ b/node_modules/semver/package.json
@@ -1,51 +1,78 @@
 {
-  "name": "semver",
-  "version": "5.1.0",
-  "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "devDependencies": {
-    "tap": "^2.0.0"
+  "_args": [
+    [
+      "semver@^5.0.3",
+      "D:\\Cordova\\cordova-windows"
+    ]
+  ],
+  "_from": "semver@>=5.0.3 <6.0.0",
+  "_id": "semver@5.1.0",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/semver",
+  "_nodeVersion": "4.0.0",
+  "_npmUser": {
+    "email": "i@izs.me",
+    "name": "isaacs"
   },
-  "license": "ISC",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/node-semver.git"
+  "_npmVersion": "3.3.2",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "semver",
+    "raw": "semver@^5.0.3",
+    "rawSpec": "^5.0.3",
+    "scope": null,
+    "spec": ">=5.0.3 <6.0.0",
+    "type": "range"
   },
+  "_requiredBy": [
+    "/",
+    "/cordova-common"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz",
+  "_shasum": "85f2cf8550465c4df000cf7d86f6b054106ab9e5",
+  "_shrinkwrap": null,
+  "_spec": "semver@^5.0.3",
+  "_where": "D:\\Cordova\\cordova-windows",
   "bin": {
     "semver": "./bin/semver"
   },
-  "gitHead": "8e33a30e62e40e4983d1c5f55e794331b861aadc",
   "bugs": {
     "url": "https://github.com/npm/node-semver/issues"
   },
-  "homepage": "https://github.com/npm/node-semver#readme",
-  "_id": "semver@5.1.0",
-  "_shasum": "85f2cf8550465c4df000cf7d86f6b054106ab9e5",
-  "_from": "semver@>=5.0.3 <6.0.0",
-  "_npmVersion": "3.3.2",
-  "_nodeVersion": "4.0.0",
-  "_npmUser": {
-    "name": "isaacs",
-    "email": "i@izs.me"
+  "dependencies": {},
+  "description": "The semantic version parser used by npm.",
+  "devDependencies": {
+    "tap": "^2.0.0"
   },
+  "directories": {},
   "dist": {
     "shasum": "85f2cf8550465c4df000cf7d86f6b054106ab9e5",
-    "tarball": "http://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
+    "tarball": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
   },
+  "gitHead": "8e33a30e62e40e4983d1c5f55e794331b861aadc",
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "isaacs@npmjs.com"
+      "email": "isaacs@npmjs.com",
+      "name": "isaacs"
     },
     {
-      "name": "othiym23",
-      "email": "ogd@aoaioxxysz.net"
+      "email": "ogd@aoaioxxysz.net",
+      "name": "othiym23"
     }
   ],
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz",
-  "readme": "ERROR: No README data found!"
+  "name": "semver",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "5.1.0"
 }

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/big-numbers.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/big-numbers.js b/node_modules/semver/test/big-numbers.js
new file mode 100644
index 0000000..c051864
--- /dev/null
+++ b/node_modules/semver/test/big-numbers.js
@@ -0,0 +1,31 @@
+var test = require('tap').test
+var semver = require('../')
+
+test('long version is too long', function (t) {
+  var v = '1.2.' + new Array(256).join('1')
+  t.throws(function () {
+    new semver.SemVer(v)
+  })
+  t.equal(semver.valid(v, false), null)
+  t.equal(semver.valid(v, true), null)
+  t.equal(semver.inc(v, 'patch'), null)
+  t.end()
+})
+
+test('big number is like too long version', function (t) {
+  var v = '1.2.' + new Array(100).join('1')
+  t.throws(function () {
+    new semver.SemVer(v)
+  })
+  t.equal(semver.valid(v, false), null)
+  t.equal(semver.valid(v, true), null)
+  t.equal(semver.inc(v, 'patch'), null)
+  t.end()
+})
+
+test('parsing null does not throw', function (t) {
+  t.equal(semver.parse(null), null)
+  t.equal(semver.parse({}), null)
+  t.equal(semver.parse(new semver.SemVer('1.2.3')).version, '1.2.3')
+  t.end()
+})

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/clean.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/clean.js b/node_modules/semver/test/clean.js
new file mode 100644
index 0000000..9e268de
--- /dev/null
+++ b/node_modules/semver/test/clean.js
@@ -0,0 +1,29 @@
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+var clean = semver.clean;
+
+test('\nclean tests', function(t) {
+	// [range, version]
+	// Version should be detectable despite extra characters
+	[
+		['1.2.3', '1.2.3'],
+		[' 1.2.3 ', '1.2.3'],
+		[' 1.2.3-4 ', '1.2.3-4'],
+		[' 1.2.3-pre ', '1.2.3-pre'],
+		['  =v1.2.3   ', '1.2.3'],
+		['v1.2.3', '1.2.3'],
+		[' v1.2.3 ', '1.2.3'],
+		['\t1.2.3', '1.2.3'],
+		['>1.2.3', null],
+		['~1.2.3', null],
+		['<=1.2.3', null],
+		['1.2.x', null]
+	].forEach(function(tuple) {
+			var range = tuple[0];
+			var version = tuple[1];
+			var msg = 'clean(' + range + ') = ' + version;
+			t.equal(clean(range), version, msg);
+		});
+	t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/gtr.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/gtr.js b/node_modules/semver/test/gtr.js
new file mode 100644
index 0000000..bbb8789
--- /dev/null
+++ b/node_modules/semver/test/gtr.js
@@ -0,0 +1,173 @@
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+var gtr = semver.gtr;
+
+test('\ngtr tests', function(t) {
+  // [range, version, loose]
+  // Version should be greater than range
+  [
+    ['~1.2.2', '1.3.0'],
+    ['~0.6.1-1', '0.7.1-1'],
+    ['1.0.0 - 2.0.0', '2.0.1'],
+    ['1.0.0', '1.0.1-beta1'],
+    ['1.0.0', '2.0.0'],
+    ['<=2.0.0', '2.1.1'],
+    ['<=2.0.0', '3.2.9'],
+    ['<2.0.0', '2.0.0'],
+    ['0.1.20 || 1.2.4', '1.2.5'],
+    ['2.x.x', '3.0.0'],
+    ['1.2.x', '1.3.0'],
+    ['1.2.x || 2.x', '3.0.0'],
+    ['2.*.*', '5.0.1'],
+    ['1.2.*', '1.3.3'],
+    ['1.2.* || 2.*', '4.0.0'],
+    ['2', '3.0.0'],
+    ['2.3', '2.4.2'],
+    ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.5.5'],
+    ['~>3.2.1', '3.3.0'], // >=3.2.1 <3.3.0
+    ['~1', '2.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '2.2.4'],
+    ['~> 1', '3.2.3'],
+    ['~1.0', '1.1.2'], // >=1.0.0 <1.1.0
+    ['~ 1.0', '1.1.0'],
+    ['<1.2', '1.2.0'],
+    ['< 1.2', '1.2.1'],
+    ['1', '2.0.0beta', true],
+    ['~v0.5.4-pre', '0.6.0'],
+    ['~v0.5.4-pre', '0.6.1-pre'],
+    ['=0.7.x', '0.8.0'],
+    ['=0.7.x', '0.8.0-asdf'],
+    ['<0.7.x', '0.7.0'],
+    ['~1.2.2', '1.3.0'],
+    ['1.0.0 - 2.0.0', '2.2.3'],
+    ['1.0.0', '1.0.1'],
+    ['<=2.0.0', '3.0.0'],
+    ['<=2.0.0', '2.9999.9999'],
+    ['<=2.0.0', '2.2.9'],
+    ['<2.0.0', '2.9999.9999'],
+    ['<2.0.0', '2.2.9'],
+    ['2.x.x', '3.1.3'],
+    ['1.2.x', '1.3.3'],
+    ['1.2.x || 2.x', '3.1.3'],
+    ['2.*.*', '3.1.3'],
+    ['1.2.*', '1.3.3'],
+    ['1.2.* || 2.*', '3.1.3'],
+    ['2', '3.1.2'],
+    ['2.3', '2.4.1'],
+    ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
+    ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
+    ['~1', '2.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '2.2.3'],
+    ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
+    ['<1', '1.0.0'],
+    ['1', '2.0.0beta', true],
+    ['<1', '1.0.0beta', true],
+    ['< 1', '1.0.0beta', true],
+    ['=0.7.x', '0.8.2'],
+    ['<0.7.x', '0.7.2']
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = 'gtr(' + version + ', ' + range + ', ' + loose + ')';
+    t.ok(gtr(version, range, loose), msg);
+  });
+  t.end();
+});
+
+test('\nnegative gtr tests', function(t) {
+  // [range, version, loose]
+  // Version should NOT be greater than range
+  [
+    ['~0.6.1-1', '0.6.1-1'],
+    ['1.0.0 - 2.0.0', '1.2.3'],
+    ['1.0.0 - 2.0.0', '0.9.9'],
+    ['1.0.0', '1.0.0'],
+    ['>=*', '0.2.4'],
+    ['', '1.0.0', true],
+    ['*', '1.2.3'],
+    ['*', 'v1.2.3-foo'],
+    ['>=1.0.0', '1.0.0'],
+    ['>=1.0.0', '1.0.1'],
+    ['>=1.0.0', '1.1.0'],
+    ['>1.0.0', '1.0.1'],
+    ['>1.0.0', '1.1.0'],
+    ['<=2.0.0', '2.0.0'],
+    ['<=2.0.0', '1.9999.9999'],
+    ['<=2.0.0', '0.2.9'],
+    ['<2.0.0', '1.9999.9999'],
+    ['<2.0.0', '0.2.9'],
+    ['>= 1.0.0', '1.0.0'],
+    ['>=  1.0.0', '1.0.1'],
+    ['>=   1.0.0', '1.1.0'],
+    ['> 1.0.0', '1.0.1'],
+    ['>  1.0.0', '1.1.0'],
+    ['<=   2.0.0', '2.0.0'],
+    ['<= 2.0.0', '1.9999.9999'],
+    ['<=  2.0.0', '0.2.9'],
+    ['<    2.0.0', '1.9999.9999'],
+    ['<\t2.0.0', '0.2.9'],
+    ['>=0.1.97', 'v0.1.97'],
+    ['>=0.1.97', '0.1.97'],
+    ['0.1.20 || 1.2.4', '1.2.4'],
+    ['0.1.20 || >1.2.4', '1.2.4'],
+    ['0.1.20 || 1.2.4', '1.2.3'],
+    ['0.1.20 || 1.2.4', '0.1.20'],
+    ['>=0.2.3 || <0.0.1', '0.0.0'],
+    ['>=0.2.3 || <0.0.1', '0.2.3'],
+    ['>=0.2.3 || <0.0.1', '0.2.4'],
+    ['||', '1.3.4'],
+    ['2.x.x', '2.1.3'],
+    ['1.2.x', '1.2.3'],
+    ['1.2.x || 2.x', '2.1.3'],
+    ['1.2.x || 2.x', '1.2.3'],
+    ['x', '1.2.3'],
+    ['2.*.*', '2.1.3'],
+    ['1.2.*', '1.2.3'],
+    ['1.2.* || 2.*', '2.1.3'],
+    ['1.2.* || 2.*', '1.2.3'],
+    ['1.2.* || 2.*', '1.2.3'],
+    ['*', '1.2.3'],
+    ['2', '2.1.2'],
+    ['2.3', '2.3.1'],
+    ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.4.5'],
+    ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
+    ['~1', '1.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '1.2.3'],
+    ['~> 1', '1.2.3'],
+    ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
+    ['~ 1.0', '1.0.2'],
+    ['>=1', '1.0.0'],
+    ['>= 1', '1.0.0'],
+    ['<1.2', '1.1.1'],
+    ['< 1.2', '1.1.1'],
+    ['1', '1.0.0beta', true],
+    ['~v0.5.4-pre', '0.5.5'],
+    ['~v0.5.4-pre', '0.5.4'],
+    ['=0.7.x', '0.7.2'],
+    ['>=0.7.x', '0.7.2'],
+    ['=0.7.x', '0.7.0-asdf'],
+    ['>=0.7.x', '0.7.0-asdf'],
+    ['<=0.7.x', '0.6.2'],
+    ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
+    ['>=0.2.3 <=0.2.4', '0.2.4'],
+    ['1.0.0 - 2.0.0', '2.0.0'],
+    ['^1', '0.0.0-0'],
+    ['^3.0.0', '2.0.0'],
+    ['^1.0.0 || ~2.0.1', '2.0.0'],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
+    ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0']
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = '!gtr(' + version + ', ' + range + ', ' + loose + ')';
+    t.notOk(gtr(version, range, loose), msg);
+  });
+  t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/index.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/index.js b/node_modules/semver/test/index.js
new file mode 100644
index 0000000..47c3f5f
--- /dev/null
+++ b/node_modules/semver/test/index.js
@@ -0,0 +1,698 @@
+'use strict';
+
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+var eq = semver.eq;
+var gt = semver.gt;
+var lt = semver.lt;
+var neq = semver.neq;
+var cmp = semver.cmp;
+var gte = semver.gte;
+var lte = semver.lte;
+var satisfies = semver.satisfies;
+var validRange = semver.validRange;
+var inc = semver.inc;
+var diff = semver.diff;
+var replaceStars = semver.replaceStars;
+var toComparators = semver.toComparators;
+var SemVer = semver.SemVer;
+var Range = semver.Range;
+
+test('\ncomparison tests', function(t) {
+  // [version1, version2]
+  // version1 should be greater than version2
+  [['0.0.0', '0.0.0-foo'],
+    ['0.0.1', '0.0.0'],
+    ['1.0.0', '0.9.9'],
+    ['0.10.0', '0.9.0'],
+    ['0.99.0', '0.10.0'],
+    ['2.0.0', '1.2.3'],
+    ['v0.0.0', '0.0.0-foo', true],
+    ['v0.0.1', '0.0.0', true],
+    ['v1.0.0', '0.9.9', true],
+    ['v0.10.0', '0.9.0', true],
+    ['v0.99.0', '0.10.0', true],
+    ['v2.0.0', '1.2.3', true],
+    ['0.0.0', 'v0.0.0-foo', true],
+    ['0.0.1', 'v0.0.0', true],
+    ['1.0.0', 'v0.9.9', true],
+    ['0.10.0', 'v0.9.0', true],
+    ['0.99.0', 'v0.10.0', true],
+    ['2.0.0', 'v1.2.3', true],
+    ['1.2.3', '1.2.3-asdf'],
+    ['1.2.3', '1.2.3-4'],
+    ['1.2.3', '1.2.3-4-foo'],
+    ['1.2.3-5-foo', '1.2.3-5'],
+    ['1.2.3-5', '1.2.3-4'],
+    ['1.2.3-5-foo', '1.2.3-5-Foo'],
+    ['3.0.0', '2.7.2+asdf'],
+    ['1.2.3-a.10', '1.2.3-a.5'],
+    ['1.2.3-a.b', '1.2.3-a.5'],
+    ['1.2.3-a.b', '1.2.3-a'],
+    ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'],
+    ['1.2.3-r2', '1.2.3-r100'],
+    ['1.2.3-r100', '1.2.3-R2']
+  ].forEach(function(v) {
+    var v0 = v[0];
+    var v1 = v[1];
+    var loose = v[2];
+    t.ok(gt(v0, v1, loose), "gt('" + v0 + "', '" + v1 + "')");
+    t.ok(lt(v1, v0, loose), "lt('" + v1 + "', '" + v0 + "')");
+    t.ok(!gt(v1, v0, loose), "!gt('" + v1 + "', '" + v0 + "')");
+    t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
+    t.ok(eq(v0, v0, loose), "eq('" + v0 + "', '" + v0 + "')");
+    t.ok(eq(v1, v1, loose), "eq('" + v1 + "', '" + v1 + "')");
+    t.ok(neq(v0, v1, loose), "neq('" + v0 + "', '" + v1 + "')");
+    t.ok(cmp(v1, '==', v1, loose), "cmp('" + v1 + "' == '" + v1 + "')");
+    t.ok(cmp(v0, '>=', v1, loose), "cmp('" + v0 + "' >= '" + v1 + "')");
+    t.ok(cmp(v1, '<=', v0, loose), "cmp('" + v1 + "' <= '" + v0 + "')");
+    t.ok(cmp(v0, '!=', v1, loose), "cmp('" + v0 + "' != '" + v1 + "')");
+  });
+  t.end();
+});
+
+test('\nequality tests', function(t) {
+  // [version1, version2]
+  // version1 should be equivalent to version2
+  [['1.2.3', 'v1.2.3', true],
+    ['1.2.3', '=1.2.3', true],
+    ['1.2.3', 'v 1.2.3', true],
+    ['1.2.3', '= 1.2.3', true],
+    ['1.2.3', ' v1.2.3', true],
+    ['1.2.3', ' =1.2.3', true],
+    ['1.2.3', ' v 1.2.3', true],
+    ['1.2.3', ' = 1.2.3', true],
+    ['1.2.3-0', 'v1.2.3-0', true],
+    ['1.2.3-0', '=1.2.3-0', true],
+    ['1.2.3-0', 'v 1.2.3-0', true],
+    ['1.2.3-0', '= 1.2.3-0', true],
+    ['1.2.3-0', ' v1.2.3-0', true],
+    ['1.2.3-0', ' =1.2.3-0', true],
+    ['1.2.3-0', ' v 1.2.3-0', true],
+    ['1.2.3-0', ' = 1.2.3-0', true],
+    ['1.2.3-1', 'v1.2.3-1', true],
+    ['1.2.3-1', '=1.2.3-1', true],
+    ['1.2.3-1', 'v 1.2.3-1', true],
+    ['1.2.3-1', '= 1.2.3-1', true],
+    ['1.2.3-1', ' v1.2.3-1', true],
+    ['1.2.3-1', ' =1.2.3-1', true],
+    ['1.2.3-1', ' v 1.2.3-1', true],
+    ['1.2.3-1', ' = 1.2.3-1', true],
+    ['1.2.3-beta', 'v1.2.3-beta', true],
+    ['1.2.3-beta', '=1.2.3-beta', true],
+    ['1.2.3-beta', 'v 1.2.3-beta', true],
+    ['1.2.3-beta', '= 1.2.3-beta', true],
+    ['1.2.3-beta', ' v1.2.3-beta', true],
+    ['1.2.3-beta', ' =1.2.3-beta', true],
+    ['1.2.3-beta', ' v 1.2.3-beta', true],
+    ['1.2.3-beta', ' = 1.2.3-beta', true],
+    ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild', true],
+    ['1.2.3+build', ' = 1.2.3+otherbuild', true],
+    ['1.2.3-beta+build', '1.2.3-beta+otherbuild'],
+    ['1.2.3+build', '1.2.3+otherbuild'],
+    ['  v1.2.3+build', '1.2.3+otherbuild']
+  ].forEach(function(v) {
+    var v0 = v[0];
+    var v1 = v[1];
+    var loose = v[2];
+    t.ok(eq(v0, v1, loose), "eq('" + v0 + "', '" + v1 + "')");
+    t.ok(!neq(v0, v1, loose), "!neq('" + v0 + "', '" + v1 + "')");
+    t.ok(cmp(v0, '==', v1, loose), 'cmp(' + v0 + '==' + v1 + ')');
+    t.ok(!cmp(v0, '!=', v1, loose), '!cmp(' + v0 + '!=' + v1 + ')');
+    t.ok(!cmp(v0, '===', v1, loose), '!cmp(' + v0 + '===' + v1 + ')');
+    t.ok(cmp(v0, '!==', v1, loose), 'cmp(' + v0 + '!==' + v1 + ')');
+    t.ok(!gt(v0, v1, loose), "!gt('" + v0 + "', '" + v1 + "')");
+    t.ok(gte(v0, v1, loose), "gte('" + v0 + "', '" + v1 + "')");
+    t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
+    t.ok(lte(v0, v1, loose), "lte('" + v0 + "', '" + v1 + "')");
+  });
+  t.end();
+});
+
+
+test('\nrange tests', function(t) {
+  // [range, version]
+  // version should be included by range
+  [['1.0.0 - 2.0.0', '1.2.3'],
+    ['^1.2.3+build', '1.2.3'],
+    ['^1.2.3+build', '1.3.0'],
+    ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'],
+    ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true],
+    ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
+    ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
+    ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'],
+    ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'],
+    ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'],
+    ['1.0.0', '1.0.0'],
+    ['>=*', '0.2.4'],
+    ['', '1.0.0'],
+    ['*', '1.2.3'],
+    ['*', 'v1.2.3', true],
+    ['>=1.0.0', '1.0.0'],
+    ['>=1.0.0', '1.0.1'],
+    ['>=1.0.0', '1.1.0'],
+    ['>1.0.0', '1.0.1'],
+    ['>1.0.0', '1.1.0'],
+    ['<=2.0.0', '2.0.0'],
+    ['<=2.0.0', '1.9999.9999'],
+    ['<=2.0.0', '0.2.9'],
+    ['<2.0.0', '1.9999.9999'],
+    ['<2.0.0', '0.2.9'],
+    ['>= 1.0.0', '1.0.0'],
+    ['>=  1.0.0', '1.0.1'],
+    ['>=   1.0.0', '1.1.0'],
+    ['> 1.0.0', '1.0.1'],
+    ['>  1.0.0', '1.1.0'],
+    ['<=   2.0.0', '2.0.0'],
+    ['<= 2.0.0', '1.9999.9999'],
+    ['<=  2.0.0', '0.2.9'],
+    ['<    2.0.0', '1.9999.9999'],
+    ['<\t2.0.0', '0.2.9'],
+    ['>=0.1.97', 'v0.1.97', true],
+    ['>=0.1.97', '0.1.97'],
+    ['0.1.20 || 1.2.4', '1.2.4'],
+    ['>=0.2.3 || <0.0.1', '0.0.0'],
+    ['>=0.2.3 || <0.0.1', '0.2.3'],
+    ['>=0.2.3 || <0.0.1', '0.2.4'],
+    ['||', '1.3.4'],
+    ['2.x.x', '2.1.3'],
+    ['1.2.x', '1.2.3'],
+    ['1.2.x || 2.x', '2.1.3'],
+    ['1.2.x || 2.x', '1.2.3'],
+    ['x', '1.2.3'],
+    ['2.*.*', '2.1.3'],
+    ['1.2.*', '1.2.3'],
+    ['1.2.* || 2.*', '2.1.3'],
+    ['1.2.* || 2.*', '1.2.3'],
+    ['*', '1.2.3'],
+    ['2', '2.1.2'],
+    ['2.3', '2.3.1'],
+    ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.4.5'],
+    ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0,
+    ['~1', '1.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '1.2.3'],
+    ['~> 1', '1.2.3'],
+    ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0,
+    ['~ 1.0', '1.0.2'],
+    ['~ 1.0.3', '1.0.12'],
+    ['>=1', '1.0.0'],
+    ['>= 1', '1.0.0'],
+    ['<1.2', '1.1.1'],
+    ['< 1.2', '1.1.1'],
+    ['~v0.5.4-pre', '0.5.5'],
+    ['~v0.5.4-pre', '0.5.4'],
+    ['=0.7.x', '0.7.2'],
+    ['<=0.7.x', '0.7.2'],
+    ['>=0.7.x', '0.7.2'],
+    ['<=0.7.x', '0.6.2'],
+    ['~1.2.1 >=1.2.3', '1.2.3'],
+    ['~1.2.1 =1.2.3', '1.2.3'],
+    ['~1.2.1 1.2.3', '1.2.3'],
+    ['~1.2.1 >=1.2.3 1.2.3', '1.2.3'],
+    ['~1.2.1 1.2.3 >=1.2.3', '1.2.3'],
+    ['~1.2.1 1.2.3', '1.2.3'],
+    ['>=1.2.1 1.2.3', '1.2.3'],
+    ['1.2.3 >=1.2.1', '1.2.3'],
+    ['>=1.2.3 >=1.2.1', '1.2.3'],
+    ['>=1.2.1 >=1.2.3', '1.2.3'],
+    ['>=1.2', '1.2.8'],
+    ['^1.2.3', '1.8.1'],
+    ['^0.1.2', '0.1.2'],
+    ['^0.1', '0.1.2'],
+    ['^1.2', '1.4.2'],
+    ['^1.2 ^1', '1.4.2'],
+    ['^1.2.3-alpha', '1.2.3-pre'],
+    ['^1.2.0-alpha', '1.2.0-pre'],
+    ['^0.0.1-alpha', '0.0.1-beta']
+  ].forEach(function(v) {
+    var range = v[0];
+    var ver = v[1];
+    var loose = v[2];
+    t.ok(satisfies(ver, range, loose), range + ' satisfied by ' + ver);
+  });
+  t.end();
+});
+
+test('\nnegative range tests', function(t) {
+  // [range, version]
+  // version should not be included by range
+  [['1.0.0 - 2.0.0', '2.2.3'],
+    ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'],
+    ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'],
+    ['^1.2.3+build', '2.0.0'],
+    ['^1.2.3+build', '1.2.0'],
+    ['^1.2.3', '1.2.3-pre'],
+    ['^1.2', '1.2.0-pre'],
+    ['>1.2', '1.3.0-beta'],
+    ['<=1.2.3', '1.2.3-beta'],
+    ['^1.2.3', '1.2.3-beta'],
+    ['=0.7.x', '0.7.0-asdf'],
+    ['>=0.7.x', '0.7.0-asdf'],
+    ['1', '1.0.0beta', true],
+    ['<1', '1.0.0beta', true],
+    ['< 1', '1.0.0beta', true],
+    ['1.0.0', '1.0.1'],
+    ['>=1.0.0', '0.0.0'],
+    ['>=1.0.0', '0.0.1'],
+    ['>=1.0.0', '0.1.0'],
+    ['>1.0.0', '0.0.1'],
+    ['>1.0.0', '0.1.0'],
+    ['<=2.0.0', '3.0.0'],
+    ['<=2.0.0', '2.9999.9999'],
+    ['<=2.0.0', '2.2.9'],
+    ['<2.0.0', '2.9999.9999'],
+    ['<2.0.0', '2.2.9'],
+    ['>=0.1.97', 'v0.1.93', true],
+    ['>=0.1.97', '0.1.93'],
+    ['0.1.20 || 1.2.4', '1.2.3'],
+    ['>=0.2.3 || <0.0.1', '0.0.3'],
+    ['>=0.2.3 || <0.0.1', '0.2.2'],
+    ['2.x.x', '1.1.3'],
+    ['2.x.x', '3.1.3'],
+    ['1.2.x', '1.3.3'],
+    ['1.2.x || 2.x', '3.1.3'],
+    ['1.2.x || 2.x', '1.1.3'],
+    ['2.*.*', '1.1.3'],
+    ['2.*.*', '3.1.3'],
+    ['1.2.*', '1.3.3'],
+    ['1.2.* || 2.*', '3.1.3'],
+    ['1.2.* || 2.*', '1.1.3'],
+    ['2', '1.1.2'],
+    ['2.3', '2.4.1'],
+    ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.3.9'],
+    ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
+    ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
+    ['~1', '0.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '2.2.3'],
+    ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
+    ['<1', '1.0.0'],
+    ['>=1.2', '1.1.1'],
+    ['1', '2.0.0beta', true],
+    ['~v0.5.4-beta', '0.5.4-alpha'],
+    ['=0.7.x', '0.8.2'],
+    ['>=0.7.x', '0.6.2'],
+    ['<0.7.x', '0.7.2'],
+    ['<1.2.3', '1.2.3-beta'],
+    ['=1.2.3', '1.2.3-beta'],
+    ['>1.2', '1.2.8'],
+    ['^1.2.3', '2.0.0-alpha'],
+    ['^1.2.3', '1.2.2'],
+    ['^1.2', '1.1.9'],
+    ['*', 'v1.2.3-foo', true],
+    // invalid ranges never satisfied!
+    ['blerg', '1.2.3'],
+    ['git+https://user:password0123@github.com/foo', '123.0.0', true],
+    ['^1.2.3', '2.0.0-pre']
+  ].forEach(function(v) {
+    var range = v[0];
+    var ver = v[1];
+    var loose = v[2];
+    var found = satisfies(ver, range, loose);
+    t.ok(!found, ver + ' not satisfied by ' + range);
+  });
+  t.end();
+});
+
+test('\nincrement versions test', function(t) {
+//  [version, inc, result, identifier]
+//  inc(version, inc) -> result
+  [['1.2.3', 'major', '2.0.0'],
+    ['1.2.3', 'minor', '1.3.0'],
+    ['1.2.3', 'patch', '1.2.4'],
+    ['1.2.3tag', 'major', '2.0.0', true],
+    ['1.2.3-tag', 'major', '2.0.0'],
+    ['1.2.3', 'fake', null],
+    ['1.2.0-0', 'patch', '1.2.0'],
+    ['fake', 'major', null],
+    ['1.2.3-4', 'major', '2.0.0'],
+    ['1.2.3-4', 'minor', '1.3.0'],
+    ['1.2.3-4', 'patch', '1.2.3'],
+    ['1.2.3-alpha.0.beta', 'major', '2.0.0'],
+    ['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
+    ['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
+    ['1.2.4', 'prerelease', '1.2.5-0'],
+    ['1.2.3-0', 'prerelease', '1.2.3-1'],
+    ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
+    ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
+    ['1.2.3-alpha.2', 'prerelease', '1.2.3-alpha.3'],
+    ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta'],
+    ['1.2.3-alpha.1.beta', 'prerelease', '1.2.3-alpha.2.beta'],
+    ['1.2.3-alpha.2.beta', 'prerelease', '1.2.3-alpha.3.beta'],
+    ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta'],
+    ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta'],
+    ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta'],
+    ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1'],
+    ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2'],
+    ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
+    ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
+    ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
+    ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
+    ['1.2.0', 'prepatch', '1.2.1-0'],
+    ['1.2.0-1', 'prepatch', '1.2.1-0'],
+    ['1.2.0', 'preminor', '1.3.0-0'],
+    ['1.2.3-1', 'preminor', '1.3.0-0'],
+    ['1.2.0', 'premajor', '2.0.0-0'],
+    ['1.2.3-1', 'premajor', '2.0.0-0'],
+    ['1.2.0-1', 'minor', '1.2.0'],
+    ['1.0.0-1', 'major', '1.0.0'],
+
+    ['1.2.3', 'major', '2.0.0', false, 'dev'],
+    ['1.2.3', 'minor', '1.3.0', false, 'dev'],
+    ['1.2.3', 'patch', '1.2.4', false, 'dev'],
+    ['1.2.3tag', 'major', '2.0.0', true, 'dev'],
+    ['1.2.3-tag', 'major', '2.0.0', false, 'dev'],
+    ['1.2.3', 'fake', null, false, 'dev'],
+    ['1.2.0-0', 'patch', '1.2.0', false, 'dev'],
+    ['fake', 'major', null, false, 'dev'],
+    ['1.2.3-4', 'major', '2.0.0', false, 'dev'],
+    ['1.2.3-4', 'minor', '1.3.0', false, 'dev'],
+    ['1.2.3-4', 'patch', '1.2.3', false, 'dev'],
+    ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'],
+    ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'],
+    ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'],
+    ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'],
+    ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'],
+    ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'],
+    ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'],
+    ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'],
+    ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'],
+    ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'],
+    ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'],
+    ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'],
+    ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
+    ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'],
+    ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'],
+    ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'],
+    ['1.2.0', 'prepatch', '1.2.1-dev.0', false, 'dev'],
+    ['1.2.0-1', 'prepatch', '1.2.1-dev.0', false, 'dev'],
+    ['1.2.0', 'preminor', '1.3.0-dev.0', false, 'dev'],
+    ['1.2.3-1', 'preminor', '1.3.0-dev.0', false, 'dev'],
+    ['1.2.0', 'premajor', '2.0.0-dev.0', false, 'dev'],
+    ['1.2.3-1', 'premajor', '2.0.0-dev.0', false, 'dev'],
+    ['1.2.0-1', 'minor', '1.2.0', false, 'dev'],
+    ['1.0.0-1', 'major', '1.0.0', false, 'dev'],
+    ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev']
+
+  ].forEach(function(v) {
+    var pre = v[0];
+    var what = v[1];
+    var wanted = v[2];
+    var loose = v[3];
+    var id = v[4];
+    var found = inc(pre, what, loose, id);
+    var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')';
+    t.equal(found, wanted, cmd + ' === ' + wanted);
+
+    var parsed = semver.parse(pre, loose);
+    if (wanted) {
+      parsed.inc(what, id);
+      t.equal(parsed.version, wanted, cmd + ' object version updated');
+      t.equal(parsed.raw, wanted, cmd + ' object raw field updated');
+    } else if (parsed) {
+      t.throws(function () {
+        parsed.inc(what, id)
+      })
+    } else {
+      t.equal(parsed, null)
+    }
+  });
+
+  t.end();
+});
+
+test('\ndiff versions test', function(t) {
+//  [version1, version2, result]
+//  diff(version1, version2) -> result
+  [['1.2.3', '0.2.3', 'major'],
+    ['1.4.5', '0.2.3', 'major'],
+    ['1.2.3', '2.0.0-pre', 'premajor'],
+    ['1.2.3', '1.3.3', 'minor'],
+    ['1.0.1', '1.1.0-pre', 'preminor'],
+    ['1.2.3', '1.2.4', 'patch'],
+    ['1.2.3', '1.2.4-pre', 'prepatch'],
+    ['0.0.1', '0.0.1-pre', 'prerelease'],
+    ['0.0.1', '0.0.1-pre-2', 'prerelease'],
+    ['1.1.0', '1.1.0-pre', 'prerelease'],
+    ['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'],
+    ['1.0.0', '1.0.0', null]
+
+  ].forEach(function(v) {
+    var version1 = v[0];
+    var version2 = v[1];
+    var wanted = v[2];
+    var found = diff(version1, version2);
+    var cmd = 'diff(' + version1 + ', ' + version2 + ')';
+    t.equal(found, wanted, cmd + ' === ' + wanted);
+  });
+
+  t.end();
+});
+
+test('\nvalid range test', function(t) {
+  // [range, result]
+  // validRange(range) -> result
+  // translate ranges into their canonical form
+  [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'],
+    ['1.0.0', '1.0.0'],
+    ['>=*', '*'],
+    ['', '*'],
+    ['*', '*'],
+    ['*', '*'],
+    ['>=1.0.0', '>=1.0.0'],
+    ['>1.0.0', '>1.0.0'],
+    ['<=2.0.0', '<=2.0.0'],
+    ['1', '>=1.0.0 <2.0.0'],
+    ['<=2.0.0', '<=2.0.0'],
+    ['<=2.0.0', '<=2.0.0'],
+    ['<2.0.0', '<2.0.0'],
+    ['<2.0.0', '<2.0.0'],
+    ['>= 1.0.0', '>=1.0.0'],
+    ['>=  1.0.0', '>=1.0.0'],
+    ['>=   1.0.0', '>=1.0.0'],
+    ['> 1.0.0', '>1.0.0'],
+    ['>  1.0.0', '>1.0.0'],
+    ['<=   2.0.0', '<=2.0.0'],
+    ['<= 2.0.0', '<=2.0.0'],
+    ['<=  2.0.0', '<=2.0.0'],
+    ['<    2.0.0', '<2.0.0'],
+    ['<	2.0.0', '<2.0.0'],
+    ['>=0.1.97', '>=0.1.97'],
+    ['>=0.1.97', '>=0.1.97'],
+    ['0.1.20 || 1.2.4', '0.1.20||1.2.4'],
+    ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
+    ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
+    ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
+    ['||', '||'],
+    ['2.x.x', '>=2.0.0 <3.0.0'],
+    ['1.2.x', '>=1.2.0 <1.3.0'],
+    ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
+    ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
+    ['x', '*'],
+    ['2.*.*', '>=2.0.0 <3.0.0'],
+    ['1.2.*', '>=1.2.0 <1.3.0'],
+    ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
+    ['*', '*'],
+    ['2', '>=2.0.0 <3.0.0'],
+    ['2.3', '>=2.3.0 <2.4.0'],
+    ['~2.4', '>=2.4.0 <2.5.0'],
+    ['~2.4', '>=2.4.0 <2.5.0'],
+    ['~>3.2.1', '>=3.2.1 <3.3.0'],
+    ['~1', '>=1.0.0 <2.0.0'],
+    ['~>1', '>=1.0.0 <2.0.0'],
+    ['~> 1', '>=1.0.0 <2.0.0'],
+    ['~1.0', '>=1.0.0 <1.1.0'],
+    ['~ 1.0', '>=1.0.0 <1.1.0'],
+    ['^0', '>=0.0.0 <1.0.0'],
+    ['^ 1', '>=1.0.0 <2.0.0'],
+    ['^0.1', '>=0.1.0 <0.2.0'],
+    ['^1.0', '>=1.0.0 <2.0.0'],
+    ['^1.2', '>=1.2.0 <2.0.0'],
+    ['^0.0.1', '>=0.0.1 <0.0.2'],
+    ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'],
+    ['^0.1.2', '>=0.1.2 <0.2.0'],
+    ['^1.2.3', '>=1.2.3 <2.0.0'],
+    ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'],
+    ['<1', '<1.0.0'],
+    ['< 1', '<1.0.0'],
+    ['>=1', '>=1.0.0'],
+    ['>= 1', '>=1.0.0'],
+    ['<1.2', '<1.2.0'],
+    ['< 1.2', '<1.2.0'],
+    ['1', '>=1.0.0 <2.0.0'],
+    ['>01.02.03', '>1.2.3', true],
+    ['>01.02.03', null],
+    ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true],
+    ['~1.2.3beta', null],
+    ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0']
+  ].forEach(function(v) {
+    var pre = v[0];
+    var wanted = v[1];
+    var loose = v[2];
+    var found = validRange(pre, loose);
+
+    t.equal(found, wanted, 'validRange(' + pre + ') === ' + wanted);
+  });
+
+  t.end();
+});
+
+test('\ncomparators test', function(t) {
+  // [range, comparators]
+  // turn range into a set of individual comparators
+  [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]],
+    ['1.0.0', [['1.0.0']]],
+    ['>=*', [['']]],
+    ['', [['']]],
+    ['*', [['']]],
+    ['*', [['']]],
+    ['>=1.0.0', [['>=1.0.0']]],
+    ['>=1.0.0', [['>=1.0.0']]],
+    ['>=1.0.0', [['>=1.0.0']]],
+    ['>1.0.0', [['>1.0.0']]],
+    ['>1.0.0', [['>1.0.0']]],
+    ['<=2.0.0', [['<=2.0.0']]],
+    ['1', [['>=1.0.0', '<2.0.0']]],
+    ['<=2.0.0', [['<=2.0.0']]],
+    ['<=2.0.0', [['<=2.0.0']]],
+    ['<2.0.0', [['<2.0.0']]],
+    ['<2.0.0', [['<2.0.0']]],
+    ['>= 1.0.0', [['>=1.0.0']]],
+    ['>=  1.0.0', [['>=1.0.0']]],
+    ['>=   1.0.0', [['>=1.0.0']]],
+    ['> 1.0.0', [['>1.0.0']]],
+    ['>  1.0.0', [['>1.0.0']]],
+    ['<=   2.0.0', [['<=2.0.0']]],
+    ['<= 2.0.0', [['<=2.0.0']]],
+    ['<=  2.0.0', [['<=2.0.0']]],
+    ['<    2.0.0', [['<2.0.0']]],
+    ['<\t2.0.0', [['<2.0.0']]],
+    ['>=0.1.97', [['>=0.1.97']]],
+    ['>=0.1.97', [['>=0.1.97']]],
+    ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]],
+    ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
+    ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
+    ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
+    ['||', [[''], ['']]],
+    ['2.x.x', [['>=2.0.0', '<3.0.0']]],
+    ['1.2.x', [['>=1.2.0', '<1.3.0']]],
+    ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
+    ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
+    ['x', [['']]],
+    ['2.*.*', [['>=2.0.0', '<3.0.0']]],
+    ['1.2.*', [['>=1.2.0', '<1.3.0']]],
+    ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
+    ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
+    ['*', [['']]],
+    ['2', [['>=2.0.0', '<3.0.0']]],
+    ['2.3', [['>=2.3.0', '<2.4.0']]],
+    ['~2.4', [['>=2.4.0', '<2.5.0']]],
+    ['~2.4', [['>=2.4.0', '<2.5.0']]],
+    ['~>3.2.1', [['>=3.2.1', '<3.3.0']]],
+    ['~1', [['>=1.0.0', '<2.0.0']]],
+    ['~>1', [['>=1.0.0', '<2.0.0']]],
+    ['~> 1', [['>=1.0.0', '<2.0.0']]],
+    ['~1.0', [['>=1.0.0', '<1.1.0']]],
+    ['~ 1.0', [['>=1.0.0', '<1.1.0']]],
+    ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]],
+    ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]],
+    ['<1', [['<1.0.0']]],
+    ['< 1', [['<1.0.0']]],
+    ['>=1', [['>=1.0.0']]],
+    ['>= 1', [['>=1.0.0']]],
+    ['<1.2', [['<1.2.0']]],
+    ['< 1.2', [['<1.2.0']]],
+    ['1', [['>=1.0.0', '<2.0.0']]],
+    ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]],
+    ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]],
+    ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]],
+    ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]],
+    ['>*', [['<0.0.0']]],
+    ['<*', [['<0.0.0']]]
+  ].forEach(function(v) {
+    var pre = v[0];
+    var wanted = v[1];
+    var found = toComparators(v[0]);
+    var jw = JSON.stringify(wanted);
+    t.equivalent(found, wanted, 'toComparators(' + pre + ') === ' + jw);
+  });
+
+  t.end();
+});
+
+test('\ninvalid version numbers', function(t) {
+  ['1.2.3.4',
+   'NOT VALID',
+   1.2,
+   null,
+   'Infinity.NaN.Infinity'
+  ].forEach(function(v) {
+    t.throws(function() {
+      new SemVer(v);
+    }, {name:'TypeError', message:'Invalid Version: ' + v});
+  });
+
+  t.end();
+});
+
+test('\nstrict vs loose version numbers', function(t) {
+  [['=1.2.3', '1.2.3'],
+    ['01.02.03', '1.2.3'],
+    ['1.2.3-beta.01', '1.2.3-beta.1'],
+    ['   =1.2.3', '1.2.3'],
+    ['1.2.3foo', '1.2.3-foo']
+  ].forEach(function(v) {
+    var loose = v[0];
+    var strict = v[1];
+    t.throws(function() {
+      new SemVer(loose);
+    });
+    var lv = new SemVer(loose, true);
+    t.equal(lv.version, strict);
+    t.ok(eq(loose, strict, true));
+    t.throws(function() {
+      eq(loose, strict);
+    });
+    t.throws(function() {
+      new SemVer(strict).compare(loose);
+    });
+  });
+  t.end();
+});
+
+test('\nstrict vs loose ranges', function(t) {
+  [['>=01.02.03', '>=1.2.3'],
+    ['~1.02.03beta', '>=1.2.3-beta <1.3.0']
+  ].forEach(function(v) {
+    var loose = v[0];
+    var comps = v[1];
+    t.throws(function() {
+      new Range(loose);
+    });
+    t.equal(new Range(loose, true).range, comps);
+  });
+  t.end();
+});
+
+test('\nmax satisfying', function(t) {
+  [[['1.2.3', '1.2.4'], '1.2', '1.2.4'],
+    [['1.2.4', '1.2.3'], '1.2', '1.2.4'],
+    [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'],
+    [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true]
+  ].forEach(function(v) {
+    var versions = v[0];
+    var range = v[1];
+    var expect = v[2];
+    var loose = v[3];
+    var actual = semver.maxSatisfying(versions, range, loose);
+    t.equal(actual, expect);
+  });
+  t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/ltr.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/ltr.js b/node_modules/semver/test/ltr.js
new file mode 100644
index 0000000..0f7167d
--- /dev/null
+++ b/node_modules/semver/test/ltr.js
@@ -0,0 +1,181 @@
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+var ltr = semver.ltr;
+
+test('\nltr tests', function(t) {
+  // [range, version, loose]
+  // Version should be less than range
+  [
+    ['~1.2.2', '1.2.1'],
+    ['~0.6.1-1', '0.6.1-0'],
+    ['1.0.0 - 2.0.0', '0.0.1'],
+    ['1.0.0-beta.2', '1.0.0-beta.1'],
+    ['1.0.0', '0.0.0'],
+    ['>=2.0.0', '1.1.1'],
+    ['>=2.0.0', '1.2.9'],
+    ['>2.0.0', '2.0.0'],
+    ['0.1.20 || 1.2.4', '0.1.5'],
+    ['2.x.x', '1.0.0'],
+    ['1.2.x', '1.1.0'],
+    ['1.2.x || 2.x', '1.0.0'],
+    ['2.*.*', '1.0.1'],
+    ['1.2.*', '1.1.3'],
+    ['1.2.* || 2.*', '1.1.9999'],
+    ['2', '1.0.0'],
+    ['2.3', '2.2.2'],
+    ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.3.5'],
+    ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
+    ['~1', '0.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '0.2.4'],
+    ['~> 1', '0.2.3'],
+    ['~1.0', '0.1.2'], // >=1.0.0 <1.1.0
+    ['~ 1.0', '0.1.0'],
+    ['>1.2', '1.2.0'],
+    ['> 1.2', '1.2.1'],
+    ['1', '0.0.0beta', true],
+    ['~v0.5.4-pre', '0.5.4-alpha'],
+    ['~v0.5.4-pre', '0.5.4-alpha'],
+    ['=0.7.x', '0.6.0'],
+    ['=0.7.x', '0.6.0-asdf'],
+    ['>=0.7.x', '0.6.0'],
+    ['~1.2.2', '1.2.1'],
+    ['1.0.0 - 2.0.0', '0.2.3'],
+    ['1.0.0', '0.0.1'],
+    ['>=2.0.0', '1.0.0'],
+    ['>=2.0.0', '1.9999.9999'],
+    ['>=2.0.0', '1.2.9'],
+    ['>2.0.0', '2.0.0'],
+    ['>2.0.0', '1.2.9'],
+    ['2.x.x', '1.1.3'],
+    ['1.2.x', '1.1.3'],
+    ['1.2.x || 2.x', '1.1.3'],
+    ['2.*.*', '1.1.3'],
+    ['1.2.*', '1.1.3'],
+    ['1.2.* || 2.*', '1.1.3'],
+    ['2', '1.9999.9999'],
+    ['2.3', '2.2.1'],
+    ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
+    ['~>3.2.1', '2.3.2'], // >=3.2.1 <3.3.0
+    ['~1', '0.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '0.2.3'],
+    ['~1.0', '0.0.0'], // >=1.0.0 <1.1.0
+    ['>1', '1.0.0'],
+    ['2', '1.0.0beta', true],
+    ['>1', '1.0.0beta', true],
+    ['> 1', '1.0.0beta', true],
+    ['=0.7.x', '0.6.2'],
+    ['=0.7.x', '0.7.0-asdf'],
+    ['^1', '1.0.0-0'],
+    ['>=0.7.x', '0.7.0-asdf'],
+    ['1', '1.0.0beta', true],
+    ['>=0.7.x', '0.6.2'],
+    ['>1.2.3', '1.3.0-alpha']
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = 'ltr(' + version + ', ' + range + ', ' + loose + ')';
+    t.ok(ltr(version, range, loose), msg);
+  });
+  t.end();
+});
+
+test('\nnegative ltr tests', function(t) {
+  // [range, version, loose]
+  // Version should NOT be less than range
+  [
+    ['~ 1.0', '1.1.0'],
+    ['~0.6.1-1', '0.6.1-1'],
+    ['1.0.0 - 2.0.0', '1.2.3'],
+    ['1.0.0 - 2.0.0', '2.9.9'],
+    ['1.0.0', '1.0.0'],
+    ['>=*', '0.2.4'],
+    ['', '1.0.0', true],
+    ['*', '1.2.3'],
+    ['>=1.0.0', '1.0.0'],
+    ['>=1.0.0', '1.0.1'],
+    ['>=1.0.0', '1.1.0'],
+    ['>1.0.0', '1.0.1'],
+    ['>1.0.0', '1.1.0'],
+    ['<=2.0.0', '2.0.0'],
+    ['<=2.0.0', '1.9999.9999'],
+    ['<=2.0.0', '0.2.9'],
+    ['<2.0.0', '1.9999.9999'],
+    ['<2.0.0', '0.2.9'],
+    ['>= 1.0.0', '1.0.0'],
+    ['>=  1.0.0', '1.0.1'],
+    ['>=   1.0.0', '1.1.0'],
+    ['> 1.0.0', '1.0.1'],
+    ['>  1.0.0', '1.1.0'],
+    ['<=   2.0.0', '2.0.0'],
+    ['<= 2.0.0', '1.9999.9999'],
+    ['<=  2.0.0', '0.2.9'],
+    ['<    2.0.0', '1.9999.9999'],
+    ['<\t2.0.0', '0.2.9'],
+    ['>=0.1.97', 'v0.1.97'],
+    ['>=0.1.97', '0.1.97'],
+    ['0.1.20 || 1.2.4', '1.2.4'],
+    ['0.1.20 || >1.2.4', '1.2.4'],
+    ['0.1.20 || 1.2.4', '1.2.3'],
+    ['0.1.20 || 1.2.4', '0.1.20'],
+    ['>=0.2.3 || <0.0.1', '0.0.0'],
+    ['>=0.2.3 || <0.0.1', '0.2.3'],
+    ['>=0.2.3 || <0.0.1', '0.2.4'],
+    ['||', '1.3.4'],
+    ['2.x.x', '2.1.3'],
+    ['1.2.x', '1.2.3'],
+    ['1.2.x || 2.x', '2.1.3'],
+    ['1.2.x || 2.x', '1.2.3'],
+    ['x', '1.2.3'],
+    ['2.*.*', '2.1.3'],
+    ['1.2.*', '1.2.3'],
+    ['1.2.* || 2.*', '2.1.3'],
+    ['1.2.* || 2.*', '1.2.3'],
+    ['1.2.* || 2.*', '1.2.3'],
+    ['*', '1.2.3'],
+    ['2', '2.1.2'],
+    ['2.3', '2.3.1'],
+    ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
+    ['~2.4', '2.4.5'],
+    ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
+    ['~1', '1.2.3'], // >=1.0.0 <2.0.0
+    ['~>1', '1.2.3'],
+    ['~> 1', '1.2.3'],
+    ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
+    ['~ 1.0', '1.0.2'],
+    ['>=1', '1.0.0'],
+    ['>= 1', '1.0.0'],
+    ['<1.2', '1.1.1'],
+    ['< 1.2', '1.1.1'],
+    ['~v0.5.4-pre', '0.5.5'],
+    ['~v0.5.4-pre', '0.5.4'],
+    ['=0.7.x', '0.7.2'],
+    ['>=0.7.x', '0.7.2'],
+    ['<=0.7.x', '0.6.2'],
+    ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
+    ['>=0.2.3 <=0.2.4', '0.2.4'],
+    ['1.0.0 - 2.0.0', '2.0.0'],
+    ['^3.0.0', '4.0.0'],
+    ['^1.0.0 || ~2.0.1', '2.0.0'],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
+    ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
+    ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'],
+    ['^1.0.0alpha', '1.0.0beta', true],
+    ['~1.0.0alpha', '1.0.0beta', true],
+    ['^1.0.0-alpha', '1.0.0beta', true],
+    ['~1.0.0-alpha', '1.0.0beta', true],
+    ['^1.0.0-alpha', '1.0.0-beta'],
+    ['~1.0.0-alpha', '1.0.0-beta'],
+    ['=0.1.0', '1.0.0']
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = '!ltr(' + version + ', ' + range + ', ' + loose + ')';
+    t.notOk(ltr(version, range, loose), msg);
+  });
+  t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/semver/test/major-minor-patch.js
----------------------------------------------------------------------
diff --git a/node_modules/semver/test/major-minor-patch.js b/node_modules/semver/test/major-minor-patch.js
new file mode 100644
index 0000000..e9d4039
--- /dev/null
+++ b/node_modules/semver/test/major-minor-patch.js
@@ -0,0 +1,72 @@
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+
+test('\nmajor tests', function(t) {
+  // [range, version]
+  // Version should be detectable despite extra characters
+  [
+    ['1.2.3', 1],
+    [' 1.2.3 ', 1],
+    [' 2.2.3-4 ', 2],
+    [' 3.2.3-pre ', 3],
+    ['v5.2.3', 5],
+    [' v8.2.3 ', 8],
+    ['\t13.2.3', 13],
+    ['=21.2.3', 21, true],
+    ['v=34.2.3', 34, true]
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = 'major(' + range + ') = ' + version;
+    t.equal(semver.major(range, loose), version, msg);
+  });
+  t.end();
+});
+
+test('\nminor tests', function(t) {
+  // [range, version]
+  // Version should be detectable despite extra characters
+  [
+    ['1.1.3', 1],
+    [' 1.1.3 ', 1],
+    [' 1.2.3-4 ', 2],
+    [' 1.3.3-pre ', 3],
+    ['v1.5.3', 5],
+    [' v1.8.3 ', 8],
+    ['\t1.13.3', 13],
+    ['=1.21.3', 21, true],
+    ['v=1.34.3', 34, true]
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = 'minor(' + range + ') = ' + version;
+    t.equal(semver.minor(range, loose), version, msg);
+  });
+  t.end();
+});
+
+test('\npatch tests', function(t) {
+  // [range, version]
+  // Version should be detectable despite extra characters
+  [
+    ['1.2.1', 1],
+    [' 1.2.1 ', 1],
+    [' 1.2.2-4 ', 2],
+    [' 1.2.3-pre ', 3],
+    ['v1.2.5', 5],
+    [' v1.2.8 ', 8],
+    ['\t1.2.13', 13],
+    ['=1.2.21', 21, true],
+    ['v=1.2.34', 34, true]
+  ].forEach(function(tuple) {
+    var range = tuple[0];
+    var version = tuple[1];
+    var loose = tuple[2] || false;
+    var msg = 'patch(' + range + ') = ' + version;
+    t.equal(semver.patch(range, loose), version, msg);
+  });
+  t.end();
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/shelljs/package.json
----------------------------------------------------------------------
diff --git a/node_modules/shelljs/package.json b/node_modules/shelljs/package.json
index 0e7b832..f0e0b52 100644
--- a/node_modules/shelljs/package.json
+++ b/node_modules/shelljs/package.json
@@ -1,64 +1,89 @@
 {
-  "name": "shelljs",
-  "version": "0.5.3",
-  "author": {
-    "name": "Artur Adib",
-    "email": "arturadib@gmail.com"
-  },
-  "description": "Portable Unix shell commands for Node.js",
-  "keywords": [
-    "unix",
-    "shell",
-    "makefile",
-    "make",
-    "jake",
-    "synchronous"
+  "_args": [
+    [
+      "shelljs@^0.5.3",
+      "D:\\Cordova\\cordova-windows"
+    ]
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/arturadib/shelljs.git"
+  "_from": "shelljs@>=0.5.3 <0.6.0",
+  "_id": "shelljs@0.5.3",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/shelljs",
+  "_nodeVersion": "1.2.0",
+  "_npmUser": {
+    "email": "arturadib@gmail.com",
+    "name": "artur"
   },
-  "license": "BSD*",
-  "homepage": "http://github.com/arturadib/shelljs",
-  "main": "./shell.js",
-  "scripts": {
-    "test": "node scripts/run-tests"
+  "_npmVersion": "2.5.1",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "shelljs",
+    "raw": "shelljs@^0.5.3",
+    "rawSpec": "^0.5.3",
+    "scope": null,
+    "spec": ">=0.5.3 <0.6.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/",
+    "/cordova-common"
+  ],
+  "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
+  "_shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113",
+  "_shrinkwrap": null,
+  "_spec": "shelljs@^0.5.3",
+  "_where": "D:\\Cordova\\cordova-windows",
+  "author": {
+    "email": "arturadib@gmail.com",
+    "name": "Artur Adib"
   },
   "bin": {
     "shjs": "./bin/shjs"
   },
+  "bugs": {
+    "url": "https://github.com/arturadib/shelljs/issues"
+  },
   "dependencies": {},
+  "description": "Portable Unix shell commands for Node.js",
   "devDependencies": {
     "jshint": "~2.1.11"
   },
-  "optionalDependencies": {},
+  "directories": {},
+  "dist": {
+    "shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113",
+    "tarball": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz"
+  },
   "engines": {
     "node": ">=0.8.0"
   },
   "gitHead": "22d0975040b9b8234755dc6e692d6869436e8485",
-  "bugs": {
-    "url": "https://github.com/arturadib/shelljs/issues"
-  },
-  "_id": "shelljs@0.5.3",
-  "_shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113",
-  "_from": "shelljs@>=0.5.3 <0.6.0",
-  "_npmVersion": "2.5.1",
-  "_nodeVersion": "1.2.0",
-  "_npmUser": {
-    "name": "artur",
-    "email": "arturadib@gmail.com"
-  },
+  "homepage": "http://github.com/arturadib/shelljs",
+  "keywords": [
+    "unix",
+    "shell",
+    "makefile",
+    "make",
+    "jake",
+    "synchronous"
+  ],
+  "license": "BSD*",
+  "main": "./shell.js",
   "maintainers": [
     {
-      "name": "artur",
-      "email": "arturadib@gmail.com"
+      "email": "arturadib@gmail.com",
+      "name": "artur"
     }
   ],
-  "dist": {
-    "shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113",
-    "tarball": "http://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz"
+  "name": "shelljs",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/arturadib/shelljs.git"
   },
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
-  "readme": "ERROR: No README data found!"
+  "scripts": {
+    "test": "node scripts/run-tests"
+  },
+  "version": "0.5.3"
 }

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

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/underscore/README.md
----------------------------------------------------------------------
diff --git a/node_modules/underscore/README.md b/node_modules/underscore/README.md
new file mode 100644
index 0000000..c2ba259
--- /dev/null
+++ b/node_modules/underscore/README.md
@@ -0,0 +1,22 @@
+                       __
+                      /\ \                                                         __
+     __  __    ___    \_\ \     __   _ __   ____    ___    ___   _ __    __       /\_\    ____
+    /\ \/\ \ /' _ `\  /'_  \  /'__`\/\  __\/ ,__\  / ___\ / __`\/\  __\/'__`\     \/\ \  /',__\
+    \ \ \_\ \/\ \/\ \/\ \ \ \/\  __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\  __/  __  \ \ \/\__, `\
+     \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
+      \/___/  \/_/\/_/\/__,_ /\/____/ \/_/ \/___/  \/____/\/___/  \/_/ \/____/\/_//\ \_\ \/___/
+                                                                                  \ \____/
+                                                                                   \/___/
+
+Underscore.js is a utility-belt library for JavaScript that provides
+support for the usual functional suspects (each, map, reduce, filter...)
+without extending any core JavaScript objects.
+
+For Docs, License, Tests, and pre-packed downloads, see:
+http://underscorejs.org
+
+Underscore is an open-sourced component of DocumentCloud:
+https://github.com/documentcloud
+
+Many thanks to our contributors:
+https://github.com/jashkenas/underscore/contributors

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/underscore/package.json
----------------------------------------------------------------------
diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json
new file mode 100644
index 0000000..b49b40c
--- /dev/null
+++ b/node_modules/underscore/package.json
@@ -0,0 +1,96 @@
+{
+  "_args": [
+    [
+      "underscore@^1.8.3",
+      "D:\\Cordova\\cordova-windows\\node_modules\\cordova-common"
+    ]
+  ],
+  "_from": "underscore@>=1.8.3 <2.0.0",
+  "_id": "underscore@1.8.3",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/underscore",
+  "_npmUser": {
+    "email": "jashkenas@gmail.com",
+    "name": "jashkenas"
+  },
+  "_npmVersion": "1.4.28",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "underscore",
+    "raw": "underscore@^1.8.3",
+    "rawSpec": "^1.8.3",
+    "scope": null,
+    "spec": ">=1.8.3 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/cordova-common"
+  ],
+  "_resolved": "https://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",
+  "author": {
+    "email": "jeremy@documentcloud.org",
+    "name": "Jeremy Ashkenas"
+  },
+  "bugs": {
+    "url": "https://github.com/jashkenas/underscore/issues"
+  },
+  "dependencies": {},
+  "description": "JavaScript's functional programming helper library.",
+  "devDependencies": {
+    "docco": "*",
+    "eslint": "0.6.x",
+    "karma": "~0.12.31",
+    "karma-qunit": "~0.1.4",
+    "qunit-cli": "~0.2.0",
+    "uglify-js": "2.4.x"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022",
+    "tarball": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz"
+  },
+  "files": [
+    "underscore.js",
+    "underscore-min.js",
+    "underscore-min.map",
+    "LICENSE"
+  ],
+  "gitHead": "e4743ab712b8ab42ad4ccb48b155034d02394e4d",
+  "homepage": "http://underscorejs.org",
+  "keywords": [
+    "util",
+    "functional",
+    "server",
+    "client",
+    "browser"
+  ],
+  "license": "MIT",
+  "main": "underscore.js",
+  "maintainers": [
+    {
+      "email": "jashkenas@gmail.com",
+      "name": "jashkenas"
+    }
+  ],
+  "name": "underscore",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/underscore.git"
+  },
+  "scripts": {
+    "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js",
+    "doc": "docco underscore.js",
+    "lint": "eslint underscore.js test/*.js",
+    "test": "npm run test-node && npm run lint",
+    "test-browser": "npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start",
+    "test-node": "qunit-cli test/*.js"
+  },
+  "version": "1.8.3"
+}


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