http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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  "], + ["closecdata", undefined], + ["closetag", "R"] + ] +}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[") + .write("character data  ").write("]]></r>").close(); + http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/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  ]]></r>", + expect : [ + ["opentag", {"name": "R","attributes": {}}], + ["opencdata", undefined], + ["cdata", " this is character data  "], + ["closecdata", undefined], + ["closetag", "R"] + ] +}); http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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>

\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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/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-osx/blob/7a58a67b/node_modules/semver/.npmignore ---------------------------------------------------------------------- diff --git a/node_modules/semver/.npmignore b/node_modules/semver/.npmignore new file mode 100644 index 0000000..534108e --- /dev/null +++ b/node_modules/semver/.npmignore @@ -0,0 +1,4 @@ +node_modules/ +coverage/ +.nyc_output/ +nyc_output/ http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/node_modules/semver/.travis.yml ---------------------------------------------------------------------- diff --git a/node_modules/semver/.travis.yml b/node_modules/semver/.travis.yml new file mode 100644 index 0000000..991d04b --- /dev/null +++ b/node_modules/semver/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - '0.10' + - '0.12' + - 'iojs' http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/node_modules/semver/LICENSE ---------------------------------------------------------------------- diff --git a/node_modules/semver/LICENSE b/node_modules/semver/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/node_modules/semver/README.md ---------------------------------------------------------------------- diff --git a/node_modules/semver/README.md b/node_modules/semver/README.md new file mode 100644 index 0000000..0b14a7e --- /dev/null +++ b/node_modules/semver/README.md @@ -0,0 +1,327 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Usage + + $ npm install semver + + semver.valid('1.2.3') // '1.2.3' + semver.valid('a.b.c') // null + semver.clean(' =v1.2.3 ') // '1.2.3' + semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true + semver.gt('1.2.3', '9.8.7') // false + semver.lt('1.2.3', '9.8.7') // true + +As a command-line utility: + + $ semver -h + + Usage: semver <version> [<version> [...]] [-r <range> | -i <inc> | --preid <identifier> | -l | -rv] + Test if version(s) satisfy the supplied range(s), and sort them. + + Multiple versions or ranges may be supplied, unless increment + option is specified. In that case, only a single version may + be used, and it is incremented by the specified level + + Program exits successfully if any valid version satisfies + all supplied ranges, and prints all satisfying versions. + + If no versions are valid, or ranges are not satisfied, + then exits failure. + + Versions are printed in ascending order, so supplying + multiple versions to the utility will just sort them. + +## Versions + +A "version" is described by the `v2.0.0` specification found at +<http://semver.org/>. + +A leading `"="` or `"v"` character is stripped off and ignored. + +## Ranges + +A `version range` is a set of `comparators` which specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional, but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. The +version `3.4.5` *would* satisfy the range, because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose for this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range matching +semantics. + +Second, a user who has opted into using a prerelease version has +clearly indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +> semver.inc('1.2.3', 'prerelease', 'beta') +'1.2.4-beta.0' +``` + +command-line example: + +```shell +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```shell +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any version satisfies) +* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero digit in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0` +* `^0.2.3` := `>=0.2.3 <0.3.0` +* `^0.0.3` := `>=0.0.3 <0.0.4` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0` +* `^0.0.x` := `>=0.0.0 <0.1.0` +* `^0.0` := `>=0.0.0 <0.1.0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0` +* `^0.x` := `>=0.0.0 <1.0.0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9']['0'-'9']+ +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + +## Functions + +All methods and classes take a final `loose` boolean argument that, if +true, will be more forgiving about not-quite-valid semver strings. +The resulting output will always be 100% strict, of course. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, release)`: Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, or `prerelease`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, the `prerelease` will work the + same as `prepatch`. It increments the patch version, then makes a + prerelease. If the input version is already a prerelease it simply + increments it. +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the exact same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `diff(v1, v2)`: Returns difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `gtr(version, range)`: Return `true` if version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so the version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/node_modules/semver/bin/semver ---------------------------------------------------------------------- diff --git a/node_modules/semver/bin/semver b/node_modules/semver/bin/semver new file mode 100755 index 0000000..c5f2e85 --- /dev/null +++ b/node_modules/semver/bin/semver @@ -0,0 +1,133 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +var argv = process.argv.slice(2) + , versions = [] + , range = [] + , gt = [] + , lt = [] + , eq = [] + , inc = null + , version = require("../package.json").version + , loose = false + , identifier = undefined + , semver = require("../semver") + , reverse = false + +main() + +function main () { + if (!argv.length) return help() + while (argv.length) { + var a = argv.shift() + var i = a.indexOf('=') + if (i !== -1) { + a = a.slice(0, i) + argv.unshift(a.slice(i + 1)) + } + switch (a) { + case "-rv": case "-rev": case "--rev": case "--reverse": + reverse = true + break + case "-l": case "--loose": + loose = true + break + case "-v": case "--version": + versions.push(argv.shift()) + break + case "-i": case "--inc": case "--increment": + switch (argv[0]) { + case "major": case "minor": case "patch": case "prerelease": + case "premajor": case "preminor": case "prepatch": + inc = argv.shift() + break + default: + inc = "patch" + break + } + break + case "--preid": + identifier = argv.shift() + break + case "-r": case "--range": + range.push(argv.shift()) + break + case "-h": case "--help": case "-?": + return help() + default: + versions.push(a) + break + } + } + + versions = versions.filter(function (v) { + return semver.valid(v, loose) + }) + if (!versions.length) return fail() + if (inc && (versions.length !== 1 || range.length)) + return failInc() + + for (var i = 0, l = range.length; i < l ; i ++) { + versions = versions.filter(function (v) { + return semver.satisfies(v, range[i], loose) + }) + if (!versions.length) return fail() + } + return success(versions) +} + +function failInc () { + console.error("--inc can only be used on a single version with no range") + fail() +} + +function fail () { process.exit(1) } + +function success () { + var compare = reverse ? "rcompare" : "compare" + versions.sort(function (a, b) { + return semver[compare](a, b, loose) + }).map(function (v) { + return semver.clean(v, loose) + }).map(function (v) { + return inc ? semver.inc(v, inc, loose, identifier) : v + }).forEach(function (v,i,_) { console.log(v) }) +} + +function help () { + console.log(["SemVer " + version + ,"" + ,"A JavaScript implementation of the http://semver.org/ specification" + ,"Copyright Isaac Z. Schlueter" + ,"" + ,"Usage: semver [options] <version> [<version> [...]]" + ,"Prints valid versions sorted by SemVer precedence" + ,"" + ,"Options:" + ,"-r --range <range>" + ," Print versions that match the specified range." + ,"" + ,"-i --increment [<level>]" + ," Increment a version by the specified level. Level can" + ," be one of: major, minor, patch, premajor, preminor," + ," prepatch, or prerelease. Default level is 'patch'." + ," Only one version may be specified." + ,"" + ,"--preid <identifier>" + ," Identifier to be used to prefix premajor, preminor," + ," prepatch or prerelease version increments." + ,"" + ,"-l --loose" + ," Interpret versions and ranges loosely" + ,"" + ,"Program exits successfully if any valid version satisfies" + ,"all supplied ranges, and prints all satisfying versions." + ,"" + ,"If no satisfying versions are found, then exits failure." + ,"" + ,"Versions are printed in ascending order, so supplying" + ,"multiple versions to the utility will just sort them." + ].join("\n")) +} http://git-wip-us.apache.org/repos/asf/cordova-osx/blob/7a58a67b/node_modules/semver/package.json ---------------------------------------------------------------------- diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json new file mode 100644 index 0000000..cbd09b4 --- /dev/null +++ b/node_modules/semver/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + "semver@^5.0.1", + "/Users/steveng/repo/cordova/cordova-osx/node_modules/cordova-common" + ] + ], + "_from": "semver@>=5.0.1 <6.0.0", + "_id": "[email protected]", + "_inCache": true, + "_installable": true, + "_location": "/semver", + "_nodeVersion": "4.0.0", + "_npmUser": { + "email": "[email protected]", + "name": "isaacs" + }, + "_npmVersion": "3.3.2", + "_phantomChildren": {}, + "_requested": { + "name": "semver", + "raw": "semver@^5.0.1", + "rawSpec": "^5.0.1", + "scope": null, + "spec": ">=5.0.1 <6.0.0", + "type": "range" + }, + "_requiredBy": [ + "/cordova-common" + ], + "_resolved": "http://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "_shasum": "85f2cf8550465c4df000cf7d86f6b054106ab9e5", + "_shrinkwrap": null, + "_spec": "semver@^5.0.1", + "_where": "/Users/steveng/repo/cordova/cordova-osx/node_modules/cordova-common", + "bin": { + "semver": "./bin/semver" + }, + "bugs": { + "url": "https://github.com/npm/node-semver/issues" + }, + "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" + }, + "gitHead": "8e33a30e62e40e4983d1c5f55e794331b861aadc", + "homepage": "https://github.com/npm/node-semver#readme", + "license": "ISC", + "main": "semver.js", + "maintainers": [ + { + "name": "isaacs", + "email": "[email protected]" + }, + { + "name": "othiym23", + "email": "[email protected]" + } + ], + "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-osx/blob/7a58a67b/node_modules/semver/range.bnf ---------------------------------------------------------------------- diff --git a/node_modules/semver/range.bnf b/node_modules/semver/range.bnf new file mode 100644 index 0000000..000df92 --- /dev/null +++ b/node_modules/semver/range.bnf @@ -0,0 +1,16 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9']['0'-'9']+ +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
