Merge lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes into lp:cordova-ubuntu/container

Proposed by David Barth
Status: Needs review
Proposed branch: lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes
Merge into: lp:cordova-ubuntu/container
Diff against target: 1370 lines (+491/-201)
40 files modified
apparmor.json (+1/-1)
build/VERSION (+1/-1)
build/bin/node_modules/colors/package.json (+2/-8)
build/bin/node_modules/elementtree/CHANGES.md (+9/-4)
build/bin/node_modules/elementtree/README.md (+114/-0)
build/bin/node_modules/elementtree/lib/elementtree.js (+15/-2)
build/bin/node_modules/elementtree/node_modules/sax/package.json (+1/-8)
build/bin/node_modules/elementtree/package.json (+4/-7)
build/bin/node_modules/elementtree/tests/test-simple.js (+40/-0)
build/bin/node_modules/optimist/node_modules/minimist/index.js (+8/-14)
build/bin/node_modules/optimist/node_modules/minimist/package.json (+2/-5)
build/bin/node_modules/optimist/node_modules/minimist/test/parse.js (+21/-0)
build/bin/node_modules/optimist/node_modules/minimist/test/short.js (+0/-18)
build/bin/node_modules/optimist/node_modules/wordwrap/package.json (+0/-3)
build/bin/node_modules/optimist/package.json (+1/-8)
build/bin/node_modules/shelljs/package.json (+1/-8)
build/src/coreplugins.cpp (+12/-10)
build/src/plugins/org.apache.cordova.camera/camera.cpp (+3/-3)
build/src/plugins/org.apache.cordova.camera/camera.h (+10/-0)
build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp (+1/-1)
build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp (+7/-7)
build/www/cordova.js (+2/-2)
config.xml (+3/-3)
cordova/node_modules/colors/package.json (+2/-8)
cordova/node_modules/elementtree/CHANGES.md (+9/-4)
cordova/node_modules/elementtree/README.md (+114/-0)
cordova/node_modules/elementtree/lib/elementtree.js (+15/-2)
cordova/node_modules/elementtree/node_modules/sax/package.json (+1/-8)
cordova/node_modules/elementtree/package.json (+4/-7)
cordova/node_modules/elementtree/tests/test-simple.js (+40/-0)
cordova/node_modules/optimist/node_modules/minimist/index.js (+8/-14)
cordova/node_modules/optimist/node_modules/minimist/package.json (+2/-5)
cordova/node_modules/optimist/node_modules/minimist/test/parse.js (+21/-0)
cordova/node_modules/optimist/node_modules/minimist/test/short.js (+0/-18)
cordova/node_modules/optimist/node_modules/wordwrap/package.json (+0/-3)
cordova/node_modules/optimist/package.json (+1/-8)
cordova/node_modules/shelljs/package.json (+1/-8)
debian/changelog (+12/-0)
platform_www/cordova.js (+2/-2)
qml/CaptureWidget.qml (+1/-1)
To merge this branch: bzr merge lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes
Reviewer Review Type Date Requested Status
Cordova Ubuntu Team Pending
Review via email: mp+208032@code.launchpad.net

Commit message

3.4.0 + maxim's fixes

Description of the change

3.4.0 + maxim's fixes

To post a comment you must log in.

Unmerged revisions

23. By David Barth

3.4.0 with ubuntu fixes

22. By David Barth

add Maxim's latest fixes for camera, file-transfer and device-motion plugins

21. By David Barth

Update to 3.4.0 release

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'apparmor.json'
2--- apparmor.json 2014-02-19 13:49:25 +0000
3+++ apparmor.json 2014-02-24 22:54:06 +0000
4@@ -1,1 +1,1 @@
5-{"policy_groups":["networking","audio","camera","sensors","location","microphone","video","audio","camera","microphone"],"policy_version":1}
6\ No newline at end of file
7+{"policy_groups":["networking","audio","sensors","location","microphone","video","audio","camera","microphone","camera"],"policy_version":1}
8\ No newline at end of file
9
10=== modified file 'build/VERSION'
11--- build/VERSION 2014-02-05 23:42:31 +0000
12+++ build/VERSION 2014-02-24 22:54:06 +0000
13@@ -1,1 +1,1 @@
14-3.4.0-rc1
15+3.4.0
16
17=== modified file 'build/bin/node_modules/colors/package.json'
18--- build/bin/node_modules/colors/package.json 2014-02-05 23:42:31 +0000
19+++ build/bin/node_modules/colors/package.json 2014-02-24 22:54:06 +0000
20@@ -6,9 +6,7 @@
21 "name": "Marak Squires"
22 },
23 "homepage": "https://github.com/Marak/colors.js",
24- "bugs": {
25- "url": "https://github.com/Marak/colors.js/issues"
26- },
27+ "bugs": "https://github.com/Marak/colors.js/issues",
28 "keywords": [
29 "ansi",
30 "terminal",
31@@ -25,9 +23,5 @@
32 "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
33 "readmeFilename": "ReadMe.md",
34 "_id": "colors@0.6.2",
35- "dist": {
36- "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746"
37- },
38- "_from": "colors@0.6.2",
39- "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
40+ "_from": "colors@0.6.2"
41 }
42
43=== modified file 'build/bin/node_modules/elementtree/CHANGES.md'
44--- build/bin/node_modules/elementtree/CHANGES.md 2014-02-05 23:42:31 +0000
45+++ build/bin/node_modules/elementtree/CHANGES.md 2014-02-24 22:54:06 +0000
46@@ -1,22 +1,27 @@
47-elementtree v0.1.5 (in development)
48+elementtree v0.1.6 (in development)
49+
50+* Add support for CData elements. (#14)
51+ [hermannpencole]
52+
53+elementtree v0.1.5 - 2012-11-14
54
55 * Fix a bug in the find() and findtext() method which could manifest itself
56 under some conditions.
57 [metagriffin]
58
59-elementtree v0.1.4
60+elementtree v0.1.4 - 2012-10-15
61
62 * Allow user to use namespaced attributes when using find* functions.
63 [Andrew Lunny]
64
65-elementtree v0.1.3
66+elementtree v0.1.3 - 2012-09-21
67
68 * Improve the output of text content in the tags (strip unnecessary line break
69 characters).
70
71 [Darryl Pogue]
72
73-elementtree v0.1.2
74+elementtree v0.1.2 - 2012-09-04
75
76 * Allow user to pass 'indent' option to ElementTree.write method. If this
77 option is specified (e.g. {'indent': 4}). XML will be pretty printed.
78
79=== modified file 'build/bin/node_modules/elementtree/README.md'
80--- build/bin/node_modules/elementtree/README.md 2014-02-05 23:42:31 +0000
81+++ build/bin/node_modules/elementtree/README.md 2014-02-24 22:54:06 +0000
82@@ -15,6 +15,120 @@
83
84 Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).
85
86+Example 1 – Creating An XML Document
87+====================
88+
89+This example shows how to build a valid XML document that can be published to
90+Atom Hopper. Atom Hopper is used internally as a bridge from products all the
91+way to collecting revenue, called “Usage.” MaaS and other products send similar
92+events to it every time user performs an action on a resource
93+(e.g. creates,updates or deletes). Below is an example of leveraging the API
94+to create a new XML document.
95+
96+```javascript
97+var et = require('elementtree');
98+var XML = et.XML;
99+var ElementTree = et.ElementTree;
100+var element = et.Element;
101+var subElement = et.SubElement;
102+
103+var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,
104+checks, resourceId, category, startTime, resourceName, etree, xml;
105+
106+date = new Date();
107+
108+root = element('entry');
109+root.set('xmlns', 'http://www.w3.org/2005/Atom');
110+
111+tenantId = subElement(root, 'TenantId');
112+tenantId.text = '12345';
113+
114+serviceName = subElement(root, 'ServiceName');
115+serviceName.text = 'MaaS';
116+
117+resourceId = subElement(root, 'ResourceID');
118+resourceId.text = 'enAAAA';
119+
120+usageId = subElement(root, 'UsageID');
121+usageId.text = '550e8400-e29b-41d4-a716-446655440000';
122+
123+eventType = subElement(root, 'EventType');
124+eventType.text = 'create';
125+
126+category = subElement(root, 'category');
127+category.set('term', 'monitoring.entity.create');
128+
129+dataCenter = subElement(root, 'DataCenter');
130+dataCenter.text = 'global';
131+
132+region = subElement(root, 'Region');
133+region.text = 'global';
134+
135+startTime = subElement(root, 'StartTime');
136+startTime.text = date;
137+
138+resourceName = subElement(root, 'ResourceName');
139+resourceName.text = 'entity';
140+
141+etree = new ElementTree(root);
142+xml = etree.write({'xml_declaration': false});
143+console.log(xml);
144+```
145+
146+As you can see, both et.Element and et.SubElement are factory methods which
147+return a new instance of Element and SubElement class, respectively.
148+When you create a new element (tag) you can use set method to set an attribute.
149+To set the tag value, assign a value to the .text attribute.
150+
151+This example would output a document that looks like this:
152+
153+```xml
154+<entry xmlns="http://www.w3.org/2005/Atom">
155+ <TenantId>12345</TenantId>
156+ <ServiceName>MaaS</ServiceName>
157+ <ResourceID>enAAAA</ResourceID>
158+ <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>
159+ <EventType>create</EventType>
160+ <category term="monitoring.entity.create"/>
161+ <DataCenter>global</DataCenter>
162+ <Region>global</Region>
163+ <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>
164+ <ResourceName>entity</ResourceName>
165+</entry>
166+```
167+
168+Example 2 – Parsing An XML Document
169+====================
170+
171+This example shows how to parse an XML document and use simple XPath selectors.
172+For demonstration purposes, we will use the XML document located at
173+https://gist.github.com/2554343.
174+
175+Behind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,
176+but the library has a concept of “parsers,” which means it’s pretty simple to
177+add support for a different parser.
178+
179+```javascript
180+var fs = require('fs');
181+
182+var et = require('elementtree');
183+
184+var XML = et.XML;
185+var ElementTree = et.ElementTree;
186+var element = et.Element;
187+var subElement = et.SubElement;
188+
189+var data, etree;
190+
191+data = fs.readFileSync('document.xml').toString();
192+etree = et.parse(data);
193+
194+console.log(etree.findall('./entry/TenantId').length); // 2
195+console.log(etree.findtext('./entry/ServiceName')); // MaaS
196+console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create
197+console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1
198+```
199+
200 Build status
201 ====================
202
203
204=== modified file 'build/bin/node_modules/elementtree/lib/elementtree.js'
205--- build/bin/node_modules/elementtree/lib/elementtree.js 2014-02-05 23:42:31 +0000
206+++ build/bin/node_modules/elementtree/lib/elementtree.js 2014-02-24 22:54:06 +0000
207@@ -103,7 +103,7 @@
208 this._children[index] = element;
209 };
210
211-Element.prototype.remove = function(index, element)
212+Element.prototype.remove = function(element)
213 {
214 this._children = this._children.filter(function(e) {
215 /* TODO: is this the right way to do this? */
216@@ -219,6 +219,14 @@
217 return element;
218 }
219
220+function CData(text) {
221+ var element = new Element(CData);
222+ if (text) {
223+ element.text = text;
224+ }
225+ return element;
226+}
227+
228 function ProcessingInstruction(target, text)
229 {
230 var element = new Element(ProcessingInstruction);
231@@ -441,7 +449,7 @@
232 else if (typeof(tag) === "string") {
233 add_qname(tag);
234 }
235- else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) {
236+ else if (tag !== null && tag !== Comment && tag !== CData && tag !== ProcessingInstruction) {
237 throw new Error('Invalid tag type for serialization: '+ tag);
238 }
239
240@@ -483,6 +491,10 @@
241 else if (tag === ProcessingInstruction) {
242 write(sprintf("<?%s?>", _escape_cdata(text, encoding)));
243 }
244+ else if (tag === CData) {
245+ text = text || '';
246+ write(sprintf("<![CDATA[%s]]>", text));
247+ }
248 else {
249 tag = qnames[tag];
250 if (tag === undefined) {
251@@ -579,6 +591,7 @@
252
253 exports.PI = ProcessingInstruction;
254 exports.Comment = Comment;
255+exports.CData = CData;
256 exports.ProcessingInstruction = ProcessingInstruction;
257 exports.SubElement = SubElement;
258 exports.QName = QName;
259
260=== modified file 'build/bin/node_modules/elementtree/node_modules/sax/package.json'
261--- build/bin/node_modules/elementtree/node_modules/sax/package.json 2014-02-05 23:42:31 +0000
262+++ build/bin/node_modules/elementtree/node_modules/sax/package.json 2014-02-24 22:54:06 +0000
263@@ -55,13 +55,6 @@
264 ],
265 "readme": "# sax js\n\nA sax-style parser for XML and HTML.\n\nDesigned with [node](http://nodejs.org/) in mind, but should work fine in\nthe browser or other CommonJS implementations.\n\n## What This Is\n\n* A very simple tool to parse through an XML string.\n* A stepping stone to a streaming HTML parser.\n* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML \n docs.\n\n## What This Is (probably) Not\n\n* An HTML Parser - That's a fine goal, but this isn't it. It's just\n XML.\n* A DOM Builder - You can use it to build an object model out of XML,\n but it doesn't do that out of the box.\n* XSLT - No DOM = no querying.\n* 100% Compliant with (some other SAX implementation) - Most SAX\n implementations are in Java and do a lot more than this does.\n* An XML Validator - It does a little validation when in strict mode, but\n not much.\n* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic \n masochism.\n* A DTD-aware Thing - Fetching DTDs is a much bigger job.\n\n## Regarding `<!DOCTYPE`s and `<!ENTITY`s\n\nThe parser will handle the basic XML entities in text nodes and attribute\nvalues: `&amp; &lt; &gt; &apos; &quot;`. It's possible to define additional\nentities in XML by putting them in the DTD. This parser doesn't do anything\nwith that. If you want to listen to the `ondoctype` event, and then fetch\nthe doctypes, and read the entities and add them to `parser.ENTITIES`, then\nbe my guest.\n\nUnknown entities will fail in strict mode, and in loose mode, will pass\nthrough unmolested.\n\n## Usage\n\n var sax = require(\"./lib/sax\"),\n strict = true, // set to false for html-mode\n parser = sax.parser(strict);\n\n parser.onerror = function (e) {\n // an error happened.\n };\n parser.ontext = function (t) {\n // got some text. t is the string of text.\n };\n parser.onopentag = function (node) {\n // opened a tag. node has \"name\" and \"attributes\"\n };\n parser.onattribute = function (attr) {\n // an attribute. attr has \"name\" and \"value\"\n };\n parser.onend = function () {\n // parser stream is done, and ready to have more stuff written to it.\n };\n\n parser.write('<xml>Hello, <who name=\"world\">world</who>!</xml>').close();\n\n // stream usage\n // takes the same options as the parser\n var saxStream = require(\"sax\").createStream(strict, options)\n saxStream.on(\"error\", function (e) {\n // unhandled errors will throw, since this is a proper node\n // event emitter.\n console.error(\"error!\", e)\n // clear the error\n this._parser.error = null\n this._parser.resume()\n })\n saxStream.on(\"opentag\", function (node) {\n // same object as above\n })\n // pipe is supported, and it's readable/writable\n // same chunks coming in also go out.\n fs.createReadStream(\"file.xml\")\n .pipe(saxStream)\n .pipe(fs.createReadStream(\"file-copy.xml\"))\n\n\n\n## Arguments\n\nPass the following arguments to the parser function. All are optional.\n\n`strict` - Boolean. Whether or not to be a jerk. Default: `false`.\n\n`opt` - Object bag of settings regarding string formatting. All default to `false`.\n\nSettings supported:\n\n* `trim` - Boolean. Whether or not to trim text and comment nodes.\n* `normalize` - Boolean. If true, then turn any whitespace into a single\n space.\n* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, \n rather than uppercasing them.\n* `xmlns` - Boolean. If true, then namespaces are supported.\n\n## Methods\n\n`write` - Write bytes onto the stream. You don't have to do this all at\nonce. You can keep writing as much as you want.\n\n`close` - Close the stream. Once closed, no more data may be written until\nit is done processing the buffer, which is signaled by the `end` event.\n\n`resume` - To gracefully handle errors, assign a listener to the `error`\nevent. Then, when the error is taken care of, you can call `resume` to\ncontinue parsing. Otherwise, the parser will not continue while in an error\nstate.\n\n## Members\n\nAt all times, the parser object will have the following members:\n\n`line`, `column`, `position` - Indications of the position in the XML\ndocument where the parser currently is looking.\n\n`startTagPosition` - Indicates the position where the current tag starts.\n\n`closed` - Boolean indicating whether or not the parser can be written to.\nIf it's `true`, then wait for the `ready` event to write again.\n\n`strict` - Boolean indicating whether or not the parser is a jerk.\n\n`opt` - Any options passed into the constructor.\n\n`tag` - The current tag being dealt with.\n\nAnd a bunch of other stuff that you probably shouldn't touch.\n\n## Events\n\nAll events emit with a single argument. To listen to an event, assign a\nfunction to `on<eventname>`. Functions get executed in the this-context of\nthe parser object. The list of supported events are also in the exported\n`EVENTS` array.\n\nWhen using the stream interface, assign handlers using the EventEmitter\n`on` function in the normal fashion.\n\n`error` - Indication that something bad happened. The error will be hanging\nout on `parser.error`, and must be deleted before parsing can continue. By\nlistening to this event, you can keep an eye on that kind of stuff. Note:\nthis happens *much* more in strict mode. Argument: instance of `Error`.\n\n`text` - Text node. Argument: string of text.\n\n`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.\n\n`processinginstruction` - Stuff like `<?xml foo=\"blerg\" ?>`. Argument:\nobject with `name` and `body` members. Attributes are not parsed, as\nprocessing instructions have implementation dependent semantics.\n\n`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`\nwould trigger this kind of event. This is a weird thing to support, so it\nmight go away at some point. SAX isn't intended to be used to parse SGML,\nafter all.\n\n`opentag` - An opening tag. Argument: object with `name` and `attributes`.\nIn non-strict mode, tag names are uppercased, unless the `lowercasetags`\noption is set. If the `xmlns` option is set, then it will contain\nnamespace binding information on the `ns` member, and will have a\n`local`, `prefix`, and `uri` member.\n\n`closetag` - A closing tag. In loose mode, tags are auto-closed if their\nparent closes. In strict mode, well-formedness is enforced. Note that\nself-closing tags will have `closeTag` emitted immediately after `openTag`.\nArgument: tag name.\n\n`attribute` - An attribute node. Argument: object with `name` and `value`,\nand also namespace information if the `xmlns` option flag is set.\n\n`comment` - A comment node. Argument: the string of the comment.\n\n`opencdata` - The opening tag of a `<![CDATA[` block.\n\n`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get\nquite large, this event may fire multiple times for a single block, if it\nis broken up into multiple `write()`s. Argument: the string of random\ncharacter data.\n\n`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.\n\n`opennamespace` - If the `xmlns` option is set, then this event will\nsignal the start of a new namespace binding.\n\n`closenamespace` - If the `xmlns` option is set, then this event will\nsignal the end of a namespace binding.\n\n`end` - Indication that the closed stream has ended.\n\n`ready` - Indication that the stream has reset, and is ready to be written\nto.\n\n`noscript` - In non-strict mode, `<script>` tags trigger a `\"script\"`\nevent, and their contents are not checked for special xml characters.\nIf you pass `noscript: true`, then this behavior is suppressed.\n\n## Reporting Problems\n\nIt's best to write a failing test if you find an issue. I will always\naccept pull requests with failing tests if they demonstrate intended\nbehavior, but it is very hard to figure out what issue you're describing\nwithout a test. Writing a test is also the best way for you yourself\nto figure out if you really understand the issue you think you have with\nsax-js.\n",
266 "readmeFilename": "README.md",
267- "bugs": {
268- "url": "https://github.com/isaacs/sax-js/issues"
269- },
270 "_id": "sax@0.3.5",
271- "dist": {
272- "shasum": "97a786cbbe404d7e24961b201f37be81b9249908"
273- },
274- "_from": "sax@0.3.5",
275- "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz"
276+ "_from": "sax@0.3.5"
277 }
278
279=== modified file 'build/bin/node_modules/elementtree/package.json'
280--- build/bin/node_modules/elementtree/package.json 2014-02-05 23:42:31 +0000
281+++ build/bin/node_modules/elementtree/package.json 2014-02-24 22:54:06 +0000
282@@ -14,7 +14,7 @@
283 ],
284 "name": "elementtree",
285 "description": "XML Serialization and Parsing module based on Python's ElementTree.",
286- "version": "0.1.5",
287+ "version": "0.1.6",
288 "keywords": [
289 "xml",
290 "sax",
291@@ -41,7 +41,7 @@
292 "sax": "0.3.5"
293 },
294 "devDependencies": {
295- "whiskey": "0.6.8"
296+ "whiskey": "0.8.x"
297 },
298 "licenses": [
299 {
300@@ -49,11 +49,8 @@
301 "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
302 }
303 ],
304- "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n",
305+ "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nExample 1 – Creating An XML Document\n====================\n\nThis example shows how to build a valid XML document that can be published to\nAtom Hopper. Atom Hopper is used internally as a bridge from products all the\nway to collecting revenue, called “Usage.” MaaS and other products send similar\nevents to it every time user performs an action on a resource\n(e.g. creates,updates or deletes). Below is an example of leveraging the API\nto create a new XML document.\n\n```javascript\nvar et = require('elementtree');\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,\nchecks, resourceId, category, startTime, resourceName, etree, xml;\n\ndate = new Date();\n\nroot = element('entry');\nroot.set('xmlns', 'http://www.w3.org/2005/Atom');\n\ntenantId = subElement(root, 'TenantId');\ntenantId.text = '12345';\n\nserviceName = subElement(root, 'ServiceName');\nserviceName.text = 'MaaS';\n\nresourceId = subElement(root, 'ResourceID');\nresourceId.text = 'enAAAA';\n\nusageId = subElement(root, 'UsageID');\nusageId.text = '550e8400-e29b-41d4-a716-446655440000';\n\neventType = subElement(root, 'EventType');\neventType.text = 'create';\n\ncategory = subElement(root, 'category');\ncategory.set('term', 'monitoring.entity.create');\n\ndataCenter = subElement(root, 'DataCenter');\ndataCenter.text = 'global';\n\nregion = subElement(root, 'Region');\nregion.text = 'global';\n\nstartTime = subElement(root, 'StartTime');\nstartTime.text = date;\n\nresourceName = subElement(root, 'ResourceName');\nresourceName.text = 'entity';\n\netree = new ElementTree(root);\nxml = etree.write({'xml_declaration': false});\nconsole.log(xml);\n```\n\nAs you can see, both et.Element and et.SubElement are factory methods which\nreturn a new instance of Element and SubElement class, respectively.\nWhen you create a new element (tag) you can use set method to set an attribute.\nTo set the tag value, assign a value to the .text attribute.\n\nThis example would output a document that looks like this:\n\n```xml\n<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <TenantId>12345</TenantId>\n <ServiceName>MaaS</ServiceName>\n <ResourceID>enAAAA</ResourceID>\n <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>\n <EventType>create</EventType>\n <category term=\"monitoring.entity.create\"/>\n <DataCenter>global</DataCenter>\n <Region>global</Region>\n <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>\n <ResourceName>entity</ResourceName>\n</entry>\n```\n\nExample 2 – Parsing An XML Document\n====================\n\nThis example shows how to parse an XML document and use simple XPath selectors.\nFor demonstration purposes, we will use the XML document located at\nhttps://gist.github.com/2554343.\n\nBehind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,\nbut the library has a concept of “parsers,” which means it’s pretty simple to\nadd support for a different parser.\n\n```javascript\nvar fs = require('fs');\n\nvar et = require('elementtree');\n\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar data, etree;\n\ndata = fs.readFileSync('document.xml').toString();\netree = et.parse(data);\n\nconsole.log(etree.findall('./entry/TenantId').length); // 2\nconsole.log(etree.findtext('./entry/ServiceName')); // MaaS\nconsole.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create\nconsole.log(etree.findall('*/category/[@term=\"monitoring.entity.update\"]').length); // 1\n```\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n",
306 "readmeFilename": "README.md",
307- "bugs": {
308- "url": "https://github.com/racker/node-elementtree/issues"
309- },
310- "_id": "elementtree@0.1.5",
311+ "_id": "elementtree@0.1.6",
312 "_from": "elementtree@*"
313 }
314
315=== modified file 'build/bin/node_modules/elementtree/tests/test-simple.js'
316--- build/bin/node_modules/elementtree/tests/test-simple.js 2014-02-05 23:42:31 +0000
317+++ build/bin/node_modules/elementtree/tests/test-simple.js 2014-02-24 22:54:06 +0000
318@@ -297,3 +297,43 @@
319 assert.equal(root.findtext('no-such-node/leaf'), null);
320 test.finish();
321 };
322+
323+exports['test_remove'] = function(test, assert) {
324+ var root = Element('root');
325+ var node1 = SubElement(root, 'node1');
326+ var node2 = SubElement(root, 'node2');
327+ var node3 = SubElement(root, 'node3');
328+
329+ assert.equal(root.len(), 3);
330+
331+ root.remove(node2);
332+
333+ assert.equal(root.len(), 2);
334+ assert.equal(root.getItem(0).tag, 'node1')
335+ assert.equal(root.getItem(1).tag, 'node3')
336+
337+ test.finish();
338+};
339+
340+exports['test_cdata_write'] = function(test, assert) {
341+ var root, etree, xml, values, value, i;
342+
343+ values = [
344+ 'if(0>1) then true;',
345+ '<test1>ponies hello</test1>',
346+ ''
347+ ];
348+
349+ for (i = 0; i < values.length; i++) {
350+ value = values[i];
351+
352+ root = Element('root');
353+ root.append(et.CData(value));
354+ etree = new ElementTree(root);
355+ xml = etree.write({'xml_declaration': false});
356+
357+ assert.equal(xml, sprintf('<root><![CDATA[%s]]></root>', value));
358+ }
359+
360+ test.finish();
361+};
362
363=== modified file 'build/bin/node_modules/optimist/node_modules/minimist/index.js'
364--- build/bin/node_modules/optimist/node_modules/minimist/index.js 2014-02-05 23:42:31 +0000
365+++ build/bin/node_modules/optimist/node_modules/minimist/index.js 2014-02-24 22:54:06 +0000
366@@ -49,21 +49,21 @@
367 for (var i = 0; i < args.length; i++) {
368 var arg = args[i];
369
370- if (arg.match(/^--.+=/)) {
371+ if (/^--.+=/.test(arg)) {
372 // Using [\s\S] instead of . because js doesn't support the
373 // 'dotall' regex modifier. See:
374 // http://stackoverflow.com/a/1068308/13216
375 var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
376 setArg(m[1], m[2]);
377 }
378- else if (arg.match(/^--no-.+/)) {
379+ else if (/^--no-.+/.test(arg)) {
380 var key = arg.match(/^--no-(.+)/)[1];
381 setArg(key, false);
382 }
383- else if (arg.match(/^--.+/)) {
384+ else if (/^--.+/.test(arg)) {
385 var key = arg.match(/^--(.+)/)[1];
386 var next = args[i + 1];
387- if (next !== undefined && !next.match(/^-/)
388+ if (next !== undefined && !/^-/.test(next)
389 && !flags.bools[key]
390 && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
391 setArg(key, next);
392@@ -74,21 +74,15 @@
393 i++;
394 }
395 else {
396- setArg(key, true);
397+ setArg(key, flags.strings[key] ? '' : true);
398 }
399 }
400- else if (arg.match(/^-[^-]+/)) {
401+ else if (/^-[^-]+/.test(arg)) {
402 var letters = arg.slice(1,-1).split('');
403
404 var broken = false;
405 for (var j = 0; j < letters.length; j++) {
406 var next = arg.slice(j+2);
407-
408- if (letters[j+1] && letters[j+1] === '=') {
409- setArg(letters[j], arg.slice(j+3));
410- broken = true;
411- break;
412- }
413
414 if (next === '-') {
415 setArg(letters[j], next)
416@@ -108,7 +102,7 @@
417 break;
418 }
419 else {
420- setArg(letters[j], true);
421+ setArg(letters[j], flags.strings[letters[j]] ? '' : true);
422 }
423 }
424
425@@ -125,7 +119,7 @@
426 i++;
427 }
428 else {
429- setArg(key, true);
430+ setArg(key, flags.strings[key] ? '' : true);
431 }
432 }
433 }
434
435=== modified file 'build/bin/node_modules/optimist/node_modules/minimist/package.json'
436--- build/bin/node_modules/optimist/node_modules/minimist/package.json 2014-02-05 23:42:31 +0000
437+++ build/bin/node_modules/optimist/node_modules/minimist/package.json 2014-02-24 22:54:06 +0000
438@@ -1,6 +1,6 @@
439 {
440 "name": "minimist",
441- "version": "0.0.5",
442+ "version": "0.0.8",
443 "description": "parse argument options",
444 "main": "index.js",
445 "devDependencies": {
446@@ -42,9 +42,6 @@
447 "license": "MIT",
448 "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n",
449 "readmeFilename": "readme.markdown",
450- "bugs": {
451- "url": "https://github.com/substack/minimist/issues"
452- },
453- "_id": "minimist@0.0.5",
454+ "_id": "minimist@0.0.8",
455 "_from": "minimist@~0.0.1"
456 }
457
458=== modified file 'build/bin/node_modules/optimist/node_modules/minimist/test/parse.js'
459--- build/bin/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-05 23:42:31 +0000
460+++ build/bin/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-24 22:54:06 +0000
461@@ -162,6 +162,27 @@
462 t.end();
463 });
464
465+test('empty strings', function(t) {
466+ var s = parse([ '-s' ], { string: 's' }).s;
467+ t.equal(s, '');
468+ t.equal(typeof s, 'string');
469+
470+ var str = parse([ '--str' ], { string: 'str' }).str;
471+ t.equal(str, '');
472+ t.equal(typeof str, 'string');
473+
474+ var letters = parse([ '-art' ], {
475+ string: [ 'a', 't' ]
476+ });
477+
478+ t.equal(letters.a, '');
479+ t.equal(letters.r, true);
480+ t.equal(letters.t, '');
481+
482+ t.end();
483+});
484+
485+
486 test('slashBreak', function (t) {
487 t.same(
488 parse([ '-I/foo/bar/baz' ]),
489
490=== modified file 'build/bin/node_modules/optimist/node_modules/minimist/test/short.js'
491--- build/bin/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-05 23:42:31 +0000
492+++ build/bin/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-24 22:54:06 +0000
493@@ -65,21 +65,3 @@
494 );
495 t.end();
496 });
497-
498-test('-a=b', function (t) {
499- t.plan(2);
500- t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' });
501- t.deepEqual(
502- parse([ '-abn=smth' ]),
503- { _: [], a: true, b: true, n: 'smth' }
504- );
505-});
506-
507-test('-a =b', function (t) {
508- t.plan(2);
509- t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' });
510- t.deepEqual(
511- parse([ '-abn', '=smth' ]),
512- { _: [], a: true, b: true, n: '=smth' }
513- );
514-});
515
516=== modified file 'build/bin/node_modules/optimist/node_modules/wordwrap/package.json'
517--- build/bin/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-05 23:42:31 +0000
518+++ build/bin/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-24 22:54:06 +0000
519@@ -36,9 +36,6 @@
520 },
521 "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n",
522 "readmeFilename": "README.markdown",
523- "bugs": {
524- "url": "https://github.com/substack/node-wordwrap/issues"
525- },
526 "_id": "wordwrap@0.0.2",
527 "_from": "wordwrap@~0.0.2"
528 }
529
530=== modified file 'build/bin/node_modules/optimist/package.json'
531--- build/bin/node_modules/optimist/package.json 2014-02-05 23:42:31 +0000
532+++ build/bin/node_modules/optimist/package.json 2014-02-24 22:54:06 +0000
533@@ -38,13 +38,6 @@
534 },
535 "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n",
536 "readmeFilename": "readme.markdown",
537- "bugs": {
538- "url": "https://github.com/substack/node-optimist/issues"
539- },
540 "_id": "optimist@0.6.0",
541- "dist": {
542- "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200"
543- },
544- "_from": "optimist@0.6.0",
545- "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz"
546+ "_from": "optimist@0.6.0"
547 }
548
549=== modified file 'build/bin/node_modules/shelljs/package.json'
550--- build/bin/node_modules/shelljs/package.json 2014-02-05 23:42:31 +0000
551+++ build/bin/node_modules/shelljs/package.json 2014-02-24 22:54:06 +0000
552@@ -36,13 +36,6 @@
553 },
554 "readme": "# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and development tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project's directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire('shelljs/global');\n\nif (!which('git')) {\n echo('Sorry, this script requires git');\n exit(1);\n}\n\n// Copy files to release dir\nmkdir('-p', 'out/Release');\ncp('-R', 'stuff/*', 'out/Release');\n\n// Replace macros in each .js file\ncd('lib');\nls('*.js').forEach(function(file) {\n sed('-i', 'BUILD_VERSION', 'v0.1.2', file);\n sed('-i', /.*REMOVE_THIS_LINE.*\\n/, '', file);\n sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat('macro.js'), file);\n});\ncd('..');\n\n// Run external tool synchronously\nif (exec('git commit -am \"Auto-commit\"').code !== 0) {\n echo('Error: Git commit failed');\n exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire 'shelljs/global'\n\nif not which 'git'\n echo 'Sorry, this script requires git'\n exit 1\n\n# Copy files to release dir\nmkdir '-p', 'out/Release'\ncp '-R', 'stuff/*', 'out/Release'\n\n# Replace macros in each .js file\ncd 'lib'\nfor file in ls '*.js'\n sed '-i', 'BUILD_VERSION', 'v0.1.2', file\n sed '-i', /.*REMOVE_THIS_LINE.*\\n/, '', file\n sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat 'macro.js', file\ncd '..'\n\n# Run external tool synchronously\nif (exec 'git commit -am \"Auto-commit\"').code != 0\n echo 'Error: Git commit failed'\n exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require('shelljs');\nshell.echo('hello world');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire 'shelljs/make'\n\ntarget.all = ->\n target.bundle()\n target.docs()\n\ntarget.bundle = ->\n cd __dirname\n mkdir 'build'\n cd 'lib'\n (cat '*.js').to '../build/output.js'\n\ntarget.docs = ->\n cd __dirname\n mkdir 'docs'\n cd 'lib'\n for file in ls '*.js'\n text = grep '//@', file # extract special comments\n text.replace '//@', '' # remove comment tags\n text.to 'docs/my_docs.md'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n<!-- \n\n DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED\n\n-->\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd('dir')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls('projs/*.js');\nls('-R', '/users/me', '/tmp');\nls('-R', ['/users/me', '/tmp']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind('src', 'lib');\nfind(['src', 'lib']); // same as above\nfind('.').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls('-R', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp('file1', 'dir1');\ncp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');\ncp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm('-rf', '/tmp/*');\nrm('some_file.txt', 'another_file.txt');\nrm(['some_file.txt', 'another_file.txt']); // same as above\n```\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest')\n### mv(source_array, dest')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv('-f', 'file', 'dir/');\nmv('file1', 'file2', 'dir/');\nmv(['file1', 'file2'], 'dir/'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');\nmkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `'-b', 'path'`: true if path is a block device\n+ `'-c', 'path'`: true if path is a character device\n+ `'-d', 'path'`: true if path is a directory\n+ `'-e', 'path'`: true if path exists\n+ `'-f', 'path'`: true if path is a regular file\n+ `'-L', 'path'`: true if path is a symboilc link\n+ `'-p', 'path'`: true if path is a pipe (FIFO)\n+ `'-S', 'path'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test('-d', path)) { /* do something with dir */ };\nif (!test('-f', path)) continue; // skip if it's a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat('file*.txt');\nvar str = cat('file1', 'file2');\nvar str = cat(['file1', 'file2']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### 'string'.to(file)\n\nExamples:\n\n```javascript\ncat('input.txt').to('output.txt');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### 'string'.toEnd(file)\n\nExamples:\n\n```javascript\ncat('input.txt').toEnd('output.txt');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replace_str, file)\nAvailable options:\n\n+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');\nsed(/.*DELETE_THIS_LINE.*\\n/, '', 'source.js');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep('-v', 'GLOBAL_VARIABLE', '*.js');\ngrep('GLOBAL_VARIABLE', '*.js');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which('node');\n```\n\nSearches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho('hello world');\nvar str = echo('hello world');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | '-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === '/usr'\npushd('/etc'); // Returns /etc /usr\npushd('+1'); // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] ['-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // '/usr'\npushd('/etc'); // '/etc /usr'\necho(process.cwd()); // '/etc'\npopd(); // '/usr'\necho(process.cwd()); // '/usr'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | '+N' | '-N'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env['VAR_NAME']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec('node --version', {silent:true}).output;\n\nvar child = exec('some_long_running_process', {async:true});\nchild.stdout.on('data', function(data) {\n /* ... do something with data ... */\n});\n\nexec('some_long_running_process', function(code, output) {\n console.log('Exit code:', code);\n console.log('Program output:', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program's\n`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it's best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, '/Users/brandon');\nchmod('755', '/Users/brandon'); // same as above\nchmod('u+x', '/Users/brandon');\n```\n\nAlters the permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is\n given to the umask.\n+ There is no \"quiet\" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // \"/tmp\" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp('this_file_does_not_exist', '/dev/null'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n",
555 "readmeFilename": "README.md",
556- "bugs": {
557- "url": "https://github.com/arturadib/shelljs/issues"
558- },
559 "_id": "shelljs@0.2.6",
560- "dist": {
561- "shasum": "8caf15811675f764ac51d334b50ada4ee375b0b9"
562- },
563- "_from": "shelljs@0.2.6",
564- "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz"
565+ "_from": "shelljs@0.2.6"
566 }
567
568=== modified file 'build/src/coreplugins.cpp'
569--- build/src/coreplugins.cpp 2014-02-14 15:17:53 +0000
570+++ build/src/coreplugins.cpp 2014-02-24 22:54:06 +0000
571@@ -19,22 +19,24 @@
572 #include <QtCore>
573 #include "cplugin.h"
574 #include "coreplugins.h"
575-#include "plugins/org.apache.cordova.camera/camera.h"
576+#include "plugins/org.apache.cordova.battery-status/battery.h"
577+
578 #include "plugins/org.apache.cordova.console/console.h"
579 #include "plugins/org.apache.cordova.device/device.h"
580-#include "plugins/org.apache.cordova.device-motion/accelerometer.h"
581+
582 #include "plugins/org.apache.cordova.device-orientation/compass.h"
583+#include "plugins/org.apache.cordova.dialogs/notification.h"
584 #include "plugins/org.apache.cordova.file/file.h"
585+
586+#include "plugins/org.apache.cordova.geolocation/geolocation.h"
587+#include "plugins/org.apache.cordova.globalization/globalization.h"
588+#include "plugins/org.apache.cordova.inappbrowser/inappbrowser.h"
589+#include "plugins/org.apache.cordova.media/media.h"
590 #include "plugins/org.apache.cordova.media-capture/capture.h"
591-#include "plugins/org.apache.cordova.media/media.h"
592-#include "plugins/org.apache.cordova.inappbrowser/inappbrowser.h"
593-#include "plugins/org.apache.cordova.splashscreen/splashscreen.h"
594 #include "plugins/org.apache.cordova.vibration/vibration.h"
595-#include "plugins/org.apache.cordova.geolocation/geolocation.h"
596-#include "plugins/org.apache.cordova.globalization/globalization.h"
597-#include "plugins/org.apache.cordova.battery-status/battery.h"
598+#include "plugins/org.apache.cordova.camera/camera.h"
599 #include "plugins/org.apache.cordova.file-transfer/file-transfer.h"
600-#include "plugins/org.apache.cordova.dialogs/notification.h"
601+#include "plugins/org.apache.cordova.device-motion/accelerometer.h"
602 INSERT_HEADER_HERE
603
604 #define INIT_PLUGIN(class) \
605@@ -45,7 +47,7 @@
606 Q_DECL_EXPORT QList<QSharedPointer<CPlugin>> cordovaGetPluginInstances(Cordova *cordova) {
607 QList<QSharedPointer<CPlugin>> res;
608
609- INIT_PLUGIN(Camera);INIT_PLUGIN(Console);INIT_PLUGIN(Device);INIT_PLUGIN(DeviceMotion);INIT_PLUGIN(DeviceOrientation);INIT_PLUGIN(File);INIT_PLUGIN(MediaCapture);INIT_PLUGIN(Media);INIT_PLUGIN(Inappbrowser);INIT_PLUGIN(Splashscreen);INIT_PLUGIN(Vibration);INIT_PLUGIN(Geolocation);INIT_PLUGIN(Globalization);INIT_PLUGIN(BatteryStatus);INIT_PLUGIN(FileTransfer);INIT_PLUGIN(Dialogs);INSERT_PLUGIN_HERE
610+ INIT_PLUGIN(BatteryStatus);INIT_PLUGIN(Console);INIT_PLUGIN(Device);INIT_PLUGIN(DeviceOrientation);INIT_PLUGIN(Dialogs);INIT_PLUGIN(File);INIT_PLUGIN(Geolocation);INIT_PLUGIN(Globalization);INIT_PLUGIN(Inappbrowser);INIT_PLUGIN(Media);INIT_PLUGIN(MediaCapture);INIT_PLUGIN(Vibration);INIT_PLUGIN(Camera);INIT_PLUGIN(FileTransfer);INIT_PLUGIN(DeviceMotion);INSERT_PLUGIN_HERE
611
612 return res;
613 }
614
615=== modified file 'build/src/plugins/org.apache.cordova.camera/camera.cpp'
616--- build/src/plugins/org.apache.cordova.camera/camera.cpp 2014-02-14 15:17:53 +0000
617+++ build/src/plugins/org.apache.cordova.camera/camera.cpp 2014-02-24 22:54:06 +0000
618@@ -68,10 +68,10 @@
619
620 const char *type;
621 if (convertToPNG) {
622- newImage.setFileTemplate("imgXXXXXX.png");
623+ newImage.setFileTemplate(generateLocation("png"));
624 type = "png";
625 } else {
626- newImage.setFileTemplate("imgXXXXXX.jpg");
627+ newImage.setFileTemplate(generateLocation("jpg"));
628 type = "jpg";
629 }
630
631@@ -98,7 +98,7 @@
632 cbParams = QString("\"%1\"").arg(content.data());
633 image.remove();
634 } else {
635- cbParams = CordovaInternal::format(QUrl::fromLocalFile(absolutePath).toString());
636+ cbParams = CordovaInternal::format(absolutePath);
637 }
638 }
639
640
641=== modified file 'build/src/plugins/org.apache.cordova.camera/camera.h'
642--- build/src/plugins/org.apache.cordova.camera/camera.h 2014-02-14 15:17:53 +0000
643+++ build/src/plugins/org.apache.cordova.camera/camera.h 2014-02-24 22:54:06 +0000
644@@ -54,6 +54,16 @@
645
646 void onImageSaved(QString path);
647
648+ QString generateLocation(const QString &extension) {
649+ int i = 1;
650+ for (;;++i) {
651+ QString path = QString("%1/.local/share/%2/persistent/%3.%4").arg(QDir::homePath())
652+ .arg(QCoreApplication::applicationName()).arg(i).arg(extension);
653+
654+ if (!QFileInfo(path).exists())
655+ return path;
656+ }
657+ }
658 private:
659 bool preprocessImage(QString &path);
660
661
662=== modified file 'build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp'
663--- build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp 2014-02-14 15:17:53 +0000
664+++ build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp 2014-02-24 22:54:06 +0000
665@@ -54,5 +54,5 @@
666 obj.insert("timestamp", QDateTime::currentDateTime().toMSecsSinceEpoch());
667
668 if (_scId)
669- this->cb(_scId, obj);
670+ this->callbackWithoutRemove(_scId, CordovaInternal::format(obj));
671 }
672
673=== modified file 'build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp'
674--- build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp 2014-02-14 15:17:53 +0000
675+++ build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp 2014-02-24 22:54:06 +0000
676@@ -20,6 +20,8 @@
677 #include "file-transfer.h"
678 #include <cassert>
679
680+#define FILE_PREFIX "file://localhost"
681+
682 void FileTransfer::download(int scId, int ecId, const QString& url, const QString &target, bool /*trustAllHost*/, int id, const QVariantMap &/*headers*/) {
683 QSharedPointer<FileTransferRequest> request(new FileTransferRequest(_manager, scId, ecId, id, this));
684
685@@ -97,9 +99,8 @@
686 if (!_scId || _reply->error() != QNetworkReply::NoError)
687 return;
688
689- QFile res(target);
690- qCritical() << target;
691- if (target[0] != '/' || !res.open(QIODevice::WriteOnly)) {
692+ QFile res(target.mid(QString(FILE_PREFIX).size()));
693+ if (target.indexOf(FILE_PREFIX) != 0 || !res.open(QIODevice::WriteOnly)) {
694 QVariantMap map;
695 map.insert("code", INVALID_URL_ERR);
696 map.insert("source", uri);
697@@ -110,7 +111,7 @@
698 }
699 res.write(_reply->readAll());
700
701- QFileInfo info(target);
702+ QFileInfo info(target.mid(QString(FILE_PREFIX).size()));
703 QVariantMap map;
704 map.insert("isFile", true);
705 map.insert("isDirectory", false);
706@@ -139,8 +140,8 @@
707 return;
708 }
709
710- QFile file(filePath);
711- if (filePath[0] != '/' || !file.open(QIODevice::ReadOnly)) {
712+ QFile file(filePath.mid(QString(FILE_PREFIX).size()));
713+ if (filePath.indexOf(FILE_PREFIX) != 0 || !file.open(QIODevice::ReadOnly)) {
714 QVariantMap map;
715 map.insert("code", FILE_NOT_FOUND_ERR);
716 map.insert("source", filePath);
717@@ -223,7 +224,6 @@
718
719 int status = 404;
720 QVariant statusCode = _reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
721-
722 if (statusCode.isValid()) {
723 status = statusCode.toInt();
724 }
725
726=== modified file 'build/www/cordova.js'
727--- build/www/cordova.js 2014-02-05 23:42:31 +0000
728+++ build/www/cordova.js 2014-02-24 22:54:06 +0000
729@@ -1,5 +1,5 @@
730 // Platform: ubuntu
731-// 3.4.0-rc1
732+// 3.4.0
733 /*
734 Licensed to the Apache Software Foundation (ASF) under one
735 or more contributor license agreements. See the NOTICE file
736@@ -19,7 +19,7 @@
737 under the License.
738 */
739 ;(function() {
740-var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1';
741+var CORDOVA_JS_BUILD_LABEL = '3.4.0';
742 // file: src/scripts/require.js
743
744 /*jshint -W079 */
745
746=== modified file 'config.xml'
747--- config.xml 2014-02-19 13:49:25 +0000
748+++ config.xml 2014-02-24 22:54:06 +0000
749@@ -1,9 +1,6 @@
750 <?xml version='1.0' encoding='utf-8'?>
751 <widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
752 <preference name="loglevel" value="DEBUG" />
753- <feature name="Camera">
754- <param policy_group="camera" policy_version="1" />
755- </feature>
756 <feature name="DeviceOrientation">
757 <param policy_group="sensors" policy_version="1" />
758 </feature>
759@@ -28,4 +25,7 @@
760 </author>
761 <content src="index.html" />
762 <access origin="*" />
763+ <feature name="Camera">
764+ <param policy_group="camera" policy_version="1" />
765+ </feature>
766 </widget>
767
768=== modified file 'cordova/node_modules/colors/package.json'
769--- cordova/node_modules/colors/package.json 2014-02-05 23:42:31 +0000
770+++ cordova/node_modules/colors/package.json 2014-02-24 22:54:06 +0000
771@@ -6,9 +6,7 @@
772 "name": "Marak Squires"
773 },
774 "homepage": "https://github.com/Marak/colors.js",
775- "bugs": {
776- "url": "https://github.com/Marak/colors.js/issues"
777- },
778+ "bugs": "https://github.com/Marak/colors.js/issues",
779 "keywords": [
780 "ansi",
781 "terminal",
782@@ -25,9 +23,5 @@
783 "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
784 "readmeFilename": "ReadMe.md",
785 "_id": "colors@0.6.2",
786- "dist": {
787- "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746"
788- },
789- "_from": "colors@0.6.2",
790- "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
791+ "_from": "colors@0.6.2"
792 }
793
794=== modified file 'cordova/node_modules/elementtree/CHANGES.md'
795--- cordova/node_modules/elementtree/CHANGES.md 2014-02-05 23:42:31 +0000
796+++ cordova/node_modules/elementtree/CHANGES.md 2014-02-24 22:54:06 +0000
797@@ -1,22 +1,27 @@
798-elementtree v0.1.5 (in development)
799+elementtree v0.1.6 (in development)
800+
801+* Add support for CData elements. (#14)
802+ [hermannpencole]
803+
804+elementtree v0.1.5 - 2012-11-14
805
806 * Fix a bug in the find() and findtext() method which could manifest itself
807 under some conditions.
808 [metagriffin]
809
810-elementtree v0.1.4
811+elementtree v0.1.4 - 2012-10-15
812
813 * Allow user to use namespaced attributes when using find* functions.
814 [Andrew Lunny]
815
816-elementtree v0.1.3
817+elementtree v0.1.3 - 2012-09-21
818
819 * Improve the output of text content in the tags (strip unnecessary line break
820 characters).
821
822 [Darryl Pogue]
823
824-elementtree v0.1.2
825+elementtree v0.1.2 - 2012-09-04
826
827 * Allow user to pass 'indent' option to ElementTree.write method. If this
828 option is specified (e.g. {'indent': 4}). XML will be pretty printed.
829
830=== modified file 'cordova/node_modules/elementtree/README.md'
831--- cordova/node_modules/elementtree/README.md 2014-02-05 23:42:31 +0000
832+++ cordova/node_modules/elementtree/README.md 2014-02-24 22:54:06 +0000
833@@ -15,6 +15,120 @@
834
835 Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).
836
837+Example 1 – Creating An XML Document
838+====================
839+
840+This example shows how to build a valid XML document that can be published to
841+Atom Hopper. Atom Hopper is used internally as a bridge from products all the
842+way to collecting revenue, called “Usage.” MaaS and other products send similar
843+events to it every time user performs an action on a resource
844+(e.g. creates,updates or deletes). Below is an example of leveraging the API
845+to create a new XML document.
846+
847+```javascript
848+var et = require('elementtree');
849+var XML = et.XML;
850+var ElementTree = et.ElementTree;
851+var element = et.Element;
852+var subElement = et.SubElement;
853+
854+var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,
855+checks, resourceId, category, startTime, resourceName, etree, xml;
856+
857+date = new Date();
858+
859+root = element('entry');
860+root.set('xmlns', 'http://www.w3.org/2005/Atom');
861+
862+tenantId = subElement(root, 'TenantId');
863+tenantId.text = '12345';
864+
865+serviceName = subElement(root, 'ServiceName');
866+serviceName.text = 'MaaS';
867+
868+resourceId = subElement(root, 'ResourceID');
869+resourceId.text = 'enAAAA';
870+
871+usageId = subElement(root, 'UsageID');
872+usageId.text = '550e8400-e29b-41d4-a716-446655440000';
873+
874+eventType = subElement(root, 'EventType');
875+eventType.text = 'create';
876+
877+category = subElement(root, 'category');
878+category.set('term', 'monitoring.entity.create');
879+
880+dataCenter = subElement(root, 'DataCenter');
881+dataCenter.text = 'global';
882+
883+region = subElement(root, 'Region');
884+region.text = 'global';
885+
886+startTime = subElement(root, 'StartTime');
887+startTime.text = date;
888+
889+resourceName = subElement(root, 'ResourceName');
890+resourceName.text = 'entity';
891+
892+etree = new ElementTree(root);
893+xml = etree.write({'xml_declaration': false});
894+console.log(xml);
895+```
896+
897+As you can see, both et.Element and et.SubElement are factory methods which
898+return a new instance of Element and SubElement class, respectively.
899+When you create a new element (tag) you can use set method to set an attribute.
900+To set the tag value, assign a value to the .text attribute.
901+
902+This example would output a document that looks like this:
903+
904+```xml
905+<entry xmlns="http://www.w3.org/2005/Atom">
906+ <TenantId>12345</TenantId>
907+ <ServiceName>MaaS</ServiceName>
908+ <ResourceID>enAAAA</ResourceID>
909+ <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>
910+ <EventType>create</EventType>
911+ <category term="monitoring.entity.create"/>
912+ <DataCenter>global</DataCenter>
913+ <Region>global</Region>
914+ <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>
915+ <ResourceName>entity</ResourceName>
916+</entry>
917+```
918+
919+Example 2 – Parsing An XML Document
920+====================
921+
922+This example shows how to parse an XML document and use simple XPath selectors.
923+For demonstration purposes, we will use the XML document located at
924+https://gist.github.com/2554343.
925+
926+Behind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,
927+but the library has a concept of “parsers,” which means it’s pretty simple to
928+add support for a different parser.
929+
930+```javascript
931+var fs = require('fs');
932+
933+var et = require('elementtree');
934+
935+var XML = et.XML;
936+var ElementTree = et.ElementTree;
937+var element = et.Element;
938+var subElement = et.SubElement;
939+
940+var data, etree;
941+
942+data = fs.readFileSync('document.xml').toString();
943+etree = et.parse(data);
944+
945+console.log(etree.findall('./entry/TenantId').length); // 2
946+console.log(etree.findtext('./entry/ServiceName')); // MaaS
947+console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create
948+console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1
949+```
950+
951 Build status
952 ====================
953
954
955=== modified file 'cordova/node_modules/elementtree/lib/elementtree.js'
956--- cordova/node_modules/elementtree/lib/elementtree.js 2014-02-05 23:42:31 +0000
957+++ cordova/node_modules/elementtree/lib/elementtree.js 2014-02-24 22:54:06 +0000
958@@ -103,7 +103,7 @@
959 this._children[index] = element;
960 };
961
962-Element.prototype.remove = function(index, element)
963+Element.prototype.remove = function(element)
964 {
965 this._children = this._children.filter(function(e) {
966 /* TODO: is this the right way to do this? */
967@@ -219,6 +219,14 @@
968 return element;
969 }
970
971+function CData(text) {
972+ var element = new Element(CData);
973+ if (text) {
974+ element.text = text;
975+ }
976+ return element;
977+}
978+
979 function ProcessingInstruction(target, text)
980 {
981 var element = new Element(ProcessingInstruction);
982@@ -441,7 +449,7 @@
983 else if (typeof(tag) === "string") {
984 add_qname(tag);
985 }
986- else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) {
987+ else if (tag !== null && tag !== Comment && tag !== CData && tag !== ProcessingInstruction) {
988 throw new Error('Invalid tag type for serialization: '+ tag);
989 }
990
991@@ -483,6 +491,10 @@
992 else if (tag === ProcessingInstruction) {
993 write(sprintf("<?%s?>", _escape_cdata(text, encoding)));
994 }
995+ else if (tag === CData) {
996+ text = text || '';
997+ write(sprintf("<![CDATA[%s]]>", text));
998+ }
999 else {
1000 tag = qnames[tag];
1001 if (tag === undefined) {
1002@@ -579,6 +591,7 @@
1003
1004 exports.PI = ProcessingInstruction;
1005 exports.Comment = Comment;
1006+exports.CData = CData;
1007 exports.ProcessingInstruction = ProcessingInstruction;
1008 exports.SubElement = SubElement;
1009 exports.QName = QName;
1010
1011=== modified file 'cordova/node_modules/elementtree/node_modules/sax/package.json'
1012--- cordova/node_modules/elementtree/node_modules/sax/package.json 2014-02-05 23:42:31 +0000
1013+++ cordova/node_modules/elementtree/node_modules/sax/package.json 2014-02-24 22:54:06 +0000
1014@@ -55,13 +55,6 @@
1015 ],
1016 "readme": "# sax js\n\nA sax-style parser for XML and HTML.\n\nDesigned with [node](http://nodejs.org/) in mind, but should work fine in\nthe browser or other CommonJS implementations.\n\n## What This Is\n\n* A very simple tool to parse through an XML string.\n* A stepping stone to a streaming HTML parser.\n* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML \n docs.\n\n## What This Is (probably) Not\n\n* An HTML Parser - That's a fine goal, but this isn't it. It's just\n XML.\n* A DOM Builder - You can use it to build an object model out of XML,\n but it doesn't do that out of the box.\n* XSLT - No DOM = no querying.\n* 100% Compliant with (some other SAX implementation) - Most SAX\n implementations are in Java and do a lot more than this does.\n* An XML Validator - It does a little validation when in strict mode, but\n not much.\n* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic \n masochism.\n* A DTD-aware Thing - Fetching DTDs is a much bigger job.\n\n## Regarding `<!DOCTYPE`s and `<!ENTITY`s\n\nThe parser will handle the basic XML entities in text nodes and attribute\nvalues: `&amp; &lt; &gt; &apos; &quot;`. It's possible to define additional\nentities in XML by putting them in the DTD. This parser doesn't do anything\nwith that. If you want to listen to the `ondoctype` event, and then fetch\nthe doctypes, and read the entities and add them to `parser.ENTITIES`, then\nbe my guest.\n\nUnknown entities will fail in strict mode, and in loose mode, will pass\nthrough unmolested.\n\n## Usage\n\n var sax = require(\"./lib/sax\"),\n strict = true, // set to false for html-mode\n parser = sax.parser(strict);\n\n parser.onerror = function (e) {\n // an error happened.\n };\n parser.ontext = function (t) {\n // got some text. t is the string of text.\n };\n parser.onopentag = function (node) {\n // opened a tag. node has \"name\" and \"attributes\"\n };\n parser.onattribute = function (attr) {\n // an attribute. attr has \"name\" and \"value\"\n };\n parser.onend = function () {\n // parser stream is done, and ready to have more stuff written to it.\n };\n\n parser.write('<xml>Hello, <who name=\"world\">world</who>!</xml>').close();\n\n // stream usage\n // takes the same options as the parser\n var saxStream = require(\"sax\").createStream(strict, options)\n saxStream.on(\"error\", function (e) {\n // unhandled errors will throw, since this is a proper node\n // event emitter.\n console.error(\"error!\", e)\n // clear the error\n this._parser.error = null\n this._parser.resume()\n })\n saxStream.on(\"opentag\", function (node) {\n // same object as above\n })\n // pipe is supported, and it's readable/writable\n // same chunks coming in also go out.\n fs.createReadStream(\"file.xml\")\n .pipe(saxStream)\n .pipe(fs.createReadStream(\"file-copy.xml\"))\n\n\n\n## Arguments\n\nPass the following arguments to the parser function. All are optional.\n\n`strict` - Boolean. Whether or not to be a jerk. Default: `false`.\n\n`opt` - Object bag of settings regarding string formatting. All default to `false`.\n\nSettings supported:\n\n* `trim` - Boolean. Whether or not to trim text and comment nodes.\n* `normalize` - Boolean. If true, then turn any whitespace into a single\n space.\n* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, \n rather than uppercasing them.\n* `xmlns` - Boolean. If true, then namespaces are supported.\n\n## Methods\n\n`write` - Write bytes onto the stream. You don't have to do this all at\nonce. You can keep writing as much as you want.\n\n`close` - Close the stream. Once closed, no more data may be written until\nit is done processing the buffer, which is signaled by the `end` event.\n\n`resume` - To gracefully handle errors, assign a listener to the `error`\nevent. Then, when the error is taken care of, you can call `resume` to\ncontinue parsing. Otherwise, the parser will not continue while in an error\nstate.\n\n## Members\n\nAt all times, the parser object will have the following members:\n\n`line`, `column`, `position` - Indications of the position in the XML\ndocument where the parser currently is looking.\n\n`startTagPosition` - Indicates the position where the current tag starts.\n\n`closed` - Boolean indicating whether or not the parser can be written to.\nIf it's `true`, then wait for the `ready` event to write again.\n\n`strict` - Boolean indicating whether or not the parser is a jerk.\n\n`opt` - Any options passed into the constructor.\n\n`tag` - The current tag being dealt with.\n\nAnd a bunch of other stuff that you probably shouldn't touch.\n\n## Events\n\nAll events emit with a single argument. To listen to an event, assign a\nfunction to `on<eventname>`. Functions get executed in the this-context of\nthe parser object. The list of supported events are also in the exported\n`EVENTS` array.\n\nWhen using the stream interface, assign handlers using the EventEmitter\n`on` function in the normal fashion.\n\n`error` - Indication that something bad happened. The error will be hanging\nout on `parser.error`, and must be deleted before parsing can continue. By\nlistening to this event, you can keep an eye on that kind of stuff. Note:\nthis happens *much* more in strict mode. Argument: instance of `Error`.\n\n`text` - Text node. Argument: string of text.\n\n`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.\n\n`processinginstruction` - Stuff like `<?xml foo=\"blerg\" ?>`. Argument:\nobject with `name` and `body` members. Attributes are not parsed, as\nprocessing instructions have implementation dependent semantics.\n\n`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`\nwould trigger this kind of event. This is a weird thing to support, so it\nmight go away at some point. SAX isn't intended to be used to parse SGML,\nafter all.\n\n`opentag` - An opening tag. Argument: object with `name` and `attributes`.\nIn non-strict mode, tag names are uppercased, unless the `lowercasetags`\noption is set. If the `xmlns` option is set, then it will contain\nnamespace binding information on the `ns` member, and will have a\n`local`, `prefix`, and `uri` member.\n\n`closetag` - A closing tag. In loose mode, tags are auto-closed if their\nparent closes. In strict mode, well-formedness is enforced. Note that\nself-closing tags will have `closeTag` emitted immediately after `openTag`.\nArgument: tag name.\n\n`attribute` - An attribute node. Argument: object with `name` and `value`,\nand also namespace information if the `xmlns` option flag is set.\n\n`comment` - A comment node. Argument: the string of the comment.\n\n`opencdata` - The opening tag of a `<![CDATA[` block.\n\n`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get\nquite large, this event may fire multiple times for a single block, if it\nis broken up into multiple `write()`s. Argument: the string of random\ncharacter data.\n\n`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.\n\n`opennamespace` - If the `xmlns` option is set, then this event will\nsignal the start of a new namespace binding.\n\n`closenamespace` - If the `xmlns` option is set, then this event will\nsignal the end of a namespace binding.\n\n`end` - Indication that the closed stream has ended.\n\n`ready` - Indication that the stream has reset, and is ready to be written\nto.\n\n`noscript` - In non-strict mode, `<script>` tags trigger a `\"script\"`\nevent, and their contents are not checked for special xml characters.\nIf you pass `noscript: true`, then this behavior is suppressed.\n\n## Reporting Problems\n\nIt's best to write a failing test if you find an issue. I will always\naccept pull requests with failing tests if they demonstrate intended\nbehavior, but it is very hard to figure out what issue you're describing\nwithout a test. Writing a test is also the best way for you yourself\nto figure out if you really understand the issue you think you have with\nsax-js.\n",
1017 "readmeFilename": "README.md",
1018- "bugs": {
1019- "url": "https://github.com/isaacs/sax-js/issues"
1020- },
1021 "_id": "sax@0.3.5",
1022- "dist": {
1023- "shasum": "97a786cbbe404d7e24961b201f37be81b9249908"
1024- },
1025- "_from": "sax@0.3.5",
1026- "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz"
1027+ "_from": "sax@0.3.5"
1028 }
1029
1030=== modified file 'cordova/node_modules/elementtree/package.json'
1031--- cordova/node_modules/elementtree/package.json 2014-02-05 23:42:31 +0000
1032+++ cordova/node_modules/elementtree/package.json 2014-02-24 22:54:06 +0000
1033@@ -14,7 +14,7 @@
1034 ],
1035 "name": "elementtree",
1036 "description": "XML Serialization and Parsing module based on Python's ElementTree.",
1037- "version": "0.1.5",
1038+ "version": "0.1.6",
1039 "keywords": [
1040 "xml",
1041 "sax",
1042@@ -41,7 +41,7 @@
1043 "sax": "0.3.5"
1044 },
1045 "devDependencies": {
1046- "whiskey": "0.6.8"
1047+ "whiskey": "0.8.x"
1048 },
1049 "licenses": [
1050 {
1051@@ -49,11 +49,8 @@
1052 "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
1053 }
1054 ],
1055- "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n",
1056+ "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nExample 1 – Creating An XML Document\n====================\n\nThis example shows how to build a valid XML document that can be published to\nAtom Hopper. Atom Hopper is used internally as a bridge from products all the\nway to collecting revenue, called “Usage.” MaaS and other products send similar\nevents to it every time user performs an action on a resource\n(e.g. creates,updates or deletes). Below is an example of leveraging the API\nto create a new XML document.\n\n```javascript\nvar et = require('elementtree');\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,\nchecks, resourceId, category, startTime, resourceName, etree, xml;\n\ndate = new Date();\n\nroot = element('entry');\nroot.set('xmlns', 'http://www.w3.org/2005/Atom');\n\ntenantId = subElement(root, 'TenantId');\ntenantId.text = '12345';\n\nserviceName = subElement(root, 'ServiceName');\nserviceName.text = 'MaaS';\n\nresourceId = subElement(root, 'ResourceID');\nresourceId.text = 'enAAAA';\n\nusageId = subElement(root, 'UsageID');\nusageId.text = '550e8400-e29b-41d4-a716-446655440000';\n\neventType = subElement(root, 'EventType');\neventType.text = 'create';\n\ncategory = subElement(root, 'category');\ncategory.set('term', 'monitoring.entity.create');\n\ndataCenter = subElement(root, 'DataCenter');\ndataCenter.text = 'global';\n\nregion = subElement(root, 'Region');\nregion.text = 'global';\n\nstartTime = subElement(root, 'StartTime');\nstartTime.text = date;\n\nresourceName = subElement(root, 'ResourceName');\nresourceName.text = 'entity';\n\netree = new ElementTree(root);\nxml = etree.write({'xml_declaration': false});\nconsole.log(xml);\n```\n\nAs you can see, both et.Element and et.SubElement are factory methods which\nreturn a new instance of Element and SubElement class, respectively.\nWhen you create a new element (tag) you can use set method to set an attribute.\nTo set the tag value, assign a value to the .text attribute.\n\nThis example would output a document that looks like this:\n\n```xml\n<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <TenantId>12345</TenantId>\n <ServiceName>MaaS</ServiceName>\n <ResourceID>enAAAA</ResourceID>\n <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>\n <EventType>create</EventType>\n <category term=\"monitoring.entity.create\"/>\n <DataCenter>global</DataCenter>\n <Region>global</Region>\n <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>\n <ResourceName>entity</ResourceName>\n</entry>\n```\n\nExample 2 – Parsing An XML Document\n====================\n\nThis example shows how to parse an XML document and use simple XPath selectors.\nFor demonstration purposes, we will use the XML document located at\nhttps://gist.github.com/2554343.\n\nBehind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,\nbut the library has a concept of “parsers,” which means it’s pretty simple to\nadd support for a different parser.\n\n```javascript\nvar fs = require('fs');\n\nvar et = require('elementtree');\n\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar data, etree;\n\ndata = fs.readFileSync('document.xml').toString();\netree = et.parse(data);\n\nconsole.log(etree.findall('./entry/TenantId').length); // 2\nconsole.log(etree.findtext('./entry/ServiceName')); // MaaS\nconsole.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create\nconsole.log(etree.findall('*/category/[@term=\"monitoring.entity.update\"]').length); // 1\n```\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n",
1057 "readmeFilename": "README.md",
1058- "bugs": {
1059- "url": "https://github.com/racker/node-elementtree/issues"
1060- },
1061- "_id": "elementtree@0.1.5",
1062+ "_id": "elementtree@0.1.6",
1063 "_from": "elementtree@*"
1064 }
1065
1066=== modified file 'cordova/node_modules/elementtree/tests/test-simple.js'
1067--- cordova/node_modules/elementtree/tests/test-simple.js 2014-02-05 23:42:31 +0000
1068+++ cordova/node_modules/elementtree/tests/test-simple.js 2014-02-24 22:54:06 +0000
1069@@ -297,3 +297,43 @@
1070 assert.equal(root.findtext('no-such-node/leaf'), null);
1071 test.finish();
1072 };
1073+
1074+exports['test_remove'] = function(test, assert) {
1075+ var root = Element('root');
1076+ var node1 = SubElement(root, 'node1');
1077+ var node2 = SubElement(root, 'node2');
1078+ var node3 = SubElement(root, 'node3');
1079+
1080+ assert.equal(root.len(), 3);
1081+
1082+ root.remove(node2);
1083+
1084+ assert.equal(root.len(), 2);
1085+ assert.equal(root.getItem(0).tag, 'node1')
1086+ assert.equal(root.getItem(1).tag, 'node3')
1087+
1088+ test.finish();
1089+};
1090+
1091+exports['test_cdata_write'] = function(test, assert) {
1092+ var root, etree, xml, values, value, i;
1093+
1094+ values = [
1095+ 'if(0>1) then true;',
1096+ '<test1>ponies hello</test1>',
1097+ ''
1098+ ];
1099+
1100+ for (i = 0; i < values.length; i++) {
1101+ value = values[i];
1102+
1103+ root = Element('root');
1104+ root.append(et.CData(value));
1105+ etree = new ElementTree(root);
1106+ xml = etree.write({'xml_declaration': false});
1107+
1108+ assert.equal(xml, sprintf('<root><![CDATA[%s]]></root>', value));
1109+ }
1110+
1111+ test.finish();
1112+};
1113
1114=== modified file 'cordova/node_modules/optimist/node_modules/minimist/index.js'
1115--- cordova/node_modules/optimist/node_modules/minimist/index.js 2014-02-05 23:42:31 +0000
1116+++ cordova/node_modules/optimist/node_modules/minimist/index.js 2014-02-24 22:54:06 +0000
1117@@ -49,21 +49,21 @@
1118 for (var i = 0; i < args.length; i++) {
1119 var arg = args[i];
1120
1121- if (arg.match(/^--.+=/)) {
1122+ if (/^--.+=/.test(arg)) {
1123 // Using [\s\S] instead of . because js doesn't support the
1124 // 'dotall' regex modifier. See:
1125 // http://stackoverflow.com/a/1068308/13216
1126 var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
1127 setArg(m[1], m[2]);
1128 }
1129- else if (arg.match(/^--no-.+/)) {
1130+ else if (/^--no-.+/.test(arg)) {
1131 var key = arg.match(/^--no-(.+)/)[1];
1132 setArg(key, false);
1133 }
1134- else if (arg.match(/^--.+/)) {
1135+ else if (/^--.+/.test(arg)) {
1136 var key = arg.match(/^--(.+)/)[1];
1137 var next = args[i + 1];
1138- if (next !== undefined && !next.match(/^-/)
1139+ if (next !== undefined && !/^-/.test(next)
1140 && !flags.bools[key]
1141 && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
1142 setArg(key, next);
1143@@ -74,21 +74,15 @@
1144 i++;
1145 }
1146 else {
1147- setArg(key, true);
1148+ setArg(key, flags.strings[key] ? '' : true);
1149 }
1150 }
1151- else if (arg.match(/^-[^-]+/)) {
1152+ else if (/^-[^-]+/.test(arg)) {
1153 var letters = arg.slice(1,-1).split('');
1154
1155 var broken = false;
1156 for (var j = 0; j < letters.length; j++) {
1157 var next = arg.slice(j+2);
1158-
1159- if (letters[j+1] && letters[j+1] === '=') {
1160- setArg(letters[j], arg.slice(j+3));
1161- broken = true;
1162- break;
1163- }
1164
1165 if (next === '-') {
1166 setArg(letters[j], next)
1167@@ -108,7 +102,7 @@
1168 break;
1169 }
1170 else {
1171- setArg(letters[j], true);
1172+ setArg(letters[j], flags.strings[letters[j]] ? '' : true);
1173 }
1174 }
1175
1176@@ -125,7 +119,7 @@
1177 i++;
1178 }
1179 else {
1180- setArg(key, true);
1181+ setArg(key, flags.strings[key] ? '' : true);
1182 }
1183 }
1184 }
1185
1186=== modified file 'cordova/node_modules/optimist/node_modules/minimist/package.json'
1187--- cordova/node_modules/optimist/node_modules/minimist/package.json 2014-02-05 23:42:31 +0000
1188+++ cordova/node_modules/optimist/node_modules/minimist/package.json 2014-02-24 22:54:06 +0000
1189@@ -1,6 +1,6 @@
1190 {
1191 "name": "minimist",
1192- "version": "0.0.5",
1193+ "version": "0.0.8",
1194 "description": "parse argument options",
1195 "main": "index.js",
1196 "devDependencies": {
1197@@ -42,9 +42,6 @@
1198 "license": "MIT",
1199 "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n",
1200 "readmeFilename": "readme.markdown",
1201- "bugs": {
1202- "url": "https://github.com/substack/minimist/issues"
1203- },
1204- "_id": "minimist@0.0.5",
1205+ "_id": "minimist@0.0.8",
1206 "_from": "minimist@~0.0.1"
1207 }
1208
1209=== modified file 'cordova/node_modules/optimist/node_modules/minimist/test/parse.js'
1210--- cordova/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-05 23:42:31 +0000
1211+++ cordova/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-24 22:54:06 +0000
1212@@ -162,6 +162,27 @@
1213 t.end();
1214 });
1215
1216+test('empty strings', function(t) {
1217+ var s = parse([ '-s' ], { string: 's' }).s;
1218+ t.equal(s, '');
1219+ t.equal(typeof s, 'string');
1220+
1221+ var str = parse([ '--str' ], { string: 'str' }).str;
1222+ t.equal(str, '');
1223+ t.equal(typeof str, 'string');
1224+
1225+ var letters = parse([ '-art' ], {
1226+ string: [ 'a', 't' ]
1227+ });
1228+
1229+ t.equal(letters.a, '');
1230+ t.equal(letters.r, true);
1231+ t.equal(letters.t, '');
1232+
1233+ t.end();
1234+});
1235+
1236+
1237 test('slashBreak', function (t) {
1238 t.same(
1239 parse([ '-I/foo/bar/baz' ]),
1240
1241=== modified file 'cordova/node_modules/optimist/node_modules/minimist/test/short.js'
1242--- cordova/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-05 23:42:31 +0000
1243+++ cordova/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-24 22:54:06 +0000
1244@@ -65,21 +65,3 @@
1245 );
1246 t.end();
1247 });
1248-
1249-test('-a=b', function (t) {
1250- t.plan(2);
1251- t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' });
1252- t.deepEqual(
1253- parse([ '-abn=smth' ]),
1254- { _: [], a: true, b: true, n: 'smth' }
1255- );
1256-});
1257-
1258-test('-a =b', function (t) {
1259- t.plan(2);
1260- t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' });
1261- t.deepEqual(
1262- parse([ '-abn', '=smth' ]),
1263- { _: [], a: true, b: true, n: '=smth' }
1264- );
1265-});
1266
1267=== modified file 'cordova/node_modules/optimist/node_modules/wordwrap/package.json'
1268--- cordova/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-05 23:42:31 +0000
1269+++ cordova/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-24 22:54:06 +0000
1270@@ -36,9 +36,6 @@
1271 },
1272 "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n",
1273 "readmeFilename": "README.markdown",
1274- "bugs": {
1275- "url": "https://github.com/substack/node-wordwrap/issues"
1276- },
1277 "_id": "wordwrap@0.0.2",
1278 "_from": "wordwrap@~0.0.2"
1279 }
1280
1281=== modified file 'cordova/node_modules/optimist/package.json'
1282--- cordova/node_modules/optimist/package.json 2014-02-05 23:42:31 +0000
1283+++ cordova/node_modules/optimist/package.json 2014-02-24 22:54:06 +0000
1284@@ -38,13 +38,6 @@
1285 },
1286 "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n",
1287 "readmeFilename": "readme.markdown",
1288- "bugs": {
1289- "url": "https://github.com/substack/node-optimist/issues"
1290- },
1291 "_id": "optimist@0.6.0",
1292- "dist": {
1293- "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200"
1294- },
1295- "_from": "optimist@0.6.0",
1296- "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz"
1297+ "_from": "optimist@0.6.0"
1298 }
1299
1300=== modified file 'cordova/node_modules/shelljs/package.json'
1301--- cordova/node_modules/shelljs/package.json 2014-02-05 23:42:31 +0000
1302+++ cordova/node_modules/shelljs/package.json 2014-02-24 22:54:06 +0000
1303@@ -36,13 +36,6 @@
1304 },
1305 "readme": "# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and development tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project's directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire('shelljs/global');\n\nif (!which('git')) {\n echo('Sorry, this script requires git');\n exit(1);\n}\n\n// Copy files to release dir\nmkdir('-p', 'out/Release');\ncp('-R', 'stuff/*', 'out/Release');\n\n// Replace macros in each .js file\ncd('lib');\nls('*.js').forEach(function(file) {\n sed('-i', 'BUILD_VERSION', 'v0.1.2', file);\n sed('-i', /.*REMOVE_THIS_LINE.*\\n/, '', file);\n sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat('macro.js'), file);\n});\ncd('..');\n\n// Run external tool synchronously\nif (exec('git commit -am \"Auto-commit\"').code !== 0) {\n echo('Error: Git commit failed');\n exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire 'shelljs/global'\n\nif not which 'git'\n echo 'Sorry, this script requires git'\n exit 1\n\n# Copy files to release dir\nmkdir '-p', 'out/Release'\ncp '-R', 'stuff/*', 'out/Release'\n\n# Replace macros in each .js file\ncd 'lib'\nfor file in ls '*.js'\n sed '-i', 'BUILD_VERSION', 'v0.1.2', file\n sed '-i', /.*REMOVE_THIS_LINE.*\\n/, '', file\n sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat 'macro.js', file\ncd '..'\n\n# Run external tool synchronously\nif (exec 'git commit -am \"Auto-commit\"').code != 0\n echo 'Error: Git commit failed'\n exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require('shelljs');\nshell.echo('hello world');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire 'shelljs/make'\n\ntarget.all = ->\n target.bundle()\n target.docs()\n\ntarget.bundle = ->\n cd __dirname\n mkdir 'build'\n cd 'lib'\n (cat '*.js').to '../build/output.js'\n\ntarget.docs = ->\n cd __dirname\n mkdir 'docs'\n cd 'lib'\n for file in ls '*.js'\n text = grep '//@', file # extract special comments\n text.replace '//@', '' # remove comment tags\n text.to 'docs/my_docs.md'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n<!-- \n\n DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED\n\n-->\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd('dir')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls('projs/*.js');\nls('-R', '/users/me', '/tmp');\nls('-R', ['/users/me', '/tmp']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind('src', 'lib');\nfind(['src', 'lib']); // same as above\nfind('.').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls('-R', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp('file1', 'dir1');\ncp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');\ncp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm('-rf', '/tmp/*');\nrm('some_file.txt', 'another_file.txt');\nrm(['some_file.txt', 'another_file.txt']); // same as above\n```\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest')\n### mv(source_array, dest')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv('-f', 'file', 'dir/');\nmv('file1', 'file2', 'dir/');\nmv(['file1', 'file2'], 'dir/'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');\nmkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `'-b', 'path'`: true if path is a block device\n+ `'-c', 'path'`: true if path is a character device\n+ `'-d', 'path'`: true if path is a directory\n+ `'-e', 'path'`: true if path exists\n+ `'-f', 'path'`: true if path is a regular file\n+ `'-L', 'path'`: true if path is a symboilc link\n+ `'-p', 'path'`: true if path is a pipe (FIFO)\n+ `'-S', 'path'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test('-d', path)) { /* do something with dir */ };\nif (!test('-f', path)) continue; // skip if it's a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat('file*.txt');\nvar str = cat('file1', 'file2');\nvar str = cat(['file1', 'file2']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### 'string'.to(file)\n\nExamples:\n\n```javascript\ncat('input.txt').to('output.txt');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### 'string'.toEnd(file)\n\nExamples:\n\n```javascript\ncat('input.txt').toEnd('output.txt');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replace_str, file)\nAvailable options:\n\n+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');\nsed(/.*DELETE_THIS_LINE.*\\n/, '', 'source.js');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep('-v', 'GLOBAL_VARIABLE', '*.js');\ngrep('GLOBAL_VARIABLE', '*.js');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which('node');\n```\n\nSearches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho('hello world');\nvar str = echo('hello world');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | '-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === '/usr'\npushd('/etc'); // Returns /etc /usr\npushd('+1'); // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] ['-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // '/usr'\npushd('/etc'); // '/etc /usr'\necho(process.cwd()); // '/etc'\npopd(); // '/usr'\necho(process.cwd()); // '/usr'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | '+N' | '-N'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env['VAR_NAME']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec('node --version', {silent:true}).output;\n\nvar child = exec('some_long_running_process', {async:true});\nchild.stdout.on('data', function(data) {\n /* ... do something with data ... */\n});\n\nexec('some_long_running_process', function(code, output) {\n console.log('Exit code:', code);\n console.log('Program output:', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program's\n`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it's best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, '/Users/brandon');\nchmod('755', '/Users/brandon'); // same as above\nchmod('u+x', '/Users/brandon');\n```\n\nAlters the permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is\n given to the umask.\n+ There is no \"quiet\" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // \"/tmp\" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp('this_file_does_not_exist', '/dev/null'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n",
1306 "readmeFilename": "README.md",
1307- "bugs": {
1308- "url": "https://github.com/arturadib/shelljs/issues"
1309- },
1310 "_id": "shelljs@0.2.6",
1311- "dist": {
1312- "shasum": "8caf15811675f764ac51d334b50ada4ee375b0b9"
1313- },
1314- "_from": "shelljs@0.2.6",
1315- "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz"
1316+ "_from": "shelljs@0.2.6"
1317 }
1318
1319=== modified file 'debian/changelog'
1320--- debian/changelog 2014-02-20 10:49:33 +0000
1321+++ debian/changelog 2014-02-24 22:54:06 +0000
1322@@ -1,3 +1,15 @@
1323+cordova-ubuntu-3.4 (3.4.0~ubuntu1) trusty; urgency=low
1324+
1325+ * Fixes for camera, file-transfer and device-motion plugins
1326+
1327+ -- David Barth <david.barth@canonical.com> Mon, 24 Feb 2014 23:46:55 +0100
1328+
1329+cordova-ubuntu-3.4 (3.4.0) trusty; urgency=low
1330+
1331+ * Releasing 3.4.0
1332+
1333+ -- David Barth <david.barth@canonical.com> Mon, 24 Feb 2014 23:30:45 +0100
1334+
1335 cordova-ubuntu-3.4 (3.4~pre3.r19) trusty; urgency=low
1336
1337 * Releasing 3.4~pre3.r19
1338
1339=== modified file 'platform_www/cordova.js'
1340--- platform_www/cordova.js 2014-02-05 23:42:31 +0000
1341+++ platform_www/cordova.js 2014-02-24 22:54:06 +0000
1342@@ -1,5 +1,5 @@
1343 // Platform: ubuntu
1344-// 3.4.0-rc1
1345+// 3.4.0
1346 /*
1347 Licensed to the Apache Software Foundation (ASF) under one
1348 or more contributor license agreements. See the NOTICE file
1349@@ -19,7 +19,7 @@
1350 under the License.
1351 */
1352 ;(function() {
1353-var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1';
1354+var CORDOVA_JS_BUILD_LABEL = '3.4.0';
1355 // file: src/scripts/require.js
1356
1357 /*jshint -W079 */
1358
1359=== modified file 'qml/CaptureWidget.qml'
1360--- qml/CaptureWidget.qml 2014-02-19 13:49:25 +0000
1361+++ qml/CaptureWidget.qml 2014-02-24 22:54:06 +0000
1362@@ -100,7 +100,7 @@
1363 MouseArea {
1364 anchors.fill: parent
1365 onClicked: {
1366- camera.imageCapture.capture();
1367+ camera.imageCapture.captureToLocation(ui.parent.plugin('Camera').generateLocation("jpg"));
1368 }
1369 }
1370 }

Subscribers

People subscribed via source and target branches