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

[1/3] ios commit: CB-11117: Optimize prepare for ios platform, clean prepared files

Repository: cordova-ios
Updated Branches:
  refs/heads/master 8ad8acb30 -> 3d3a746cf


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/q/package.json
----------------------------------------------------------------------
diff --git a/node_modules/q/package.json b/node_modules/q/package.json
index 0af055d..e3fff13 100644
--- a/node_modules/q/package.json
+++ b/node_modules/q/package.json
@@ -1,66 +1,66 @@
 {
-  "name": "q",
-  "version": "1.4.1",
-  "description": "A library for promises (CommonJS/Promises/A,B,D)",
-  "homepage": "https://github.com/kriskowal/q",
+  "_args": [
+    [
+      "q@^1.4.1",
+      "D:\\Cordova\\cordova-ios"
+    ]
+  ],
+  "_from": "q@>=1.4.1 <2.0.0",
+  "_id": "q@1.4.1",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/q",
+  "_nodeVersion": "1.8.1",
+  "_npmUser": {
+    "email": "kris.kowal@cixar.com",
+    "name": "kriskowal"
+  },
+  "_npmVersion": "2.8.3",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "q",
+    "raw": "q@^1.4.1",
+    "rawSpec": "^1.4.1",
+    "scope": null,
+    "spec": ">=1.4.1 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/",
+    "/cordova-common"
+  ],
+  "_resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+  "_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
+  "_shrinkwrap": null,
+  "_spec": "q@^1.4.1",
+  "_where": "D:\\Cordova\\cordova-ios",
   "author": {
-    "name": "Kris Kowal",
     "email": "kris@cixar.com",
+    "name": "Kris Kowal",
     "url": "https://github.com/kriskowal"
   },
-  "keywords": [
-    "q",
-    "promise",
-    "promises",
-    "promises-a",
-    "promises-aplus",
-    "deferred",
-    "future",
-    "async",
-    "flow control",
-    "fluent",
-    "browser",
-    "node"
-  ],
+  "bugs": {
+    "url": "http://github.com/kriskowal/q/issues"
+  },
   "contributors": [
     {
-      "name": "Kris Kowal",
       "email": "kris@cixar.com",
+      "name": "Kris Kowal",
       "url": "https://github.com/kriskowal"
     },
     {
-      "name": "Irakli Gozalishvili",
       "email": "rfobic@gmail.com",
+      "name": "Irakli Gozalishvili",
       "url": "http://jeditoolkit.com"
     },
     {
-      "name": "Domenic Denicola",
       "email": "domenic@domenicdenicola.com",
+      "name": "Domenic Denicola",
       "url": "http://domenicdenicola.com"
     }
   ],
-  "bugs": {
-    "url": "http://github.com/kriskowal/q/issues"
-  },
-  "license": {
-    "type": "MIT",
-    "url": "http://github.com/kriskowal/q/raw/master/LICENSE"
-  },
-  "main": "q.js",
-  "files": [
-    "LICENSE",
-    "q.js",
-    "queue.js"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/kriskowal/q.git"
-  },
-  "engines": {
-    "node": ">=0.6.0",
-    "teleport": ">=0.2.0"
-  },
   "dependencies": {},
+  "description": "A library for promises (CommonJS/Promises/A,B,D)",
   "devDependencies": {
     "cover": "*",
     "grunt": "~0.4.1",
@@ -72,15 +72,55 @@
     "opener": "*",
     "promises-aplus-tests": "1.x"
   },
-  "scripts": {
-    "test": "jasmine-node spec && promises-aplus-tests spec/aplus-adapter",
-    "test-browser": "opener spec/q-spec.html",
-    "benchmark": "matcha",
-    "lint": "jshint q.js",
-    "cover": "cover run jasmine-node spec && cover report html && opener cover_html/index.html",
-    "minify": "grunt",
-    "prepublish": "grunt"
+  "directories": {
+    "test": "./spec"
   },
+  "dist": {
+    "shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
+    "tarball": "https://registry.npmjs.org/q/-/q-1.4.1.tgz"
+  },
+  "engines": {
+    "node": ">=0.6.0",
+    "teleport": ">=0.2.0"
+  },
+  "files": [
+    "LICENSE",
+    "q.js",
+    "queue.js"
+  ],
+  "gitHead": "d373079d3620152e3d60e82f27265a09ee0e81bd",
+  "homepage": "https://github.com/kriskowal/q",
+  "keywords": [
+    "q",
+    "promise",
+    "promises",
+    "promises-a",
+    "promises-aplus",
+    "deferred",
+    "future",
+    "async",
+    "flow control",
+    "fluent",
+    "browser",
+    "node"
+  ],
+  "license": {
+    "type": "MIT",
+    "url": "http://github.com/kriskowal/q/raw/master/LICENSE"
+  },
+  "main": "q.js",
+  "maintainers": [
+    {
+      "email": "kris.kowal@cixar.com",
+      "name": "kriskowal"
+    },
+    {
+      "email": "domenic@domenicdenicola.com",
+      "name": "domenic"
+    }
+  ],
+  "name": "q",
+  "optionalDependencies": {},
   "overlay": {
     "teleport": {
       "dependencies": {
@@ -88,13 +128,19 @@
       }
     }
   },
-  "directories": {
-    "test": "./spec"
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/kriskowal/q.git"
   },
-  "readme": "[![Build Status](https://secure.travis-ci.org/kriskowal/q.png?branch=master)](http://travis-ci.org/kriskowal/q)\n\n<a href=\"http://promises-aplus.github.com/promises-spec\">\n    <img src=\"http://kriskowal.github.io/q/q.png\"\n         align=\"right\" alt=\"Q logo\" />\n</a>\n\n*This is Q version 1, from the `v1` branch in Git. This documentation applies to\nthe latest of both the version 1 and version 0.9 release trains. These releases\nare stable. There will be no further releases of 0.9 after 0.9.7 which is nearly\nequivalent to version 1.0.0. All further releases of `q@~1.0` will be backward\ncompatible. The version 2 release train introduces significant and\nbackward-incompatible changes and is experimental at this time.*\n\nIf a function cannot return a value or throw an exception without\nblocking, it can return a promise instead.  A promise is an object\nthat represents the return value or the thrown exception that the\nfunction may eventually provide.  A prom
 ise can also be used as a\nproxy for a [remote object][Q-Connection] to overcome latency.\n\n[Q-Connection]: https://github.com/kriskowal/q-connection\n\nOn the first pass, promises can mitigate the \u201c[Pyramid of\nDoom][POD]\u201d: the situation where code marches to the right faster\nthan it marches forward.\n\n[POD]: http://calculist.org/blog/2011/12/14/why-coroutines-wont-work-on-the-web/\n\n```javascript\nstep1(function (value1) {\n    step2(value1, function(value2) {\n        step3(value2, function(value3) {\n            step4(value3, function(value4) {\n                // Do something with value4\n            });\n        });\n    });\n});\n```\n\nWith a promise library, you can flatten the pyramid.\n\n```javascript\nQ.fcall(promisedStep1)\n.then(promisedStep2)\n.then(promisedStep3)\n.then(promisedStep4)\n.then(function (value4) {\n    // Do something with value4\n})\n.catch(function (error) {\n    // Handle any error from all above steps\n})\n.done();\n```\n\nWith this approach
 , you also get implicit error propagation, just like `try`,\n`catch`, and `finally`.  An error in `promisedStep1` will flow all the way to\nthe `catch` function, where it\u2019s caught and handled.  (Here `promisedStepN` is\na version of `stepN` that returns a promise.)\n\nThe callback approach is called an \u201cinversion of control\u201d.\nA function that accepts a callback instead of a return value\nis saying, \u201cDon\u2019t call me, I\u2019ll call you.\u201d.  Promises\n[un-invert][IOC] the inversion, cleanly separating the input\narguments from control flow arguments.  This simplifies the\nuse and creation of API\u2019s, particularly variadic,\nrest and spread arguments.\n\n[IOC]: http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript\n\n\n## Getting Started\n\nThe Q module can be loaded as:\n\n-   A ``<script>`` tag (creating a ``Q`` global variable): ~2.5 KB minified and\n    gzipped.\n-   A Node.js and CommonJS module, avail
 able in [npm](https://npmjs.org/) as\n    the [q](https://npmjs.org/package/q) package\n-   An AMD module\n-   A [component](https://github.com/component/component) as ``microjs/q``\n-   Using [bower](http://bower.io/) as `q#1.0.1`\n-   Using [NuGet](http://nuget.org/) as [Q](https://nuget.org/packages/q)\n\nQ can exchange promises with jQuery, Dojo, When.js, WinJS, and more.\n\n## Resources\n\nOur [wiki][] contains a number of useful resources, including:\n\n- A method-by-method [Q API reference][reference].\n- A growing [examples gallery][examples], showing how Q can be used to make\n  everything better. From XHR to database access to accessing the Flickr API,\n  Q is there for you.\n- There are many libraries that produce and consume Q promises for everything\n  from file system/database access or RPC to templating. For a list of some of\n  the more popular ones, see [Libraries][].\n- If you want materials that introduce the promise concept generally, and the\n  below tutorial is
 n't doing it for you, check out our collection of\n  [presentations, blog posts, and podcasts][resources].\n- A guide for those [coming from jQuery's `$.Deferred`][jquery].\n\nWe'd also love to have you join the Q-Continuum [mailing list][].\n\n[wiki]: https://github.com/kriskowal/q/wiki\n[reference]: https://github.com/kriskowal/q/wiki/API-Reference\n[examples]: https://github.com/kriskowal/q/wiki/Examples-Gallery\n[Libraries]: https://github.com/kriskowal/q/wiki/Libraries\n[resources]: https://github.com/kriskowal/q/wiki/General-Promise-Resources\n[jquery]: https://github.com/kriskowal/q/wiki/Coming-from-jQuery\n[mailing list]: https://groups.google.com/forum/#!forum/q-continuum\n\n\n## Tutorial\n\nPromises have a ``then`` method, which you can use to get the eventual\nreturn value (fulfillment) or thrown exception (rejection).\n\n```javascript\npromiseMeSomething()\n.then(function (value) {\n}, function (reason) {\n});\n```\n\nIf ``promiseMeSomething`` returns a promise that gets
  fulfilled later\nwith a return value, the first function (the fulfillment handler) will be\ncalled with the value.  However, if the ``promiseMeSomething`` function\ngets rejected later by a thrown exception, the second function (the\nrejection handler) will be called with the exception.\n\nNote that resolution of a promise is always asynchronous: that is, the\nfulfillment or rejection handler will always be called in the next turn of the\nevent loop (i.e. `process.nextTick` in Node). This gives you a nice\nguarantee when mentally tracing the flow of your code, namely that\n``then`` will always return before either handler is executed.\n\nIn this tutorial, we begin with how to consume and work with promises. We'll\ntalk about how to create them, and thus create functions like\n`promiseMeSomething` that return promises, [below](#the-beginning).\n\n\n### Propagation\n\nThe ``then`` method returns a promise, which in this example, I\u2019m\nassigning to ``outputPromise``.\n\n```javascript
 \nvar outputPromise = getInputPromise()\n.then(function (input) {\n}, function (reason) {\n});\n```\n\nThe ``outputPromise`` variable becomes a new promise for the return\nvalue of either handler.  Since a function can only either return a\nvalue or throw an exception, only one handler will ever be called and it\nwill be responsible for resolving ``outputPromise``.\n\n-   If you return a value in a handler, ``outputPromise`` will get\n    fulfilled.\n\n-   If you throw an exception in a handler, ``outputPromise`` will get\n    rejected.\n\n-   If you return a **promise** in a handler, ``outputPromise`` will\n    \u201cbecome\u201d that promise.  Being able to become a new promise is useful\n    for managing delays, combining results, or recovering from errors.\n\nIf the ``getInputPromise()`` promise gets rejected and you omit the\nrejection handler, the **error** will go to ``outputPromise``:\n\n```javascript\nvar outputPromise = getInputPromise()\n.then(function (value) {\n});\n```\n\nIf
  the input promise gets fulfilled and you omit the fulfillment handler, the\n**value** will go to ``outputPromise``:\n\n```javascript\nvar outputPromise = getInputPromise()\n.then(null, function (error) {\n});\n```\n\nQ promises provide a ``fail`` shorthand for ``then`` when you are only\ninterested in handling the error:\n\n```javascript\nvar outputPromise = getInputPromise()\n.fail(function (error) {\n});\n```\n\nIf you are writing JavaScript for modern engines only or using\nCoffeeScript, you may use `catch` instead of `fail`.\n\nPromises also have a ``fin`` function that is like a ``finally`` clause.\nThe final handler gets called, with no arguments, when the promise\nreturned by ``getInputPromise()`` either returns a value or throws an\nerror.  The value returned or error thrown by ``getInputPromise()``\npasses directly to ``outputPromise`` unless the final handler fails, and\nmay be delayed if the final handler returns a promise.\n\n```javascript\nvar outputPromise = getInputP
 romise()\n.fin(function () {\n    // close files, database connections, stop servers, conclude tests\n});\n```\n\n-   If the handler returns a value, the value is ignored\n-   If the handler throws an error, the error passes to ``outputPromise``\n-   If the handler returns a promise, ``outputPromise`` gets postponed.  The\n    eventual value or error has the same effect as an immediate return\n    value or thrown error: a value would be ignored, an error would be\n    forwarded.\n\nIf you are writing JavaScript for modern engines only or using\nCoffeeScript, you may use `finally` instead of `fin`.\n\n### Chaining\n\nThere are two ways to chain promises.  You can chain promises either\ninside or outside handlers.  The next two examples are equivalent.\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n    return getUser(username)\n    .then(function (user) {\n        // if we get here without an error,\n        // the value returned here\n        // or the exception
  thrown here\n        // resolves the promise returned\n        // by the first line\n    })\n});\n```\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n    return getUser(username);\n})\n.then(function (user) {\n    // if we get here without an error,\n    // the value returned here\n    // or the exception thrown here\n    // resolves the promise returned\n    // by the first line\n});\n```\n\nThe only difference is nesting.  It\u2019s useful to nest handlers if you\nneed to capture multiple input values in your closure.\n\n```javascript\nfunction authenticate() {\n    return getUsername()\n    .then(function (username) {\n        return getUser(username);\n    })\n    // chained because we will not need the user name in the next event\n    .then(function (user) {\n        return getPassword()\n        // nested because we need both user and password next\n        .then(function (password) {\n            if (user.passwordHash !== hash(password)) {\n                
 throw new Error(\"Can't authenticate\");\n            }\n        });\n    });\n}\n```\n\n\n### Combination\n\nYou can turn an array of promises into a promise for the whole,\nfulfilled array using ``all``.\n\n```javascript\nreturn Q.all([\n    eventualAdd(2, 2),\n    eventualAdd(10, 20)\n]);\n```\n\nIf you have a promise for an array, you can use ``spread`` as a\nreplacement for ``then``.  The ``spread`` function \u201cspreads\u201d the\nvalues over the arguments of the fulfillment handler.  The rejection handler\nwill get called at the first sign of failure.  That is, whichever of\nthe received promises fails first gets handled by the rejection handler.\n\n```javascript\nfunction eventualAdd(a, b) {\n    return Q.spread([a, b], function (a, b) {\n        return a + b;\n    })\n}\n```\n\nBut ``spread`` calls ``all`` initially, so you can skip it in chains.\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n    return [username, getUser(username)];\n})\n.spread(function (
 username, user) {\n});\n```\n\nThe ``all`` function returns a promise for an array of values.  When this\npromise is fulfilled, the array contains the fulfillment values of the original\npromises, in the same order as those promises.  If one of the given promises\nis rejected, the returned promise is immediately rejected, not waiting for the\nrest of the batch.  If you want to wait for all of the promises to either be\nfulfilled or rejected, you can use ``allSettled``.\n\n```javascript\nQ.allSettled(promises)\n.then(function (results) {\n    results.forEach(function (result) {\n        if (result.state === \"fulfilled\") {\n            var value = result.value;\n        } else {\n            var reason = result.reason;\n        }\n    });\n});\n```\n\nThe ``any`` function accepts an array of promises and returns a promise that is\nfulfilled by the first given promise to be fulfilled, or rejected if all of the\ngiven promises are rejected.\n\n```javascript\nQ.any(promises)\n.then(fun
 ction (first) {\n    // Any of the promises was fulfilled.\n}, function (error) {\n    // All of the promises were rejected.\n});\n```\n\n### Sequences\n\nIf you have a number of promise-producing functions that need\nto be run sequentially, you can of course do so manually:\n\n```javascript\nreturn foo(initialVal).then(bar).then(baz).then(qux);\n```\n\nHowever, if you want to run a dynamically constructed sequence of\nfunctions, you'll want something like this:\n\n```javascript\nvar funcs = [foo, bar, baz, qux];\n\nvar result = Q(initialVal);\nfuncs.forEach(function (f) {\n    result = result.then(f);\n});\nreturn result;\n```\n\nYou can make this slightly more compact using `reduce`:\n\n```javascript\nreturn funcs.reduce(function (soFar, f) {\n    return soFar.then(f);\n}, Q(initialVal));\n```\n\nOr, you could use the ultra-compact version:\n\n```javascript\nreturn funcs.reduce(Q.when, Q(initialVal));\n```\n\n### Handling Errors\n\nOne sometimes-unintuive aspect of promises is tha
 t if you throw an\nexception in the fulfillment handler, it will not be caught by the error\nhandler.\n\n```javascript\nreturn foo()\n.then(function (value) {\n    throw new Error(\"Can't bar.\");\n}, function (error) {\n    // We only get here if \"foo\" fails\n});\n```\n\nTo see why this is, consider the parallel between promises and\n``try``/``catch``. We are ``try``-ing to execute ``foo()``: the error\nhandler represents a ``catch`` for ``foo()``, while the fulfillment handler\nrepresents code that happens *after* the ``try``/``catch`` block.\nThat code then needs its own ``try``/``catch`` block.\n\nIn terms of promises, this means chaining your rejection handler:\n\n```javascript\nreturn foo()\n.then(function (value) {\n    throw new Error(\"Can't bar.\");\n})\n.fail(function (error) {\n    // We get here with either foo's error or bar's error\n});\n```\n\n### Progress Notification\n\nIt's possible for promises to report their progress, e.g. for tasks that take a\nlong time lik
 e a file upload. Not all promises will implement progress\nnotifications, but for those that do, you can consume the progress values using\na third parameter to ``then``:\n\n```javascript\nreturn uploadFile()\n.then(function () {\n    // Success uploading the file\n}, function (err) {\n    // There was an error, and we get the reason for error\n}, function (progress) {\n    // We get notified of the upload's progress as it is executed\n});\n```\n\nLike `fail`, Q also provides a shorthand for progress callbacks\ncalled `progress`:\n\n```javascript\nreturn uploadFile().progress(function (progress) {\n    // We get notified of the upload's progress\n});\n```\n\n### The End\n\nWhen you get to the end of a chain of promises, you should either\nreturn the last promise or end the chain.  Since handlers catch\nerrors, it\u2019s an unfortunate pattern that the exceptions can go\nunobserved.\n\nSo, either return it,\n\n```javascript\nreturn foo()\n.then(function () {\n    return \"bar\";\n});\n`
 ``\n\nOr, end it.\n\n```javascript\nfoo()\n.then(function () {\n    return \"bar\";\n})\n.done();\n```\n\nEnding a promise chain makes sure that, if an error doesn\u2019t get\nhandled before the end, it will get rethrown and reported.\n\nThis is a stopgap. We are exploring ways to make unhandled errors\nvisible without any explicit handling.\n\n\n### The Beginning\n\nEverything above assumes you get a promise from somewhere else.  This\nis the common case.  Every once in a while, you will need to create a\npromise from scratch.\n\n#### Using ``Q.fcall``\n\nYou can create a promise from a value using ``Q.fcall``.  This returns a\npromise for 10.\n\n```javascript\nreturn Q.fcall(function () {\n    return 10;\n});\n```\n\nYou can also use ``fcall`` to get a promise for an exception.\n\n```javascript\nreturn Q.fcall(function () {\n    throw new Error(\"Can't do it\");\n});\n```\n\nAs the name implies, ``fcall`` can call functions, or even promised\nfunctions.  This uses the ``eventualAdd``
  function above to add two\nnumbers.\n\n```javascript\nreturn Q.fcall(eventualAdd, 2, 2);\n```\n\n\n#### Using Deferreds\n\nIf you have to interface with asynchronous functions that are callback-based\ninstead of promise-based, Q provides a few shortcuts (like ``Q.nfcall`` and\nfriends). But much of the time, the solution will be to use *deferreds*.\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile(\"foo.txt\", \"utf-8\", function (error, text) {\n    if (error) {\n        deferred.reject(new Error(error));\n    } else {\n        deferred.resolve(text);\n    }\n});\nreturn deferred.promise;\n```\n\nNote that a deferred can be resolved with a value or a promise.  The\n``reject`` function is a shorthand for resolving with a rejected\npromise.\n\n```javascript\n// this:\ndeferred.reject(new Error(\"Can't do it\"));\n\n// is shorthand for:\nvar rejection = Q.fcall(function () {\n    throw new Error(\"Can't do it\");\n});\ndeferred.resolve(rejection);\n```\n\nThis is a simplified 
 implementation of ``Q.delay``.\n\n```javascript\nfunction delay(ms) {\n    var deferred = Q.defer();\n    setTimeout(deferred.resolve, ms);\n    return deferred.promise;\n}\n```\n\nThis is a simplified implementation of ``Q.timeout``\n\n```javascript\nfunction timeout(promise, ms) {\n    var deferred = Q.defer();\n    Q.when(promise, deferred.resolve);\n    delay(ms).then(function () {\n        deferred.reject(new Error(\"Timed out\"));\n    });\n    return deferred.promise;\n}\n```\n\nFinally, you can send a progress notification to the promise with\n``deferred.notify``.\n\nFor illustration, this is a wrapper for XML HTTP requests in the browser. Note\nthat a more [thorough][XHR] implementation would be in order in practice.\n\n[XHR]: https://github.com/montagejs/mr/blob/71e8df99bb4f0584985accd6f2801ef3015b9763/browser.js#L29-L73\n\n```javascript\nfunction requestOkText(url) {\n    var request = new XMLHttpRequest();\n    var deferred = Q.defer();\n\n    request.open(\"GET\", url, 
 true);\n    request.onload = onload;\n    request.onerror = onerror;\n    request.onprogress = onprogress;\n    request.send();\n\n    function onload() {\n        if (request.status === 200) {\n            deferred.resolve(request.responseText);\n        } else {\n            deferred.reject(new Error(\"Status code was \" + request.status));\n        }\n    }\n\n    function onerror() {\n        deferred.reject(new Error(\"Can't XHR \" + JSON.stringify(url)));\n    }\n\n    function onprogress(event) {\n        deferred.notify(event.loaded / event.total);\n    }\n\n    return deferred.promise;\n}\n```\n\nBelow is an example of how to use this ``requestOkText`` function:\n\n```javascript\nrequestOkText(\"http://localhost:3000\")\n.then(function (responseText) {\n    // If the HTTP response returns 200 OK, log the response text.\n    console.log(responseText);\n}, function (error) {\n    // If there's an error or a non-200 status code, log the error.\n    console.error(error);\n}, fu
 nction (progress) {\n    // Log the progress as it comes in.\n    console.log(\"Request progress: \" + Math.round(progress * 100) + \"%\");\n});\n```\n\n#### Using `Q.Promise`\n\nThis is an alternative promise-creation API that has the same power as\nthe deferred concept, but without introducing another conceptual entity.\n\nRewriting the `requestOkText` example above using `Q.Promise`:\n\n```javascript\nfunction requestOkText(url) {\n    return Q.Promise(function(resolve, reject, notify) {\n        var request = new XMLHttpRequest();\n\n        request.open(\"GET\", url, true);\n        request.onload = onload;\n        request.onerror = onerror;\n        request.onprogress = onprogress;\n        request.send();\n\n        function onload() {\n            if (request.status === 200) {\n                resolve(request.responseText);\n            } else {\n                reject(new Error(\"Status code was \" + request.status));\n            }\n        }\n\n        function onerror()
  {\n            reject(new Error(\"Can't XHR \" + JSON.stringify(url)));\n        }\n\n        function onprogress(event) {\n            notify(event.loaded / event.total);\n        }\n    });\n}\n```\n\nIf `requestOkText` were to throw an exception, the returned promise would be\nrejected with that thrown exception as the rejection reason.\n\n### The Middle\n\nIf you are using a function that may return a promise, but just might\nreturn a value if it doesn\u2019t need to defer, you can use the \u201cstatic\u201d\nmethods of the Q library.\n\nThe ``when`` function is the static equivalent for ``then``.\n\n```javascript\nreturn Q.when(valueOrPromise, function (value) {\n}, function (error) {\n});\n```\n\nAll of the other methods on a promise have static analogs with the\nsame name.\n\nThe following are equivalent:\n\n```javascript\nreturn Q.all([a, b]);\n```\n\n```javascript\nreturn Q.fcall(function () {\n    return [a, b];\n})\n.all();\n```\n\nWhen working with promises provided by other lib
 raries, you should\nconvert it to a Q promise.  Not all promise libraries make the same\nguarantees as Q and certainly don\u2019t provide all of the same methods.\nMost libraries only provide a partially functional ``then`` method.\nThis thankfully is all we need to turn them into vibrant Q promises.\n\n```javascript\nreturn Q($.ajax(...))\n.then(function () {\n});\n```\n\nIf there is any chance that the promise you receive is not a Q promise\nas provided by your library, you should wrap it using a Q function.\nYou can even use ``Q.invoke`` as a shorthand.\n\n```javascript\nreturn Q.invoke($, 'ajax', ...)\n.then(function () {\n});\n```\n\n\n### Over the Wire\n\nA promise can serve as a proxy for another object, even a remote\nobject.  There are methods that allow you to optimistically manipulate\nproperties or call functions.  All of these interactions return\npromises, so they can be chained.\n\n```\ndirect manipulation         using a promise as a proxy\n--------------------------  -
 ------------------------------\nvalue.foo                   promise.get(\"foo\")\nvalue.foo = value           promise.put(\"foo\", value)\ndelete value.foo            promise.del(\"foo\")\nvalue.foo(...args)          promise.post(\"foo\", [args])\nvalue.foo(...args)          promise.invoke(\"foo\", ...args)\nvalue(...args)              promise.fapply([args])\nvalue(...args)              promise.fcall(...args)\n```\n\nIf the promise is a proxy for a remote object, you can shave\nround-trips by using these functions instead of ``then``.  To take\nadvantage of promises for remote objects, check out [Q-Connection][].\n\n[Q-Connection]: https://github.com/kriskowal/q-connection\n\nEven in the case of non-remote objects, these methods can be used as\nshorthand for particularly-simple fulfillment handlers. For example, you\ncan replace\n\n```javascript\nreturn Q.fcall(function () {\n    return [{ foo: \"bar\" }, { foo: \"baz\" }];\n})\n.then(function (value) {\n    return value[0].foo;\n})
 ;\n```\n\nwith\n\n```javascript\nreturn Q.fcall(function () {\n    return [{ foo: \"bar\" }, { foo: \"baz\" }];\n})\n.get(0)\n.get(\"foo\");\n```\n\n\n### Adapting Node\n\nIf you're working with functions that make use of the Node.js callback pattern,\nwhere callbacks are in the form of `function(err, result)`, Q provides a few\nuseful utility functions for converting between them. The most straightforward\nare probably `Q.nfcall` and `Q.nfapply` (\"Node function call/apply\") for calling\nNode.js-style functions and getting back a promise:\n\n```javascript\nreturn Q.nfcall(FS.readFile, \"foo.txt\", \"utf-8\");\nreturn Q.nfapply(FS.readFile, [\"foo.txt\", \"utf-8\"]);\n```\n\nIf you are working with methods, instead of simple functions, you can easily\nrun in to the usual problems where passing a method to another function\u2014like\n`Q.nfcall`\u2014\"un-binds\" the method from its owner. To avoid this, you can either\nuse `Function.prototype.bind` or some nice shortcut methods we provide
 :\n\n```javascript\nreturn Q.ninvoke(redisClient, \"get\", \"user:1:id\");\nreturn Q.npost(redisClient, \"get\", [\"user:1:id\"]);\n```\n\nYou can also create reusable wrappers with `Q.denodeify` or `Q.nbind`:\n\n```javascript\nvar readFile = Q.denodeify(FS.readFile);\nreturn readFile(\"foo.txt\", \"utf-8\");\n\nvar redisClientGet = Q.nbind(redisClient.get, redisClient);\nreturn redisClientGet(\"user:1:id\");\n```\n\nFinally, if you're working with raw deferred objects, there is a\n`makeNodeResolver` method on deferreds that can be handy:\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile(\"foo.txt\", \"utf-8\", deferred.makeNodeResolver());\nreturn deferred.promise;\n```\n\n### Long Stack Traces\n\nQ comes with optional support for \u201clong stack traces,\u201d wherein the `stack`\nproperty of `Error` rejection reasons is rewritten to be traced along\nasynchronous jumps instead of stopping at the most recent one. As an example:\n\n```js\nfunction theDepthsOfMyProgram() {\n  Q.dela
 y(100).done(function explode() {\n    throw new Error(\"boo!\");\n  });\n}\n\ntheDepthsOfMyProgram();\n```\n\nusually would give a rather unhelpful stack trace looking something like\n\n```\nError: boo!\n    at explode (/path/to/test.js:3:11)\n    at _fulfilled (/path/to/test.js:q:54)\n    at resolvedValue.promiseDispatch.done (/path/to/q.js:823:30)\n    at makePromise.promise.promiseDispatch (/path/to/q.js:496:13)\n    at pending (/path/to/q.js:397:39)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)\n```\n\nBut, if you turn this feature on by setting\n\n```js\nQ.longStackSupport = true;\n```\n\nthen the above code gives a nice stack trace to the tune of\n\n```\nError: boo!\n    at explode (/path/to/test.js:3:11)\nFrom previous event:\n    at theDepthsOfMyProgram (/path/to/test.js:2:16)\n    at Object.<anonymous> (/path/to/test.js:7:1)\n```\n\nNote how you can see the function that triggered the async operation in the\nstack trace! This is very helpful 
 for debugging, as otherwise you end up getting\nonly the first line, plus a bunch of Q internals, with no sign of where the\noperation started.\n\nIn node.js, this feature can also be enabled through the Q_DEBUG environment\nvariable:\n\n```\nQ_DEBUG=1 node server.js\n```\n\nThis will enable long stack support in every instance of Q.\n\nThis feature does come with somewhat-serious performance and memory overhead,\nhowever. If you're working with lots of promises, or trying to scale a server\nto many users, you should probably keep it off. But in development, go for it!\n\n## Tests\n\nYou can view the results of the Q test suite [in your browser][tests]!\n\n[tests]: https://rawgithub.com/kriskowal/q/v1/spec/q-spec.html\n\n## License\n\nCopyright 2009\u20132015 Kristopher Michael Kowal and contributors\nMIT License (enclosed)\n\n",
-  "readmeFilename": "README.md",
-  "_id": "q@1.4.1",
-  "_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
-  "_resolved": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/q/-/q-1.4.1.tgz",
-  "_from": "q@>=1.4.1 <2.0.0"
+  "scripts": {
+    "benchmark": "matcha",
+    "cover": "cover run jasmine-node spec && cover report html && opener cover_html/index.html",
+    "lint": "jshint q.js",
+    "minify": "grunt",
+    "prepublish": "grunt",
+    "test": "jasmine-node spec && promises-aplus-tests spec/aplus-adapter",
+    "test-browser": "opener spec/q-spec.html"
+  },
+  "version": "1.4.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/sax/package.json
----------------------------------------------------------------------
diff --git a/node_modules/sax/package.json b/node_modules/sax/package.json
index b7a1155..3b44e78 100644
--- a/node_modules/sax/package.json
+++ b/node_modules/sax/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "sax@0.3.5",
-      "d:\\cordova\\cordova-ios\\node_modules\\elementtree"
+      "D:\\Cordova\\cordova-ios\\node_modules\\elementtree"
     ]
   ],
   "_defaultsLoaded": true,
@@ -34,7 +34,7 @@
   "_shasum": "88fcfc1f73c0c8bbd5b7c776b6d3f3501eed073d",
   "_shrinkwrap": null,
   "_spec": "sax@0.3.5",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\elementtree",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\elementtree",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/semver/package.json
----------------------------------------------------------------------
diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json
index 5f46a7b..d673ce4 100644
--- a/node_modules/semver/package.json
+++ b/node_modules/semver/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "semver@^5.0.1",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "semver@>=5.0.1 <6.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "85f2cf8550465c4df000cf7d86f6b054106ab9e5",
   "_shrinkwrap": null,
   "_spec": "semver@^5.0.1",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "bin": {
     "semver": "./bin/semver"
   },

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

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simctl/node_modules/shelljs/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simctl/node_modules/shelljs/package.json b/node_modules/simctl/node_modules/shelljs/package.json
index b45ce6d..161d495 100644
--- a/node_modules/simctl/node_modules/shelljs/package.json
+++ b/node_modules/simctl/node_modules/shelljs/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "shelljs@^0.2.6",
-      "/Users/omefire/Projects/cordova-ios/node_modules/simctl"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simctl"
     ]
   ],
   "_from": "shelljs@>=0.2.6 <0.3.0",
@@ -31,7 +31,7 @@
   "_shasum": "90492d72ffcc8159976baba62fb0f6884f0c3378",
   "_shrinkwrap": null,
   "_spec": "shelljs@^0.2.6",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/simctl",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simctl",
   "author": {
     "email": "aadib@mozilla.com",
     "name": "Artur Adib"
@@ -50,7 +50,7 @@
   "directories": {},
   "dist": {
     "shasum": "90492d72ffcc8159976baba62fb0f6884f0c3378",
-    "tarball": "http://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz"
+    "tarball": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz"
   },
   "engines": {
     "node": ">=0.8.0"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simctl/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simctl/package.json b/node_modules/simctl/package.json
index 0a8d399..c69e614 100644
--- a/node_modules/simctl/package.json
+++ b/node_modules/simctl/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "simctl@^0.0.9",
-      "/Users/omefire/Projects/cordova-ios/node_modules/ios-sim"
+      "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim"
     ]
   ],
   "_from": "simctl@>=0.0.9 <0.0.10",
@@ -36,7 +36,7 @@
   "_shasum": "cd36c9d3a1ae1709645f97e0ce205cc3cac6fd1b",
   "_shrinkwrap": null,
   "_spec": "simctl@^0.0.9",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/ios-sim",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim",
   "author": {
     "name": "Shazron Abdullah"
   },
@@ -52,7 +52,7 @@
   "directories": {},
   "dist": {
     "shasum": "cd36c9d3a1ae1709645f97e0ce205cc3cac6fd1b",
-    "tarball": "http://registry.npmjs.org/simctl/-/simctl-0.0.9.tgz"
+    "tarball": "https://registry.npmjs.org/simctl/-/simctl-0.0.9.tgz"
   },
   "gitHead": "34426c719130a73b83af65f50a11a46267a5ad0b",
   "homepage": "https://github.com/phonegap/simctl#readme",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/node_modules/base64-js/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/base64-js/package.json b/node_modules/simple-plist/node_modules/base64-js/package.json
index 18187e6..bc8d711 100644
--- a/node_modules/simple-plist/node_modules/base64-js/package.json
+++ b/node_modules/simple-plist/node_modules/base64-js/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "base64-js@0.0.6",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
     ]
   ],
   "_from": "base64-js@0.0.6",
@@ -31,7 +31,7 @@
   "_shasum": "7b859f79f0bbbd55867ba67a7fab397e24a20947",
   "_shrinkwrap": null,
   "_spec": "base64-js@0.0.6",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
   "author": {
     "email": "t.jameson.little@gmail.com",
     "name": "T. Jameson Little"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/node_modules/bplist-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/bplist-parser/package.json b/node_modules/simple-plist/node_modules/bplist-parser/package.json
index b8a3023..e5f9bfb 100644
--- a/node_modules/simple-plist/node_modules/bplist-parser/package.json
+++ b/node_modules/simple-plist/node_modules/bplist-parser/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "bplist-parser@0.0.6",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist"
     ]
   ],
   "_from": "bplist-parser@0.0.6",
@@ -31,7 +31,7 @@
   "_shasum": "38da3471817df9d44ab3892e27707bbbd75a11b9",
   "_shrinkwrap": null,
   "_spec": "bplist-parser@0.0.6",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist",
   "author": {
     "email": "joe.ferner@nearinfinity.com",
     "name": "Joe Ferner"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/node_modules/plist/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/plist/package.json b/node_modules/simple-plist/node_modules/plist/package.json
index e1bd862..e132e8c 100644
--- a/node_modules/simple-plist/node_modules/plist/package.json
+++ b/node_modules/simple-plist/node_modules/plist/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "plist@1.1.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist"
     ]
   ],
   "_from": "plist@1.1.0",
@@ -31,7 +31,7 @@
   "_shasum": "ff6708590c97cc438e7bc45de5251bd725f3f89d",
   "_shrinkwrap": null,
   "_spec": "plist@1.1.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist",
   "author": {
     "email": "nathan@tootallnate.net",
     "name": "Nathan Rajlich"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/node_modules/util-deprecate/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/util-deprecate/package.json b/node_modules/simple-plist/node_modules/util-deprecate/package.json
index 14c1301..de353b4 100644
--- a/node_modules/simple-plist/node_modules/util-deprecate/package.json
+++ b/node_modules/simple-plist/node_modules/util-deprecate/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "util-deprecate@1.0.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
     ]
   ],
   "_from": "util-deprecate@1.0.0",
@@ -31,7 +31,7 @@
   "_shasum": "3007af012c140eae26de05576ec22785cac3abf2",
   "_shrinkwrap": null,
   "_spec": "util-deprecate@1.0.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
   "author": {
     "email": "nathan@tootallnate.net",
     "name": "Nathan Rajlich",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/node_modules/xmlbuilder/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/package.json b/node_modules/simple-plist/node_modules/xmlbuilder/package.json
index b4b608a..3e59205 100644
--- a/node_modules/simple-plist/node_modules/xmlbuilder/package.json
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "xmlbuilder@2.2.1",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist"
     ]
   ],
   "_from": "xmlbuilder@2.2.1",
@@ -31,7 +31,7 @@
   "_shasum": "9326430f130d87435d4c4086643aa2926e105a32",
   "_shrinkwrap": null,
   "_spec": "xmlbuilder@2.2.1",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\plist",
   "author": {
     "email": "oozcitak@gmail.com",
     "name": "Ozgur Ozcitak"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/simple-plist/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/package.json b/node_modules/simple-plist/package.json
index a92dda8..23b16de 100644
--- a/node_modules/simple-plist/package.json
+++ b/node_modules/simple-plist/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "simple-plist@0.0.4",
-      "d:\\cordova\\cordova-ios\\node_modules\\xcode"
+      "D:\\Cordova\\cordova-ios\\node_modules\\xcode"
     ]
   ],
   "_from": "simple-plist@0.0.4",
@@ -34,7 +34,7 @@
   "_shasum": "7f863438b63cb75df99dd81b8336d7c5075cfc0b",
   "_shrinkwrap": null,
   "_spec": "simple-plist@0.0.4",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\xcode",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\xcode",
   "author": {
     "name": "Joe Wollard"
   },

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/stream-buffers/package.json
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/package.json b/node_modules/stream-buffers/package.json
index 76e0a7c..8cae11c 100644
--- a/node_modules/stream-buffers/package.json
+++ b/node_modules/stream-buffers/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "stream-buffers@~0.2.3",
-      "d:\\cordova\\cordova-ios\\node_modules\\bplist-creator"
+      "D:\\Cordova\\cordova-ios\\node_modules\\bplist-creator"
     ]
   ],
   "_from": "stream-buffers@>=0.2.3 <0.3.0",
@@ -31,7 +31,7 @@
   "_shasum": "181c08d5bb3690045f69401b9ae6a7a0cf3313fc",
   "_shrinkwrap": null,
   "_spec": "stream-buffers@~0.2.3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\bplist-creator",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\bplist-creator",
   "author": {
     "email": "me@samcday.com.au",
     "name": "Sam Day"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/tail/package.json
----------------------------------------------------------------------
diff --git a/node_modules/tail/package.json b/node_modules/tail/package.json
index ab52505..f11bfb6 100644
--- a/node_modules/tail/package.json
+++ b/node_modules/tail/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "tail@^0.4.0",
-      "/Users/omefire/Projects/cordova-ios/node_modules/simctl"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simctl"
     ]
   ],
   "_from": "tail@>=0.4.0 <0.5.0",
@@ -31,7 +31,7 @@
   "_shasum": "d29de72750cc99db1e053aff13c359ecfb713002",
   "_shrinkwrap": null,
   "_spec": "tail@^0.4.0",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/simctl",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simctl",
   "author": {
     "name": "Luca Grulla"
   },
@@ -57,7 +57,7 @@
   "directories": {},
   "dist": {
     "shasum": "d29de72750cc99db1e053aff13c359ecfb713002",
-    "tarball": "http://registry.npmjs.org/tail/-/tail-0.4.0.tgz"
+    "tarball": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz"
   },
   "engines": {
     "node": ">= 0.4.0"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/underscore/package.json
----------------------------------------------------------------------
diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json
index 6ee344b..9089c91 100644
--- a/node_modules/underscore/package.json
+++ b/node_modules/underscore/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "underscore@^1.8.3",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "underscore@>=1.8.3 <2.0.0",
@@ -31,7 +31,7 @@
   "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022",
   "_shrinkwrap": null,
   "_spec": "underscore@^1.8.3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "jeremy@documentcloud.org",
     "name": "Jeremy Ashkenas"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/unorm/package.json
----------------------------------------------------------------------
diff --git a/node_modules/unorm/package.json b/node_modules/unorm/package.json
index 2dd5ba2..0f4e412 100644
--- a/node_modules/unorm/package.json
+++ b/node_modules/unorm/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "unorm@^1.3.3",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "unorm@>=1.3.3 <2.0.0",
@@ -31,7 +31,7 @@
   "_shasum": "364200d5f13646ca8bcd44490271335614792300",
   "_shrinkwrap": null,
   "_spec": "unorm@^1.3.3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "bwp@bwp.dk",
     "name": "Bjarke Walling"
@@ -66,7 +66,7 @@
   "directories": {},
   "dist": {
     "shasum": "364200d5f13646ca8bcd44490271335614792300",
-    "tarball": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz"
+    "tarball": "http://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz"
   },
   "engines": {
     "node": ">= 0.4.0"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/util-deprecate/package.json
----------------------------------------------------------------------
diff --git a/node_modules/util-deprecate/package.json b/node_modules/util-deprecate/package.json
index 9657998..799c710 100644
--- a/node_modules/util-deprecate/package.json
+++ b/node_modules/util-deprecate/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "util-deprecate@1.0.2",
-      "/Users/omefire/Projects/cordova-ios/node_modules/plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\plist"
     ]
   ],
   "_from": "util-deprecate@1.0.2",
@@ -32,7 +32,7 @@
   "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
   "_shrinkwrap": null,
   "_spec": "util-deprecate@1.0.2",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\plist",
   "author": {
     "email": "nathan@tootallnate.net",
     "name": "Nathan Rajlich",
@@ -48,7 +48,7 @@
   "directories": {},
   "dist": {
     "shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
-    "tarball": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+    "tarball": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
   },
   "gitHead": "475fb6857cd23fafff20c1be846c1350abf8e6d4",
   "homepage": "https://github.com/TooTallNate/util-deprecate",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/wrappy/package.json
----------------------------------------------------------------------
diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json
index bdde15d..3838f39 100644
--- a/node_modules/wrappy/package.json
+++ b/node_modules/wrappy/package.json
@@ -2,20 +2,24 @@
   "_args": [
     [
       "wrappy@1",
-      "d:\\cordova\\cordova-ios\\node_modules\\inflight"
+      "D:\\Cordova\\cordova-ios\\node_modules\\inflight"
     ]
   ],
   "_from": "wrappy@>=1.0.0 <2.0.0",
-  "_id": "wrappy@1.0.1",
+  "_id": "wrappy@1.0.2",
   "_inCache": true,
   "_installable": true,
   "_location": "/wrappy",
-  "_nodeVersion": "0.10.31",
+  "_nodeVersion": "5.10.1",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005"
+  },
   "_npmUser": {
-    "email": "i@izs.me",
-    "name": "isaacs"
+    "email": "kat@sykosomatic.org",
+    "name": "zkat"
   },
-  "_npmVersion": "2.0.0",
+  "_npmVersion": "3.9.1",
   "_phantomChildren": {},
   "_requested": {
     "name": "wrappy",
@@ -29,11 +33,11 @@
     "/inflight",
     "/once"
   ],
-  "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
-  "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
+  "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+  "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
   "_shrinkwrap": null,
   "_spec": "wrappy@1",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\inflight",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\inflight",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",
@@ -45,16 +49,19 @@
   "dependencies": {},
   "description": "Callback wrapping utility",
   "devDependencies": {
-    "tap": "^0.4.12"
+    "tap": "^2.3.1"
   },
   "directories": {
     "test": "test"
   },
   "dist": {
-    "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
-    "tarball": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
+    "shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
+    "tarball": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
   },
-  "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
+  "files": [
+    "wrappy.js"
+  ],
+  "gitHead": "71d91b6dc5bdeac37e218c2cf03f9ab55b60d214",
   "homepage": "https://github.com/npm/wrappy",
   "license": "ISC",
   "main": "wrappy.js",
@@ -62,6 +69,10 @@
     {
       "email": "i@izs.me",
       "name": "isaacs"
+    },
+    {
+      "email": "kat@sykosomatic.org",
+      "name": "zkat"
     }
   ],
   "name": "wrappy",
@@ -72,7 +83,7 @@
     "url": "git+https://github.com/npm/wrappy.git"
   },
   "scripts": {
-    "test": "tap test/*.js"
+    "test": "tap --coverage test/*.js"
   },
-  "version": "1.0.1"
+  "version": "1.0.2"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/wrappy/test/basic.js
----------------------------------------------------------------------
diff --git a/node_modules/wrappy/test/basic.js b/node_modules/wrappy/test/basic.js
deleted file mode 100644
index 5ed0fcd..0000000
--- a/node_modules/wrappy/test/basic.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var test = require('tap').test
-var wrappy = require('../wrappy.js')
-
-test('basic', function (t) {
-  function onceifier (cb) {
-    var called = false
-    return function () {
-      if (called) return
-      called = true
-      return cb.apply(this, arguments)
-    }
-  }
-  onceifier.iAmOnce = {}
-  var once = wrappy(onceifier)
-  t.equal(once.iAmOnce, onceifier.iAmOnce)
-
-  var called = 0
-  function boo () {
-    t.equal(called, 0)
-    called++
-  }
-  // has some rando property
-  boo.iAmBoo = true
-
-  var onlyPrintOnce = once(boo)
-
-  onlyPrintOnce() // prints 'boo'
-  onlyPrintOnce() // does nothing
-  t.equal(called, 1)
-
-  // random property is retained!
-  t.equal(onlyPrintOnce.iAmBoo, true)
-
-  var logs = []
-  var logwrap = wrappy(function (msg, cb) {
-    logs.push(msg + ' wrapping cb')
-    return function () {
-      logs.push(msg + ' before cb')
-      var ret = cb.apply(this, arguments)
-      logs.push(msg + ' after cb')
-    }
-  })
-
-  var c = logwrap('foo', function () {
-    t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
-  })
-  c()
-  t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
-
-  t.end()
-})

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/xcode/lib/pbxFile.js
----------------------------------------------------------------------
diff --git a/node_modules/xcode/lib/pbxFile.js b/node_modules/xcode/lib/pbxFile.js
index ed6a56d..b4e8bdd 100644
--- a/node_modules/xcode/lib/pbxFile.js
+++ b/node_modules/xcode/lib/pbxFile.js
@@ -34,6 +34,7 @@ var FILETYPE_BY_EXTENSION = {
         'archive.ar': 'Frameworks',
         'compiled.mach-o.dylib': 'Frameworks',
         'wrapper.framework': 'Frameworks',
+        'embedded.framework': 'Embed Frameworks',
         'sourcecode.c.h': 'Resources',
         'sourcecode.c.objc': 'Sources',
         'sourcecode.swift': 'Sources'
@@ -93,7 +94,7 @@ function defaultEncoding(fileRef) {
     }
 }
 
-function detectGroup(fileRef) {
+function detectGroup(fileRef, opt) {
     var extension = path.extname(fileRef.basename).substring(1),
         filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
         groupName = GROUP_BY_FILETYPE[unquoted(filetype)];
@@ -102,6 +103,10 @@ function detectGroup(fileRef) {
         return 'Sources';
     }
 
+    if (opt.customFramework && opt.embed) {
+        return GROUP_BY_FILETYPE['embedded.framework'];
+    }
+
     if (!groupName) {
         return DEFAULT_GROUP;
     }
@@ -161,7 +166,7 @@ function pbxFile(filepath, opt) {
 
     this.basename = path.basename(filepath);
     this.lastKnownFileType = opt.lastKnownFileType || detectType(filepath);
-    this.group = detectGroup(self);
+    this.group = detectGroup(self, opt);
 
     // for custom frameworks
     if (opt.customFramework == true) {
@@ -194,7 +199,7 @@ function pbxFile(filepath, opt) {
         this.settings.COMPILER_FLAGS = util.format('"%s"', opt.compilerFlags);
     }
 
-    if (opt.sign) {
+    if (opt.embed && opt.sign) {
       if (!this.settings)
           this.settings = {};
       if (!this.settings.ATTRIBUTES)

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/xcode/lib/pbxProject.js
----------------------------------------------------------------------
diff --git a/node_modules/xcode/lib/pbxProject.js b/node_modules/xcode/lib/pbxProject.js
index ab515e1..b9cf4fd 100644
--- a/node_modules/xcode/lib/pbxProject.js
+++ b/node_modules/xcode/lib/pbxProject.js
@@ -261,6 +261,13 @@ pbxProject.prototype.removeResourceFile = function(path, opt) {
 }
 
 pbxProject.prototype.addFramework = function(fpath, opt) {
+    var customFramework = opt && opt.customFramework == true;
+    var link = !opt || (opt.link == undefined || opt.link);    //defaults to true if not specified
+    var embed = opt && opt.embed;                              //defaults to false if not specified
+
+    if (opt) {
+      delete opt.embed;
+    }
 
     var file = new pbxFile(fpath, opt);
 
@@ -270,10 +277,6 @@ pbxProject.prototype.addFramework = function(fpath, opt) {
 
     if (this.hasFile(file.path)) return false;
 
-    var customFramework = opt && opt.customFramework == true;
-    var link = !opt || (opt.link == undefined || opt.link);    //defaults to true if not specified
-    var embed = opt && opt.embed;                              //defaults to false if not specified
-
     this.addToPbxBuildFileSection(file);        // PBXBuildFile
     this.addToPbxFileReferenceSection(file);    // PBXFileReference
     this.addToFrameworksPbxGroup(file);         // PBXGroup
@@ -286,7 +289,18 @@ pbxProject.prototype.addFramework = function(fpath, opt) {
         this.addToFrameworkSearchPaths(file);
 
         if (embed) {
-          this.addToPbxEmbedFrameworksBuildPhase(file); // PBXCopyFilesBuildPhase
+          opt.embed = embed;
+          var embeddedFile = new pbxFile(fpath, opt);
+
+          embeddedFile.uuid = this.generateUuid();
+          embeddedFile.fileRef = file.fileRef;
+
+          //keeping a separate PBXBuildFile entry for Embed Frameworks
+          this.addToPbxBuildFileSection(embeddedFile);        // PBXBuildFile
+
+          this.addToPbxEmbedFrameworksBuildPhase(embeddedFile); // PBXCopyFilesBuildPhase
+
+          return embeddedFile;
         }
     }
 
@@ -294,6 +308,12 @@ pbxProject.prototype.addFramework = function(fpath, opt) {
 }
 
 pbxProject.prototype.removeFramework = function(fpath, opt) {
+    var embed = opt && opt.embed;
+
+    if (opt) {
+      delete opt.embed;
+    }
+
     var file = new pbxFile(fpath, opt);
     file.target = opt ? opt.target : undefined;
 
@@ -301,12 +321,20 @@ pbxProject.prototype.removeFramework = function(fpath, opt) {
     this.removeFromPbxFileReferenceSection(file);      // PBXFileReference
     this.removeFromFrameworksPbxGroup(file);           // PBXGroup
     this.removeFromPbxFrameworksBuildPhase(file);      // PBXFrameworksBuildPhase
-    this.removeFromPbxEmbedFrameworksBuildPhase(file); // PBXCopyFilesBuildPhase
 
     if (opt && opt.customFramework) {
         this.removeFromFrameworkSearchPaths(file);
     }
 
+    opt = opt || {};
+    opt.embed = true;
+    var embeddedFile = new pbxFile(fpath, opt);
+
+    embeddedFile.fileRef = file.fileRef;
+
+    this.removeFromPbxBuildFileSection(embeddedFile);          // PBXBuildFile
+    this.removeFromPbxEmbedFrameworksBuildPhase(embeddedFile); // PBXCopyFilesBuildPhase
+
     return file;
 }
 
@@ -600,12 +628,13 @@ pbxProject.prototype.addToPbxEmbedFrameworksBuildPhase = function (file) {
 pbxProject.prototype.removeFromPbxEmbedFrameworksBuildPhase = function (file) {
     var sources = this.pbxEmbedFrameworksBuildPhaseObj(file.target);
     if (sources) {
+        var files = [];
         for (i in sources.files) {
-            if (sources.files[i].comment == longComment(file)) {
-                sources.files.splice(i, 1);
-                break;
+            if (sources.files[i].comment != longComment(file)) {
+                files.push(sources.files[i]);
             }
         }
+        sources.files = files;
     }
 }
 
@@ -1446,6 +1475,7 @@ function pbxCopyFilesBuildPhaseObj(obj, folderType, subfolderPath, phaseName){
         command_line_tool: 'wrapper',
         dynamic_library: 'products_directory',
         framework: 'shared_frameworks',
+        frameworks: 'frameworks',
         static_library: 'products_directory',
         unit_test_bundle: 'wrapper',
         watch_app: 'wrapper',

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/xcode/package.json
----------------------------------------------------------------------
diff --git a/node_modules/xcode/package.json b/node_modules/xcode/package.json
index c148830..fb2a1a8 100644
--- a/node_modules/xcode/package.json
+++ b/node_modules/xcode/package.json
@@ -1,19 +1,19 @@
 {
   "_args": [
     [
-      "xcode@*",
-      "d:\\cordova\\cordova-ios"
+      "xcode@^0.8.5",
+      "D:\\Cordova\\cordova-ios"
     ]
   ],
-  "_from": "xcode@*",
-  "_id": "xcode@0.8.5",
+  "_from": "xcode@>=0.8.5 <0.9.0",
+  "_id": "xcode@0.8.7",
   "_inCache": true,
   "_installable": true,
   "_location": "/xcode",
   "_nodeVersion": "4.2.6",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/xcode-0.8.5.tgz_1462559690514_0.4250722003635019"
+    "tmp": "tmp/xcode-0.8.7.tgz_1463581469714_0.6752443755976856"
   },
   "_npmUser": {
     "email": "anis.kadri@gmail.com",
@@ -23,20 +23,20 @@
   "_phantomChildren": {},
   "_requested": {
     "name": "xcode",
-    "raw": "xcode@*",
-    "rawSpec": "*",
+    "raw": "xcode@^0.8.5",
+    "rawSpec": "^0.8.5",
     "scope": null,
-    "spec": "*",
+    "spec": ">=0.8.5 <0.9.0",
     "type": "range"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/xcode/-/xcode-0.8.5.tgz",
-  "_shasum": "0b9caa1ef14a60504f3993f7122581909a28d34e",
+  "_resolved": "https://registry.npmjs.org/xcode/-/xcode-0.8.7.tgz",
+  "_shasum": "aab86d999d4019f76c573c62dc392fbd1aaa3408",
   "_shrinkwrap": null,
-  "_spec": "xcode@*",
-  "_where": "d:\\cordova\\cordova-ios",
+  "_spec": "xcode@^0.8.5",
+  "_where": "D:\\Cordova\\cordova-ios",
   "author": {
     "email": "alunny@gmail.com",
     "name": "Andrew Lunny"
@@ -71,7 +71,7 @@
     }
   ],
   "dependencies": {
-    "node-uuid": "1.3.3",
+    "node-uuid": "1.4.7",
     "pegjs": "0.6.2",
     "simple-plist": "0.0.4"
   },
@@ -81,13 +81,13 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "0b9caa1ef14a60504f3993f7122581909a28d34e",
-    "tarball": "https://registry.npmjs.org/xcode/-/xcode-0.8.5.tgz"
+    "shasum": "aab86d999d4019f76c573c62dc392fbd1aaa3408",
+    "tarball": "https://registry.npmjs.org/xcode/-/xcode-0.8.7.tgz"
   },
   "engines": {
     "node": ">=0.6.7"
   },
-  "gitHead": "2e9a353d008afb0487c5498f4386eec722a76eef",
+  "gitHead": "941ed7ceb200759e34b28f98c83e4d07494bc5f5",
   "homepage": "https://github.com/alunny/node-xcode#readme",
   "main": "index.js",
   "maintainers": [
@@ -117,5 +117,5 @@
   "scripts": {
     "test": "nodeunit test/parser test"
   },
-  "version": "0.8.5"
+  "version": "0.8.7"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/xmlbuilder/package.json
----------------------------------------------------------------------
diff --git a/node_modules/xmlbuilder/package.json b/node_modules/xmlbuilder/package.json
index a7331b0..f6a5c74 100644
--- a/node_modules/xmlbuilder/package.json
+++ b/node_modules/xmlbuilder/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "xmlbuilder@4.0.0",
-      "/Users/omefire/Projects/cordova-ios/node_modules/plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\plist"
     ]
   ],
   "_from": "xmlbuilder@4.0.0",
@@ -31,7 +31,7 @@
   "_shasum": "98b8f651ca30aa624036f127d11cc66dc7b907a3",
   "_shrinkwrap": null,
   "_spec": "xmlbuilder@4.0.0",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\plist",
   "author": {
     "email": "oozcitak@gmail.com",
     "name": "Ozgur Ozcitak"
@@ -54,7 +54,7 @@
   "directories": {},
   "dist": {
     "shasum": "98b8f651ca30aa624036f127d11cc66dc7b907a3",
-    "tarball": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz"
+    "tarball": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz"
   },
   "engines": {
     "node": ">=0.8.0"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/xmldom/package.json
----------------------------------------------------------------------
diff --git a/node_modules/xmldom/package.json b/node_modules/xmldom/package.json
index 36fcde8..7b5dff2 100644
--- a/node_modules/xmldom/package.json
+++ b/node_modules/xmldom/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "xmldom@0.1.x",
-      "/Users/omefire/Projects/cordova-ios/node_modules/plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\plist"
     ]
   ],
   "_from": "xmldom@>=0.1.0 <0.2.0",
@@ -33,7 +33,7 @@
   "_shasum": "10de4e5e964981f03c8cc72fadc08d14b6c3aa26",
   "_shrinkwrap": null,
   "_spec": "xmldom@0.1.x",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\plist",
   "author": {
     "email": "jindw@xidea.org",
     "name": "jindw",
@@ -68,7 +68,7 @@
   "directories": {},
   "dist": {
     "shasum": "10de4e5e964981f03c8cc72fadc08d14b6c3aa26",
-    "tarball": "http://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz"
+    "tarball": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz"
   },
   "engines": {
     "node": ">=0.1"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 7832966..9148622 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
     "uncrustify": "^0.6.1"
   },
   "dependencies": {
-    "cordova-common": "^1.2.0",
+    "cordova-common": "^1.3.0",
     "ios-sim": "^5.0.7",
     "nopt": "^3.0.6",
     "plist": "^1.2.0",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/tests/spec/unit/prepare.spec.js
----------------------------------------------------------------------
diff --git a/tests/spec/unit/prepare.spec.js b/tests/spec/unit/prepare.spec.js
index bfa5b3d..2a2c93a 100644
--- a/tests/spec/unit/prepare.spec.js
+++ b/tests/spec/unit/prepare.spec.js
@@ -28,6 +28,7 @@ var EventEmitter = require('events').EventEmitter;
 var Api = require('../../../bin/templates/scripts/cordova/Api');
 var prepare = rewire('../../../bin/templates/scripts/cordova/lib/prepare');
 var projectFile = require('../../../bin/templates/scripts/cordova/lib/projectFile');
+var FileUpdater = require('cordova-common').FileUpdater;
 
 var FIXTURES = path.join(__dirname, 'fixtures');
 
@@ -404,12 +405,11 @@ describe('prepare', function () {
     });
 
     describe('updateWww method', function() {
-        var rm, cp;
         var updateWww = prepare.__get__('updateWww');
+        var logFileOp = prepare.__get__('logFileOp');
 
         beforeEach(function () {
-            rm = spyOn(shell, 'rm');
-            cp = spyOn(shell, 'cp');
+            spyOn(FileUpdater, 'mergeAndUpdateDir').andReturn(true);
         });
 
         var project = {
@@ -417,21 +417,25 @@ describe('prepare', function () {
             locations: { www: path.join(iosProject, 'www') }
         };
 
-        it('should rm project-level www and cp in platform agnostic www', function() {
-            updateWww(project, p.locations);
-            expect(rm).toHaveBeenCalled();
-            expect(cp).toHaveBeenCalled();
-        });
-        it('should do nothing if merges directory does not exist', function() {
+        it('should update project-level www and with platform agnostic www and merges', function() {
             var merges_path = path.join(project.root, 'merges/ios');
+            shell.mkdir('-p', merges_path);
             updateWww(project, p.locations);
-            expect(cp).not.toHaveBeenCalledWith('-rf', merges_path, p.locations.www);
+            expect(FileUpdater.mergeAndUpdateDir).toHaveBeenCalledWith(
+                [ 'www', 'platforms/ios/platform_www', 'merges/ios' ],
+                'platforms/ios/www',
+                { rootDir : iosProject },
+                logFileOp);
         });
-        it('should copy merges path into www', function() {
+        it('should skip merges if merges directory does not exist', function() {
             var merges_path = path.join(project.root, 'merges/ios');
-            shell.mkdir('-p', merges_path);
+            shell.rm('-rf', merges_path);
             updateWww(project, p.locations);
-            expect(cp).toHaveBeenCalledWith('-rf', path.join(merges_path, '*'), p.locations.www);
+            expect(FileUpdater.mergeAndUpdateDir).toHaveBeenCalledWith(
+                [ 'www', 'platforms/ios/platform_www' ],
+                'platforms/ios/www',
+                { rootDir : iosProject },
+                logFileOp);
         });
     });
 });


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


[3/3] ios commit: CB-11117: Optimize prepare for ios platform, clean prepared files

Posted by sh...@apache.org.
CB-11117: Optimize prepare for ios platform, clean prepared files

Merge updated node modules
Fix node_modules exclusions in .gitignore
Fix failing unit tests for prepare
Use platform config.xml for clean

This closes #220

Signed-off-by: Shazron Abdullah <sh...@apache.org>


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

Branch: refs/heads/master
Commit: 3d3a746cf86f63908da513a7c12001ee6dac7ebb
Parents: 8ad8acb
Author: Jason Ginchereau <ja...@microsoft.com>
Authored: Tue Apr 26 16:01:02 2016 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Thu May 26 17:33:18 2016 -0700

----------------------------------------------------------------------
 .gitignore                                      |   5 +-
 bin/templates/scripts/cordova/Api.js            |   3 +
 bin/templates/scripts/cordova/clean             |   3 +
 bin/templates/scripts/cordova/lib/prepare.js    | 206 ++++++---
 node_modules/.bin/ios-sim                       |  16 +-
 node_modules/.bin/ios-sim.cmd                   |   7 +
 node_modules/.bin/nopt                          |  16 +-
 node_modules/.bin/nopt.cmd                      |   7 +
 node_modules/.bin/pegjs.cmd                     |   7 +
 node_modules/.bin/shjs                          |  16 +-
 node_modules/.bin/shjs.cmd                      |   7 +
 node_modules/.bin/uuid                          |  15 +
 node_modules/.bin/uuid.cmd                      |   7 +
 node_modules/abbrev/package.json                |   6 +-
 node_modules/ansi/package.json                  |   4 +-
 node_modules/balanced-match/.npmignore          |   7 +-
 node_modules/balanced-match/.travis.yml         |   3 -
 node_modules/balanced-match/Makefile            |   6 -
 node_modules/balanced-match/README.md           |   4 +-
 node_modules/balanced-match/example.js          |   5 -
 node_modules/balanced-match/index.js            |   8 +
 node_modules/balanced-match/package.json        |  40 +-
 node_modules/balanced-match/test/balanced.js    |  84 ----
 node_modules/base64-js/package.json             |   6 +-
 node_modules/big-integer/package.json           |   4 +-
 node_modules/bplist-creator/package.json        |   6 +-
 node_modules/bplist-parser/package.json         |   4 +-
 node_modules/brace-expansion/package.json       |  30 +-
 node_modules/concat-map/package.json            |   4 +-
 node_modules/cordova-common/RELEASENOTES.md     |  54 +--
 node_modules/cordova-common/cordova-common.js   |  50 ++-
 node_modules/cordova-common/package.json        |  43 +-
 .../src/ConfigChanges/ConfigFile.js             |  48 ++-
 .../cordova-common/src/CordovaLogger.js         |  10 +-
 node_modules/cordova-common/src/FileUpdater.js  | 422 +++++++++++++++++++
 .../cordova-common/src/PluginInfo/PluginInfo.js |   2 +-
 node_modules/cordova-common/src/events.js       |   2 +-
 .../cordova-common/src/util/addProperty.js      |  32 ++
 .../cordova-registry-mapper/package.json        |   6 +-
 node_modules/elementtree/package.json           |   4 +-
 node_modules/glob/package.json                  |   4 +-
 node_modules/inflight/.eslintrc                 |  17 -
 node_modules/inflight/package.json              |  45 +-
 node_modules/inflight/test.js                   |  97 -----
 node_modules/inherits/package.json              |   4 +-
 node_modules/ios-sim/.github/CONTRIBUTING.md    |  29 ++
 node_modules/ios-sim/.github/ISSUE_TEMPLATE.md  |  24 ++
 node_modules/ios-sim/node_modules/.bin/nopt     |  16 +-
 node_modules/ios-sim/node_modules/.bin/nopt.cmd |   7 +
 .../node_modules/bplist-parser/package.json     |  84 +++-
 .../ios-sim/node_modules/nopt/package.json      |  99 +++--
 node_modules/ios-sim/package.json               | 127 +++---
 node_modules/lodash-node/package.json           |   4 +-
 node_modules/lodash/package.json                |   6 +-
 node_modules/minimatch/package.json             |  17 +-
 node_modules/node-uuid/.npmignore               |   2 +
 node_modules/node-uuid/LICENSE.md               |  22 +-
 node_modules/node-uuid/README.md                |  69 ++-
 node_modules/node-uuid/bin/uuid                 |  26 ++
 node_modules/node-uuid/bower.json               |  23 +
 node_modules/node-uuid/component.json           |  25 ++
 node_modules/node-uuid/package.json             |  76 ++--
 node_modules/node-uuid/test/test.js             |  23 +-
 node_modules/node-uuid/uuid.js                  | 153 ++++---
 node_modules/nopt/package.json                  |  92 +++-
 node_modules/once/package.json                  |   4 +-
 node_modules/os-homedir/package.json            |   4 +-
 node_modules/os-tmpdir/package.json             |   4 +-
 node_modules/osenv/package.json                 |   4 +-
 node_modules/path-is-absolute/package.json      |   4 +-
 node_modules/pegjs/package.json                 |   4 +-
 node_modules/plist/package.json                 | 131 +++---
 node_modules/q/package.json                     | 164 ++++---
 node_modules/sax/package.json                   |   4 +-
 node_modules/semver/package.json                |   4 +-
 node_modules/shelljs/package.json               | 111 +++--
 node_modules/simctl/node_modules/.bin/shjs      |  16 +-
 node_modules/simctl/node_modules/.bin/shjs.cmd  |   7 +
 .../simctl/node_modules/shelljs/package.json    |   6 +-
 node_modules/simctl/package.json                |   6 +-
 .../node_modules/base64-js/package.json         |   4 +-
 .../node_modules/bplist-parser/package.json     |   4 +-
 .../node_modules/plist/package.json             |   4 +-
 .../node_modules/util-deprecate/package.json    |   4 +-
 .../node_modules/xmlbuilder/package.json        |   4 +-
 node_modules/simple-plist/package.json          |   4 +-
 node_modules/stream-buffers/package.json        |   4 +-
 node_modules/tail/package.json                  |   6 +-
 node_modules/underscore/package.json            |   4 +-
 node_modules/unorm/package.json                 |   6 +-
 node_modules/util-deprecate/package.json        |   6 +-
 node_modules/wrappy/package.json                |  41 +-
 node_modules/wrappy/test/basic.js               |  51 ---
 node_modules/xcode/lib/pbxFile.js               |  11 +-
 node_modules/xcode/lib/pbxProject.js            |  48 ++-
 node_modules/xcode/package.json                 |  34 +-
 node_modules/xmlbuilder/package.json            |   6 +-
 node_modules/xmldom/package.json                |   6 +-
 package.json                                    |   2 +-
 tests/spec/unit/prepare.spec.js                 |  30 +-
 100 files changed, 2034 insertions(+), 1018 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index a15f7cb..c7a2057 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,9 @@ tmp
 *.pbxuser
 xcuserdata
 console.log
-node_modules/
+node_modules/jshint
+node_modules/jasmine-node
+node_modules/rewire
+node_modules/istanbul
 coverage/
 npm-debug.log

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/bin/templates/scripts/cordova/Api.js
----------------------------------------------------------------------
diff --git a/bin/templates/scripts/cordova/Api.js b/bin/templates/scripts/cordova/Api.js
index ad67f8a..9a184d7 100644
--- a/bin/templates/scripts/cordova/Api.js
+++ b/bin/templates/scripts/cordova/Api.js
@@ -316,6 +316,9 @@ Api.prototype.clean = function(cleanOptions) {
     return require('./lib/check_reqs').run()
     .then(function () {
         return require('./lib/clean').run.call(self, cleanOptions);
+    })
+    .then(function () {
+        return require('./lib/prepare').clean.call(self, cleanOptions);
     });
 };
 

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/bin/templates/scripts/cordova/clean
----------------------------------------------------------------------
diff --git a/bin/templates/scripts/cordova/clean b/bin/templates/scripts/cordova/clean
index 8f7d303..56665c4 100755
--- a/bin/templates/scripts/cordova/clean
+++ b/bin/templates/scripts/cordova/clean
@@ -37,6 +37,9 @@ var opts = nopt({
 // Make buildOptions compatible with PlatformApi clean method spec
 opts.argv = opts.argv.original;
 
+// Skip cleaning prepared files when not invoking via cordova CLI.
+opts.noPrepare = true;
+
 require('./loggingHelper').adjustLoggerLevel(opts);
 
 new Api().clean(opts).done(function() {

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/bin/templates/scripts/cordova/lib/prepare.js
----------------------------------------------------------------------
diff --git a/bin/templates/scripts/cordova/lib/prepare.js b/bin/templates/scripts/cordova/lib/prepare.js
index 5451aea..d08f510 100644
--- a/bin/templates/scripts/cordova/lib/prepare.js
+++ b/bin/templates/scripts/cordova/lib/prepare.js
@@ -31,10 +31,11 @@ var ConfigParser = require('cordova-common').ConfigParser;
 var CordovaError = require('cordova-common').CordovaError;
 var projectFile = require('./projectFile');
 var configMunger = require('./configMunger');
+var FileUpdater = require('cordova-common').FileUpdater;
 
 /*jshint sub:true*/
 
-module.exports.prepare = function (cordovaProject) {
+module.exports.prepare = function (cordovaProject, options) {
     var self = this;
 
     this._config = updateConfigFile(cordovaProject.projectConfig,
@@ -47,14 +48,36 @@ module.exports.prepare = function (cordovaProject) {
         return updateProject(self._config, self.locations);
     })
     .then(function () {
-        handleIcons(cordovaProject.projectConfig, self.locations.xcodeCordovaProj);
-        handleSplashScreens(cordovaProject.projectConfig, self.locations.xcodeCordovaProj);
+        updateIcons(cordovaProject, self.locations);
+        updateSplashScreens(cordovaProject, self.locations);
     })
     .then(function () {
         events.emit('verbose', 'Prepared iOS project successfully');
     });
 };
 
+module.exports.clean = function (options) {
+    // A cordovaProject isn't passed into the clean() function, because it might have
+    // been called from the platform shell script rather than the CLI. Check for the
+    // noPrepare option passed in by the non-CLI clean script. If that's present, or if
+    // there's no config.xml found at the project root, then don't clean prepared files.
+    var projectRoot = path.resolve(this.root, '../..');
+    var projectConfigFile = path.join(projectRoot, 'config.xml');
+    if ((options && options.noPrepare) || !fs.existsSync(projectConfigFile) ||
+            !fs.existsSync(this.locations.configXml)) {
+        return Q();
+    }
+
+    var projectConfig = new ConfigParser(this.locations.configXml);
+
+    var self = this;
+    return Q().then(function () {
+        cleanWww(projectRoot, self.locations);
+        cleanIcons(projectRoot, projectConfig, self.locations);
+        cleanSplashScreens(projectRoot, projectConfig, self.locations);
+    });
+};
+
 /**
  * Updates config files in project based on app's config.xml and config munge,
  *   generated by plugins.
@@ -91,29 +114,51 @@ function updateConfigFile(sourceConfig, configMunger, locations) {
 }
 
 /**
+ * Logs all file operations via the verbose event stream, indented.
+ */
+function logFileOp(message) {
+    events.emit('verbose', '  ' + message);
+}
+
+/**
  * Updates platform 'www' directory by replacing it with contents of
  *   'platform_www' and app www. Also copies project's overrides' folder into
  *   the platform 'www' folder
  *
- * @param   {Object}  cordovaProject    An object which describes cordova project.
- * @param   {Object}  destinations      An object that contains destination
+ * @param   {Object}  cordovaProject   An object which describes cordova project.
+ * @param   {boolean} destinations     An object that contains destinations
  *   paths for www files.
  */
 function updateWww(cordovaProject, destinations) {
-    shell.rm('-rf', destinations.www);
-    shell.mkdir('-p', destinations.www);
-    // Copy source files from project's www directory
-    shell.cp('-rf', path.join(cordovaProject.locations.www, '*'), destinations.www);
-    // Override www sources by files in 'platform_www' directory
-    shell.cp('-rf', path.join(destinations.platformWww, '*'), destinations.www);
+    var sourceDirs = [
+        path.relative(cordovaProject.root, cordovaProject.locations.www),
+        path.relative(cordovaProject.root, destinations.platformWww)
+    ];
 
     // If project contains 'merges' for our platform, use them as another overrides
     var merges_path = path.join(cordovaProject.root, 'merges', 'ios');
     if (fs.existsSync(merges_path)) {
         events.emit('verbose', 'Found "merges/ios" folder. Copying its contents into the iOS project.');
-        var overrides = path.join(merges_path, '*');
-        shell.cp('-rf', overrides, destinations.www);
+        sourceDirs.push(path.join('merges', 'ios'));
     }
+
+    var targetDir = path.relative(cordovaProject.root, destinations.www);
+    events.emit(
+        'verbose', 'Merging and updating files from [' + sourceDirs.join(', ') + '] to ' + targetDir);
+    FileUpdater.mergeAndUpdateDir(
+        sourceDirs, targetDir, { rootDir: cordovaProject.root }, logFileOp);
+}
+
+/**
+ * Cleans all files from the platform 'www' directory.
+ */
+function cleanWww(projectRoot, locations) {
+    var targetDir = path.relative(projectRoot, locations.www);
+    events.emit('verbose', 'Cleaning ' + targetDir);
+
+    // No source paths are specified, so mergeAndUpdateDir() will clear the target directory.
+    FileUpdater.mergeAndUpdateDir(
+        [], targetDir, { rootDir: projectRoot, all: true }, logFileOp);
 }
 
 /**
@@ -125,7 +170,6 @@ function updateWww(cordovaProject, destinations) {
  */
 function updateProject(platformConfig, locations) {
 
-
     // CB-6992 it is necessary to normalize characters
     // because node and shell scripts handles unicode symbols differently
     // We need to normalize the name to NFD form since iOS uses NFD unicode form
@@ -262,11 +306,7 @@ function handleBuildSettings(platformConfig, locations) {
     return Q();
 }
 
-function handleIcons(projectConfig, platformRoot) {
-
-    var icons = projectConfig.getIcons('ios');
-    var appRoot = path.dirname(projectConfig.path);
-
+function mapIconResources(icons, iconsDir) {
     // See https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html
     // for launch images sizes reference.
     var platformIcons = [
@@ -289,31 +329,64 @@ function handleIcons(projectConfig, platformRoot) {
         {dest: 'icon-83.5@2x.png', width: 167, height: 167}
     ];
 
-    var destIconsFolder;
-    var xcassetsExists = folderExists(path.join(platformRoot, 'Images.xcassets/'));
+    var pathMap = {};
+    platformIcons.forEach(function (item) {
+        var icon = icons.getBySize(item.width, item.height) || icons.getDefault();
+        if (icon) {
+            var target = path.join(iconsDir, item.dest);
+            pathMap[target] = icon.src;
+        }
+    });
+    return pathMap;
+}
+
+function getIconsDir(projectRoot, platformProjDir) {
+    var iconsDir;
+    var xcassetsExists = folderExists(path.join(projectRoot, platformProjDir, 'Images.xcassets/'));
 
     if (xcassetsExists) {
-        destIconsFolder = 'Images.xcassets/AppIcon.appiconset/';
+        iconsDir = path.join(platformProjDir, 'Images.xcassets/AppIcon.appiconset/');
     } else {
-        destIconsFolder = 'Resources/icons/';
+        iconsDir = path.join(platformProjDir, 'Resources/icons/');
     }
 
-    platformIcons.forEach(function (item) {
-        var icon = icons.getBySize(item.width, item.height) || icons.getDefault();
-        if (icon){
-            var src = path.join(appRoot, icon.src),
-                dest = path.join(platformRoot, destIconsFolder, item.dest);
-            events.emit('verbose', 'Copying icon from ' + src + ' to ' + dest);
-            shell.cp('-f', src, dest);
-        }
-    });
+    return iconsDir;
 }
 
-function handleSplashScreens(projectConfig, platformRoot) {
+function updateIcons(cordovaProject, locations) {
+    var icons = cordovaProject.projectConfig.getIcons('ios');
+
+    if (icons.length === 0) {
+        events.emit('verbose', 'This app does not have icons defined');
+        return;
+    }
+
+    var platformProjDir = path.relative(cordovaProject.root, locations.xcodeCordovaProj);
+    var iconsDir = getIconsDir(cordovaProject.root, platformProjDir);
+    var resourceMap = mapIconResources(icons, iconsDir);
+    events.emit('verbose', 'Updating icons at ' + iconsDir);
+    FileUpdater.updatePaths(
+        resourceMap, { rootDir: cordovaProject.root }, logFileOp);
+}
 
-    var appRoot = path.dirname(projectConfig.path);
+function cleanIcons(projectRoot, projectConfig, locations) {
+    var icons = projectConfig.getIcons('android');
+    if (icons.length > 0) {
+        var platformProjDir = path.relative(projectRoot, locations.xcodeCordovaProj);
+        var iconsDir = getIconsDir(projectRoot, platformProjDir);
+        var resourceMap = mapIconResources(icons, iconsDir);
+        Object.keys(resourceMap).forEach(function (targetIconPath) {
+            resourceMap[targetIconPath] = null;
+        });
+        events.emit('verbose', 'Cleaning icons at ' + iconsDir);
+
+        // Source paths are removed from the map, so updatePaths() will delete the target files.
+        FileUpdater.updatePaths(
+            resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
+    }
+}
 
-    var splashScreens = projectConfig.getSplashScreens('ios');
+function mapSplashScreenResources(splashScreens, splashScreensDir) {
     var platformSplashScreens = [
         {dest: 'Default~iphone.png', width: 320, height: 480},
         {dest: 'Default@2x~iphone.png', width: 640, height: 960},
@@ -327,24 +400,61 @@ function handleSplashScreens(projectConfig, platformRoot) {
         {dest: 'Default-Landscape-736h.png', width: 2208, height: 1242}
     ];
 
-    var destSplashFolder;
-    var xcassetsExists = folderExists(path.join(platformRoot, 'Images.xcassets/'));
+    var pathMap = {};
+    platformSplashScreens.forEach(function (item) {
+        var splash = splashScreens.getBySize(item.width, item.height);
+        if (splash) {
+            var target = path.join(splashScreensDir, item.dest);
+            pathMap[target] = splash.src;
+        }
+    });
+    return pathMap;
+}
+
+function getSplashScreensDir(projectRoot, platformProjDir) {
+    var splashScreensDir;
+    var xcassetsExists = folderExists(path.join(projectRoot, platformProjDir, 'Images.xcassets/'));
 
     if (xcassetsExists) {
-        destSplashFolder = 'Images.xcassets/LaunchImage.launchimage/';
+        splashScreensDir = path.join(platformProjDir, 'Images.xcassets/LaunchImage.launchimage/');
     } else {
-        destSplashFolder = 'Resources/splash/';
+        splashScreensDir = path.join(platformProjDir, 'Resources/splash/');
     }
 
-    platformSplashScreens.forEach(function(item) {
-        var splash = splashScreens.getBySize(item.width, item.height);
-        if (splash){
-            var src = path.join(appRoot, splash.src),
-                dest = path.join(platformRoot, destSplashFolder, item.dest);
-            events.emit('verbose', 'Copying splash from ' + src + ' to ' + dest);
-            shell.cp('-f', src, dest);
-        }
-    });
+    return splashScreensDir;
+}
+
+function updateSplashScreens(cordovaProject, locations) {
+    var splashScreens = cordovaProject.projectConfig.getSplashScreens('ios');
+
+    if (splashScreens.length === 0) {
+        events.emit('verbose', 'This app does not have splash screens defined');
+        return;
+    }
+
+    var platformProjDir = path.relative(cordovaProject.root, locations.xcodeCordovaProj);
+    var splashScreensDir = getSplashScreensDir(cordovaProject.root, platformProjDir);
+    var resourceMap = mapSplashScreenResources(splashScreens, splashScreensDir);
+    events.emit('verbose', 'Updating splash screens at ' + splashScreensDir);
+    FileUpdater.updatePaths(
+        resourceMap, { rootDir: cordovaProject.root }, logFileOp);
+}
+
+function cleanSplashScreens(projectRoot, projectConfig, locations) {
+    var splashScreens = projectConfig.getSplashScreens('android');
+    if (splashScreens.length > 0) {
+        var platformProjDir = path.relative(projectRoot, locations.xcodeCordovaProj);
+        var splashScreensDir = getSplashScreensDir(projectRoot, platformProjDir);
+        var resourceMap = mapIconResources(splashScreens, splashScreensDir);
+        Object.keys(resourceMap).forEach(function (targetSplashPath) {
+            resourceMap[targetSplashPath] = null;
+        });
+        events.emit('verbose', 'Cleaning splash screens at ' + splashScreensDir);
+
+        // Source paths are removed from the map, so updatePaths() will delete the target files.
+        FileUpdater.updatePaths(
+            resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
+    }
 }
 
 /**

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/.bin/uuid
----------------------------------------------------------------------
diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid
new file mode 100644
index 0000000..4f0e8e6
--- /dev/null
+++ b/node_modules/.bin/uuid
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../node-uuid/bin/uuid" "$@"
+  ret=$?
+else 
+  node  "$basedir/../node-uuid/bin/uuid" "$@"
+  ret=$?
+fi
+exit $ret

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/abbrev/package.json
----------------------------------------------------------------------
diff --git a/node_modules/abbrev/package.json b/node_modules/abbrev/package.json
index f33cf75..afd28ed 100644
--- a/node_modules/abbrev/package.json
+++ b/node_modules/abbrev/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "abbrev@1",
-      "/Users/omefire/Projects/cordova-ios/node_modules/ios-sim/node_modules/nopt"
+      "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim\\node_modules\\nopt"
     ]
   ],
   "_from": "abbrev@>=1.0.0 <2.0.0",
@@ -33,7 +33,7 @@
   "_shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
   "_shrinkwrap": null,
   "_spec": "abbrev@1",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/ios-sim/node_modules/nopt",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim\\node_modules\\nopt",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter"
@@ -49,7 +49,7 @@
   "directories": {},
   "dist": {
     "shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
-    "tarball": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
+    "tarball": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
   },
   "gitHead": "821d09ce7da33627f91bbd8ed631497ed6f760c2",
   "homepage": "https://github.com/isaacs/abbrev-js#readme",

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/balanced-match/package.json
----------------------------------------------------------------------
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
index f761b40..51c2262 100644
--- a/node_modules/balanced-match/package.json
+++ b/node_modules/balanced-match/package.json
@@ -1,38 +1,42 @@
 {
   "_args": [
     [
-      "balanced-match@^0.3.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\brace-expansion"
+      "balanced-match@^0.4.1",
+      "D:\\Cordova\\cordova-ios\\node_modules\\brace-expansion"
     ]
   ],
-  "_from": "balanced-match@>=0.3.0 <0.4.0",
-  "_id": "balanced-match@0.3.0",
+  "_from": "balanced-match@>=0.4.1 <0.5.0",
+  "_id": "balanced-match@0.4.1",
   "_inCache": true,
   "_installable": true,
   "_location": "/balanced-match",
-  "_nodeVersion": "4.2.1",
+  "_nodeVersion": "6.0.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144"
+  },
   "_npmUser": {
     "email": "julian@juliangruber.com",
     "name": "juliangruber"
   },
-  "_npmVersion": "2.14.7",
+  "_npmVersion": "3.8.6",
   "_phantomChildren": {},
   "_requested": {
     "name": "balanced-match",
-    "raw": "balanced-match@^0.3.0",
-    "rawSpec": "^0.3.0",
+    "raw": "balanced-match@^0.4.1",
+    "rawSpec": "^0.4.1",
     "scope": null,
-    "spec": ">=0.3.0 <0.4.0",
+    "spec": ">=0.4.1 <0.5.0",
     "type": "range"
   },
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz",
-  "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz",
+  "_shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
   "_shrinkwrap": null,
-  "_spec": "balanced-match@^0.3.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\brace-expansion",
+  "_spec": "balanced-match@^0.4.1",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\brace-expansion",
   "author": {
     "email": "mail@juliangruber.com",
     "name": "Julian Gruber",
@@ -44,14 +48,14 @@
   "dependencies": {},
   "description": "Match balanced character pairs, like \"{\" and \"}\"",
   "devDependencies": {
-    "tape": "~4.2.2"
+    "tape": "~4.5.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
-    "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
+    "shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
+    "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz"
   },
-  "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5",
+  "gitHead": "7004b289baaaab6a832f4901735e29d37cc2a863",
   "homepage": "https://github.com/juliangruber/balanced-match",
   "keywords": [
     "match",
@@ -94,5 +98,5 @@
     ],
     "files": "test/*.js"
   },
-  "version": "0.3.0"
+  "version": "0.4.1"
 }

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

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/bplist-creator/package.json
----------------------------------------------------------------------
diff --git a/node_modules/bplist-creator/package.json b/node_modules/bplist-creator/package.json
index a253169..0535c11 100644
--- a/node_modules/bplist-creator/package.json
+++ b/node_modules/bplist-creator/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "bplist-creator@0.0.4",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist"
     ]
   ],
   "_from": "bplist-creator@0.0.4",
@@ -31,7 +31,7 @@
   "_shasum": "4ac0496782e127a85c1d2026a4f5eb22a7aff991",
   "_shrinkwrap": null,
   "_spec": "bplist-creator@0.0.4",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist",
   "author": {
     "name": "https://github.com/nearinfinity/node-bplist-parser.git"
   },
@@ -49,7 +49,7 @@
   "directories": {},
   "dist": {
     "shasum": "4ac0496782e127a85c1d2026a4f5eb22a7aff991",
-    "tarball": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.4.tgz"
+    "tarball": "http://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.4.tgz"
   },
   "homepage": "https://github.com/nearinfinity/node-bplist-creator",
   "keywords": [

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/bplist-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/bplist-parser/package.json b/node_modules/bplist-parser/package.json
index f57f8ca..9d6dfd9 100644
--- a/node_modules/bplist-parser/package.json
+++ b/node_modules/bplist-parser/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "bplist-parser@^0.1.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "bplist-parser@>=0.1.0 <0.2.0",
@@ -32,7 +32,7 @@
   "_shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
   "_shrinkwrap": null,
   "_spec": "bplist-parser@^0.1.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "joe.ferner@nearinfinity.com",
     "name": "Joe Ferner"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/brace-expansion/package.json
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index 3f935cc..d962f2d 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -2,24 +2,24 @@
   "_args": [
     [
       "brace-expansion@^1.0.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\minimatch"
+      "D:\\Cordova\\cordova-ios\\node_modules\\minimatch"
     ]
   ],
   "_from": "brace-expansion@>=1.0.0 <2.0.0",
-  "_id": "brace-expansion@1.1.3",
+  "_id": "brace-expansion@1.1.4",
   "_inCache": true,
   "_installable": true,
   "_location": "/brace-expansion",
-  "_nodeVersion": "5.5.0",
+  "_nodeVersion": "6.0.0",
   "_npmOperationalInternal": {
-    "host": "packages-6-west.internal.npmjs.com",
-    "tmp": "tmp/brace-expansion-1.1.3.tgz_1455216688668_0.948847763473168"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/brace-expansion-1.1.4.tgz_1462130058897_0.14984136167913675"
   },
   "_npmUser": {
     "email": "julian@juliangruber.com",
     "name": "juliangruber"
   },
-  "_npmVersion": "3.3.12",
+  "_npmVersion": "3.8.6",
   "_phantomChildren": {},
   "_requested": {
     "name": "brace-expansion",
@@ -32,11 +32,11 @@
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz",
-  "_shasum": "46bff50115d47fc9ab89854abb87d98078a10991",
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz",
+  "_shasum": "464a204c77f482c085c2a36c456bbfbafb67a127",
   "_shrinkwrap": null,
   "_spec": "brace-expansion@^1.0.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\minimatch",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\minimatch",
   "author": {
     "email": "mail@juliangruber.com",
     "name": "Julian Gruber",
@@ -46,19 +46,19 @@
     "url": "https://github.com/juliangruber/brace-expansion/issues"
   },
   "dependencies": {
-    "balanced-match": "^0.3.0",
+    "balanced-match": "^0.4.1",
     "concat-map": "0.0.1"
   },
   "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
-    "tape": "4.4.0"
+    "tape": "4.5.1"
   },
   "directories": {},
   "dist": {
-    "shasum": "46bff50115d47fc9ab89854abb87d98078a10991",
-    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz"
+    "shasum": "464a204c77f482c085c2a36c456bbfbafb67a127",
+    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz"
   },
-  "gitHead": "f0da1bb668e655f67b6b2d660c6e1c19e2a6f231",
+  "gitHead": "1660b75d0bf03b022e7888b576cd5a4080692c1d",
   "homepage": "https://github.com/juliangruber/brace-expansion",
   "keywords": [],
   "license": "MIT",
@@ -100,5 +100,5 @@
     ],
     "files": "test/*.js"
   },
-  "version": "1.1.3"
+  "version": "1.1.4"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/concat-map/package.json
----------------------------------------------------------------------
diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json
index 16ebabf..01848c6 100644
--- a/node_modules/concat-map/package.json
+++ b/node_modules/concat-map/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "concat-map@0.0.1",
-      "d:\\cordova\\cordova-ios\\node_modules\\brace-expansion"
+      "D:\\Cordova\\cordova-ios\\node_modules\\brace-expansion"
     ]
   ],
   "_from": "concat-map@0.0.1",
@@ -31,7 +31,7 @@
   "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
   "_shrinkwrap": null,
   "_spec": "concat-map@0.0.1",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\brace-expansion",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\brace-expansion",
   "author": {
     "email": "mail@substack.net",
     "name": "James Halliday",

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

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

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

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

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

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

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

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


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


[2/3] ios commit: CB-11117: Optimize prepare for ios platform, clean prepared files

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/cordova-common/src/util/addProperty.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/addProperty.js b/node_modules/cordova-common/src/util/addProperty.js
new file mode 100644
index 0000000..7dc4dc1
--- /dev/null
+++ b/node_modules/cordova-common/src/util/addProperty.js
@@ -0,0 +1,32 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+module.exports = function addProperty(module, property, modulePath, obj) {
+    
+    obj = obj || module.exports;
+    // Add properties as getter to delay load the modules on first invocation
+    Object.defineProperty(obj, property, {
+        configurable: true,
+        get: function () {
+            var delayLoadedModule = module.require(modulePath);
+            obj[property] = delayLoadedModule;
+            return delayLoadedModule;
+        }
+    });
+};

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/cordova-registry-mapper/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/package.json b/node_modules/cordova-registry-mapper/package.json
index e490576..17dd973 100644
--- a/node_modules/cordova-registry-mapper/package.json
+++ b/node_modules/cordova-registry-mapper/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "cordova-registry-mapper@^1.1.8",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "e244b9185b8175473bff6079324905115f83dc7c",
   "_shrinkwrap": null,
   "_spec": "cordova-registry-mapper@^1.1.8",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "name": "Steve Gill"
   },
@@ -47,7 +47,7 @@
   "directories": {},
   "dist": {
     "shasum": "e244b9185b8175473bff6079324905115f83dc7c",
-    "tarball": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz"
+    "tarball": "http://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz"
   },
   "gitHead": "00af0f028ec94154a364eeabe38b8e22320647bd",
   "homepage": "https://github.com/stevengill/cordova-registry-mapper#readme",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/elementtree/package.json
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/package.json b/node_modules/elementtree/package.json
index ae0e9b4..7eef8bc 100644
--- a/node_modules/elementtree/package.json
+++ b/node_modules/elementtree/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "elementtree@^0.1.6",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "elementtree@>=0.1.6 <0.2.0",
@@ -31,7 +31,7 @@
   "_shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
   "_shrinkwrap": null,
   "_spec": "elementtree@^0.1.6",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "name": "Rackspace US, Inc."
   },

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/glob/package.json
----------------------------------------------------------------------
diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json
index 5618bbf..df2942b 100644
--- a/node_modules/glob/package.json
+++ b/node_modules/glob/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "glob@^5.0.13",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "glob@>=5.0.13 <6.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
   "_shrinkwrap": null,
   "_spec": "glob@^5.0.13",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",

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

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/inherits/package.json
----------------------------------------------------------------------
diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json
index 2945f1e..6646bcc 100644
--- a/node_modules/inherits/package.json
+++ b/node_modules/inherits/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "inherits@2",
-      "d:\\cordova\\cordova-ios\\node_modules\\glob"
+      "D:\\Cordova\\cordova-ios\\node_modules\\glob"
     ]
   ],
   "_from": "inherits@>=2.0.0 <3.0.0",
@@ -31,7 +31,7 @@
   "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
   "_shrinkwrap": null,
   "_spec": "inherits@2",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\glob",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\glob",
   "browser": "./inherits_browser.js",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/ios-sim/.github/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/node_modules/ios-sim/.github/CONTRIBUTING.md b/node_modules/ios-sim/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..b132d71
--- /dev/null
+++ b/node_modules/ios-sim/.github/CONTRIBUTING.md
@@ -0,0 +1,29 @@
+## Contributing to ios-sim
+
+Github url: 
+
+        https://github.com/phonegap/ios-sim
+
+Git clone url: 
+
+        https://github.com/phonegap/ios-sim.git
+
+## Filing an issue
+
+Please run the commands below in your Terminal.app and include it in the issue:
+
+```
+1. sw_vers -productVersion
+2. ios-sim --version
+3. xcodebuild -version
+4. xcode-select --print-path
+5. gcc --version
+```
+Also include **command line arguments** you used for ios-sim.
+
+
+## Sending a Pull Request
+
+Please **create a topic branch** for your issue before submitting your pull request. You will be asked to re-submit if your pull request contains unrelated commits.
+
+Please elaborate regarding the problem the pull request is supposed to solve, and perhaps also link to any relevant issues the pull request is trying to fix.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/ios-sim/.github/ISSUE_TEMPLATE.md
----------------------------------------------------------------------
diff --git a/node_modules/ios-sim/.github/ISSUE_TEMPLATE.md b/node_modules/ios-sim/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..92a642a
--- /dev/null
+++ b/node_modules/ios-sim/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,24 @@
+## MUST READ BEFORE YOU FILE (DELETE THIS SECTION BEFORE FILING)
+
+Include the **command line arguments** you used for ios-sim.
+
+Don't forget to check out the [README](https://github.com/phonegap/ios-sim/blob/master/README.md) before filing this issue, to see if there are any known issues.
+
+# Expected behavior
+
+
+# Actual behavior.
+
+
+# Steps to reproduce the problem
+
+
+# System Specs
+
+Please run the commands below in your Terminal.app and include it in the issue. Check when done and include results below.
+
+- [ ] 1. sw_vers -productVersion
+- [ ] 2. ios-sim --version
+- [ ] 3. xcodebuild -version
+- [ ] 4. xcode-select --print-path
+- [ ] 5. gcc --version

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

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

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/ios-sim/node_modules/bplist-parser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/ios-sim/node_modules/bplist-parser/package.json b/node_modules/ios-sim/node_modules/bplist-parser/package.json
index 95879d0..e6488a5 100644
--- a/node_modules/ios-sim/node_modules/bplist-parser/package.json
+++ b/node_modules/ios-sim/node_modules/bplist-parser/package.json
@@ -1,36 +1,78 @@
 {
-  "name": "bplist-parser",
-  "version": "0.0.6",
+  "_args": [
+    [
+      "bplist-parser@^0.0.6",
+      "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim"
+    ]
+  ],
+  "_from": "bplist-parser@>=0.0.6 <0.0.7",
+  "_id": "bplist-parser@0.0.6",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/ios-sim/bplist-parser",
+  "_npmUser": {
+    "email": "joe@fernsroth.com",
+    "name": "joeferner"
+  },
+  "_npmVersion": "1.4.14",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "bplist-parser",
+    "raw": "bplist-parser@^0.0.6",
+    "rawSpec": "^0.0.6",
+    "scope": null,
+    "spec": ">=0.0.6 <0.0.7",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/ios-sim"
+  ],
+  "_resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz",
+  "_shasum": "38da3471817df9d44ab3892e27707bbbd75a11b9",
+  "_shrinkwrap": null,
+  "_spec": "bplist-parser@^0.0.6",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim",
+  "author": {
+    "email": "joe.ferner@nearinfinity.com",
+    "name": "Joe Ferner"
+  },
+  "bugs": {
+    "url": "https://github.com/nearinfinity/node-bplist-parser/issues"
+  },
+  "dependencies": {},
   "description": "Binary plist parser.",
-  "main": "bplistParser.js",
-  "scripts": {
-    "test": "./node_modules/nodeunit/bin/nodeunit test"
+  "devDependencies": {
+    "nodeunit": "~0.7.4"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "38da3471817df9d44ab3892e27707bbbd75a11b9",
+    "tarball": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz"
   },
+  "gitHead": "a2230a5df3c7014ffbe5761bcb091ea2d061b47b",
+  "homepage": "https://github.com/nearinfinity/node-bplist-parser",
   "keywords": [
     "bplist",
     "plist",
     "parser"
   ],
-  "author": {
-    "name": "Joe Ferner",
-    "email": "joe.ferner@nearinfinity.com"
-  },
   "license": "MIT",
-  "devDependencies": {
-    "nodeunit": "~0.7.4"
-  },
+  "main": "bplistParser.js",
+  "maintainers": [
+    {
+      "email": "joe@fernsroth.com",
+      "name": "joeferner"
+    }
+  ],
+  "name": "bplist-parser",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/nearinfinity/node-bplist-parser.git"
   },
-  "readme": "bplist-parser\n=============\n\nBinary Mac OS X Plist (property list) parser.\n\n## Installation\n\n```bash\n$ npm install bplist-parser\n```\n\n## Quick Examples\n\n```javascript\nvar bplist = require('bplist-parser');\n\nbplist.parseFile('myPlist.bplist', function(err, obj) {\n  if (err) throw err;\n\n  console.log(JSON.stringify(obj));\n});\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Near Infinity Corporation\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial p
 ortions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/nearinfinity/node-bplist-parser/issues"
+  "scripts": {
+    "test": "./node_modules/nodeunit/bin/nodeunit test"
   },
-  "homepage": "https://github.com/nearinfinity/node-bplist-parser#readme",
-  "_id": "bplist-parser@0.0.6",
-  "_shasum": "38da3471817df9d44ab3892e27707bbbd75a11b9",
-  "_resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz",
-  "_from": "bplist-parser@>=0.0.6 <0.0.7"
+  "version": "0.0.6"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/ios-sim/node_modules/nopt/package.json
----------------------------------------------------------------------
diff --git a/node_modules/ios-sim/node_modules/nopt/package.json b/node_modules/ios-sim/node_modules/nopt/package.json
index 73629b3..6e4ea06 100644
--- a/node_modules/ios-sim/node_modules/nopt/package.json
+++ b/node_modules/ios-sim/node_modules/nopt/package.json
@@ -1,60 +1,85 @@
 {
-  "name": "nopt",
-  "version": "1.0.9",
-  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
-  "author": {
-    "name": "Isaac Z. Schlueter",
+  "_args": [
+    [
+      "nopt@1.0.9",
+      "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim"
+    ]
+  ],
+  "_defaultsLoaded": true,
+  "_engineSupported": true,
+  "_from": "nopt@1.0.9",
+  "_id": "nopt@1.0.9",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/ios-sim/nopt",
+  "_nodeVersion": "v0.5.8-pre",
+  "_npmUser": {
     "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
+    "name": "isaacs"
   },
-  "main": "lib/nopt.js",
-  "scripts": {
-    "test": "node lib/nopt.js"
+  "_npmVersion": "1.0.30",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "nopt",
+    "raw": "nopt@1.0.9",
+    "rawSpec": "1.0.9",
+    "scope": null,
+    "spec": "1.0.9",
+    "type": "version"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/nopt.git"
+  "_requiredBy": [
+    "/ios-sim"
+  ],
+  "_resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz",
+  "_shasum": "3bc0d7cba7bfb0d5a676dbed7c0ebe48a4fd454e",
+  "_shrinkwrap": null,
+  "_spec": "nopt@1.0.9",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\ios-sim",
+  "author": {
+    "email": "i@izs.me",
+    "name": "Isaac Z. Schlueter",
+    "url": "http://blog.izs.me/"
   },
   "bin": {
     "nopt": "./bin/nopt.js"
   },
-  "license": {
-    "type": "MIT",
-    "url": "https://github.com/isaacs/nopt/raw/master/LICENSE"
+  "bugs": {
+    "url": "https://github.com/isaacs/nopt/issues"
   },
   "dependencies": {
     "abbrev": "1"
   },
-  "_npmUser": {
-    "name": "isaacs",
-    "email": "i@izs.me"
-  },
-  "_id": "nopt@1.0.9",
+  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
   "devDependencies": {},
+  "directories": {},
+  "dist": {
+    "shasum": "3bc0d7cba7bfb0d5a676dbed7c0ebe48a4fd454e",
+    "tarball": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz"
+  },
   "engines": {
     "node": "*"
   },
-  "_engineSupported": true,
-  "_npmVersion": "1.0.30",
-  "_nodeVersion": "v0.5.8-pre",
-  "_defaultsLoaded": true,
-  "dist": {
-    "shasum": "3bc0d7cba7bfb0d5a676dbed7c0ebe48a4fd454e",
-    "tarball": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/nopt/-/nopt-1.0.9.tgz"
+  "homepage": "https://github.com/isaacs/nopt#readme",
+  "license": {
+    "type": "MIT",
+    "url": "https://github.com/isaacs/nopt/raw/master/LICENSE"
   },
+  "main": "lib/nopt.js",
   "maintainers": [
     {
-      "name": "isaacs",
-      "email": "i@izs.me"
+      "email": "i@izs.me",
+      "name": "isaacs"
     }
   ],
-  "directories": {},
-  "_shasum": "3bc0d7cba7bfb0d5a676dbed7c0ebe48a4fd454e",
-  "_resolved": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/nopt/-/nopt-1.0.9.tgz",
-  "_from": "nopt@1.0.9",
-  "bugs": {
-    "url": "https://github.com/isaacs/nopt/issues"
-  },
+  "name": "nopt",
+  "optionalDependencies": {},
   "readme": "ERROR: No README data found!",
-  "homepage": "https://github.com/isaacs/nopt#readme"
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/nopt.git"
+  },
+  "scripts": {
+    "test": "node lib/nopt.js"
+  },
+  "version": "1.0.9"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/ios-sim/package.json
----------------------------------------------------------------------
diff --git a/node_modules/ios-sim/package.json b/node_modules/ios-sim/package.json
index ca55c48..c171494 100644
--- a/node_modules/ios-sim/package.json
+++ b/node_modules/ios-sim/package.json
@@ -1,81 +1,108 @@
 {
-  "name": "ios-sim",
-  "version": "5.0.8",
-  "preferGlobal": "true",
-  "description": "launch iOS apps into the iOS Simulator from the command line (Xcode 6.0+)",
-  "main": "ios-sim.js",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/phonegap/ios-sim.git"
+  "_args": [
+    [
+      "ios-sim@^5.0.7",
+      "D:\\Cordova\\cordova-ios"
+    ]
+  ],
+  "_from": "ios-sim@>=5.0.7 <6.0.0",
+  "_id": "ios-sim@5.0.8",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/ios-sim",
+  "_nodeVersion": "0.12.7",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/ios-sim-5.0.8.tgz_1458757739978_0.3562360794749111"
   },
-  "engines": {
-    "node": ">=0.10.0"
+  "_npmUser": {
+    "email": "shazron@gmail.com",
+    "name": "shazron"
   },
-  "keywords": [
-    "ios-sim",
-    "iOS Simulator"
+  "_npmVersion": "2.11.3",
+  "_phantomChildren": {
+    "abbrev": "1.0.7"
+  },
+  "_requested": {
+    "name": "ios-sim",
+    "raw": "ios-sim@^5.0.7",
+    "rawSpec": "^5.0.7",
+    "scope": null,
+    "spec": ">=5.0.7 <6.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/"
   ],
+  "_resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-5.0.8.tgz",
+  "_shasum": "20520bbcfdadb0b0cb08690b90969b6e60a9a796",
+  "_shrinkwrap": null,
+  "_spec": "ios-sim@^5.0.7",
+  "_where": "D:\\Cordova\\cordova-ios",
+  "author": {
+    "name": "Shazron Abdullah"
+  },
   "bin": {
     "ios-sim": "./bin/ios-sim"
   },
   "bugs": {
     "url": "https://github.com/phonegap/ios-sim/issues"
   },
-  "author": {
-    "name": "Shazron Abdullah"
-  },
-  "license": "MIT",
   "dependencies": {
-    "plist": "^1.2.0",
-    "simctl": "^0.0.9",
+    "bplist-parser": "^0.0.6",
     "nopt": "1.0.9",
-    "bplist-parser": "^0.0.6"
+    "plist": "^1.2.0",
+    "simctl": "^0.0.9"
   },
+  "description": "launch iOS apps into the iOS Simulator from the command line (Xcode 6.0+)",
   "devDependencies": {
     "jshint": "^2.9.1"
   },
-  "scripts": {
-    "test": "npm run jshint",
-    "jshint": "jshint src ./ios-sim.js"
-  },
-  "gitHead": "f0fc8160c262fe86ccaf8eeef1ff4ef22eb19b5c",
-  "homepage": "https://github.com/phonegap/ios-sim#readme",
-  "_id": "ios-sim@5.0.8",
-  "_shasum": "20520bbcfdadb0b0cb08690b90969b6e60a9a796",
-  "_from": "ios-sim@>=5.0.7 <6.0.0",
-  "_npmVersion": "2.11.3",
-  "_nodeVersion": "0.12.7",
-  "_npmUser": {
-    "name": "shazron",
-    "email": "shazron@gmail.com"
-  },
+  "directories": {},
   "dist": {
     "shasum": "20520bbcfdadb0b0cb08690b90969b6e60a9a796",
-    "tarball": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/ios-sim/-/ios-sim-5.0.8.tgz"
+    "tarball": "https://registry.npmjs.org/ios-sim/-/ios-sim-5.0.8.tgz"
+  },
+  "engines": {
+    "node": ">=0.10.0"
   },
+  "gitHead": "f0fc8160c262fe86ccaf8eeef1ff4ef22eb19b5c",
+  "homepage": "https://github.com/phonegap/ios-sim#readme",
+  "keywords": [
+    "ios-sim",
+    "iOS Simulator"
+  ],
+  "license": "MIT",
+  "main": "ios-sim.js",
   "maintainers": [
     {
-      "name": "macdonst",
-      "email": "simon.macdonald@gmail.com"
+      "email": "simon.macdonald@gmail.com",
+      "name": "macdonst"
     },
     {
-      "name": "purplecabbage",
-      "email": "purplecabbage@gmail.com"
+      "email": "purplecabbage@gmail.com",
+      "name": "purplecabbage"
     },
     {
-      "name": "shazron",
-      "email": "shazron@gmail.com"
+      "email": "shazron@gmail.com",
+      "name": "shazron"
     },
     {
-      "name": "stevegill",
-      "email": "stevengill97@gmail.com"
+      "email": "stevengill97@gmail.com",
+      "name": "stevegill"
     }
   ],
-  "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/ios-sim-5.0.8.tgz_1458757739978_0.3562360794749111"
+  "name": "ios-sim",
+  "optionalDependencies": {},
+  "preferGlobal": "true",
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/phonegap/ios-sim.git"
   },
-  "directories": {},
-  "_resolved": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/ios-sim/-/ios-sim-5.0.8.tgz",
-  "readme": "ERROR: No README data found!"
+  "scripts": {
+    "jshint": "jshint src ./ios-sim.js",
+    "test": "npm run jshint"
+  },
+  "version": "5.0.8"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/lodash-node/package.json
----------------------------------------------------------------------
diff --git a/node_modules/lodash-node/package.json b/node_modules/lodash-node/package.json
index 1d0a6cc..3226ff5 100644
--- a/node_modules/lodash-node/package.json
+++ b/node_modules/lodash-node/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "lodash-node@~2.4.1",
-      "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\xmlbuilder"
+      "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\xmlbuilder"
     ]
   ],
   "_from": "lodash-node@>=2.4.1 <2.5.0",
@@ -31,7 +31,7 @@
   "_shasum": "ea82f7b100c733d1a42af76801e506105e2a80ec",
   "_shrinkwrap": null,
   "_spec": "lodash-node@~2.4.1",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\xmlbuilder",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\simple-plist\\node_modules\\xmlbuilder",
   "author": {
     "email": "john.david.dalton@gmail.com",
     "name": "John-David Dalton",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/lodash/package.json
----------------------------------------------------------------------
diff --git a/node_modules/lodash/package.json b/node_modules/lodash/package.json
index c71eb9e..65596fd 100644
--- a/node_modules/lodash/package.json
+++ b/node_modules/lodash/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "lodash@^3.5.0",
-      "/Users/omefire/Projects/cordova-ios/node_modules/xmlbuilder"
+      "D:\\Cordova\\cordova-ios\\node_modules\\xmlbuilder"
     ]
   ],
   "_from": "lodash@>=3.5.0 <4.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6",
   "_shrinkwrap": null,
   "_spec": "lodash@^3.5.0",
-  "_where": "/Users/omefire/Projects/cordova-ios/node_modules/xmlbuilder",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\xmlbuilder",
   "author": {
     "email": "john.david.dalton@gmail.com",
     "name": "John-David Dalton",
@@ -74,7 +74,7 @@
   "directories": {},
   "dist": {
     "shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6",
-    "tarball": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
+    "tarball": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
   },
   "homepage": "https://lodash.com/",
   "icon": "https://lodash.com/icon.svg",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/minimatch/package.json
----------------------------------------------------------------------
diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json
index cd9b44b..6f0a1c9 100644
--- a/node_modules/minimatch/package.json
+++ b/node_modules/minimatch/package.json
@@ -1,11 +1,11 @@
 {
   "_args": [
     [
-      "minimatch@2 || 3",
-      "d:\\cordova\\cordova-ios\\node_modules\\glob"
+      "minimatch@^3.0.0",
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
-  "_from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
+  "_from": "minimatch@>=3.0.0 <4.0.0",
   "_id": "minimatch@3.0.0",
   "_inCache": true,
   "_installable": true,
@@ -19,20 +19,21 @@
   "_phantomChildren": {},
   "_requested": {
     "name": "minimatch",
-    "raw": "minimatch@2 || 3",
-    "rawSpec": "2 || 3",
+    "raw": "minimatch@^3.0.0",
+    "rawSpec": "^3.0.0",
     "scope": null,
-    "spec": ">=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
+    "spec": ">=3.0.0 <4.0.0",
     "type": "range"
   },
   "_requiredBy": [
+    "/cordova-common",
     "/glob"
   ],
   "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
   "_shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83",
   "_shrinkwrap": null,
-  "_spec": "minimatch@2 || 3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\glob",
+  "_spec": "minimatch@^3.0.0",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/.npmignore b/node_modules/node-uuid/.npmignore
index fd4f2b0..8886139 100644
--- a/node_modules/node-uuid/.npmignore
+++ b/node_modules/node-uuid/.npmignore
@@ -1,2 +1,4 @@
 node_modules
 .DS_Store
+.nyc_output
+coverage

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/LICENSE.md
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/LICENSE.md b/node_modules/node-uuid/LICENSE.md
index bcdddf9..652609b 100644
--- a/node_modules/node-uuid/LICENSE.md
+++ b/node_modules/node-uuid/LICENSE.md
@@ -1,3 +1,21 @@
-Copyright (c) 2010 Robert Kieffer
+The MIT License (MIT)
 
-Dual licensed under the [MIT](http://en.wikipedia.org/wiki/MIT_License) and [GPL](http://en.wikipedia.org/wiki/GNU_General_Public_License) licenses.
+Copyright (c)  2010-2012 Robert Kieffer 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/README.md
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/README.md b/node_modules/node-uuid/README.md
index a44d9a7..5cd8555 100644
--- a/node_modules/node-uuid/README.md
+++ b/node_modules/node-uuid/README.md
@@ -6,9 +6,13 @@ Features:
 
 * Generate RFC4122 version 1 or version 4 UUIDs
 * Runs in node.js and all browsers.
-* Cryptographically strong random # generation on supporting platforms
+* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').
+* Cryptographically strong random # generation
+  * `crypto.randomBytes(n)` in node.js
+  * `window.crypto.getRandomValues(ta)` in [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues#Browser_Compatibility)
 * 1.1K minified and gzip'ed  (Want something smaller?  Check this [crazy shit](https://gist.github.com/982883) out! )
 * [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)
+* Comes with a Command Line Interface for generating uuids on the command line
 
 ## Getting Started
 
@@ -46,7 +50,7 @@ Generate and return a RFC4122 v1 (timestamp-based) UUID.
 
 * `options` - (Object) Optional uuid state to apply. Properties may include:
 
-  * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomnly generated ID.  See note 1.
+  * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID.  See note 1.
   * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence.  Default: An internally maintained clockseq is used.
   * `msecs` - (Number | Date) Time in milliseconds since unix Epoch.  Default: The current time is used.
   * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.
@@ -159,13 +163,48 @@ uuid() has become uuid.v4(), and the `format` argument is now implicit in the `b
 
 The class of container created when generating binary uuid data if no buffer argument is specified.  This is expected to go away, with no replacement API.
 
+## Command Line Interface
+
+To use the executable, it's probably best to install this library globally.
+
+`npm install -g node-uuid`
+
+Usage:
+
+```
+USAGE: uuid [version] [options]
+
+
+options:
+
+--help                     Display this message and exit
+```
+
+`version` must be an RFC4122 version that is supported by this library, which is currently version 1 and version 4 (denoted by "v1" and "v4", respectively). `version` defaults to version 4 when not supplied.
+
+### Examples
+
+```
+> uuid
+3a91f950-dec8-4688-ba14-5b7bbfc7a563
+```
+
+```
+> uuid v1
+9d0b43e0-7696-11e3-964b-250efa37a98e
+```
+
+```
+> uuid v4
+6790ac7c-24ac-4f98-8464-42f6d98a53ae
+```
+
 ## Testing
 
 In node.js
 
 ```
-> cd test
-> node uuid.js
+npm test
 ```
 
 In Browser
@@ -180,7 +219,7 @@ Requires node.js
 
 ```
 npm install uuid uuid-js
-node test/benchmark.js
+node benchmark/benchmark.js
 ```
 
 For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)
@@ -189,11 +228,27 @@ For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-
 
 ## Release notes
 
-v1.3.2:
+### 1.4.6
+
+* Properly detect node crypto and whatwg crypto
+* Workaround phantomjs/browserify bug
+* Explicit check for `window` rather implicit this-global
+* Issue warning if Math.random() is being used
+* "use strict";
+* A few jshint / stylistic updates (=== and such)
+
+### 1.4.0
+
+* Improved module context detection
+* Removed public RNG functions
+
+### 1.3.2
+
 * Improve tests and handling of v1() options (Issue #24)
 * Expose RNG option to allow for perf testing with different generators
 
-v1.3:
+### 1.3.0
+
 * Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
 * Support for node.js crypto API
 * De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/bin/uuid
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/bin/uuid b/node_modules/node-uuid/bin/uuid
new file mode 100644
index 0000000..f732e99
--- /dev/null
+++ b/node_modules/node-uuid/bin/uuid
@@ -0,0 +1,26 @@
+#!/usr/bin/env node
+
+var path = require('path');
+var uuid = require(path.join(__dirname, '..'));
+
+var arg = process.argv[2];
+
+if ('--help' === arg) {
+  console.log('\n  USAGE: uuid [version] [options]\n\n');
+  console.log('  options:\n');
+  console.log('  --help                     Display this message and exit\n');
+  process.exit(0);
+}
+
+if (null == arg) {
+  console.log(uuid());
+  process.exit(0);
+}
+
+if ('v1' !== arg && 'v4' !== arg) {
+  console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
+  process.exit(1);
+}
+
+console.log(uuid[arg]());
+process.exit(0);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/bower.json
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/bower.json b/node_modules/node-uuid/bower.json
new file mode 100644
index 0000000..c0925e1
--- /dev/null
+++ b/node_modules/node-uuid/bower.json
@@ -0,0 +1,23 @@
+{
+  "name": "node-uuid",
+  "version": "1.4.7",
+  "homepage": "https://github.com/broofa/node-uuid",
+  "authors": [
+    "Robert Kieffer <ro...@broofa.com>"
+  ],
+  "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
+  "main": "uuid.js",
+  "keywords": [
+    "uuid",
+    "gid",
+    "rfc4122"
+  ],
+  "license": "MIT",
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ]
+}

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/component.json
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/component.json b/node_modules/node-uuid/component.json
new file mode 100644
index 0000000..3ff4633
--- /dev/null
+++ b/node_modules/node-uuid/component.json
@@ -0,0 +1,25 @@
+{
+  "name": "node-uuid",
+  "repo": "broofa/node-uuid",
+  "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
+  "version": "1.4.7",
+  "author": "Robert Kieffer <ro...@broofa.com>",
+  "contributors": [
+    {
+      "name": "Christoph Tavan <de...@tavan.de>",
+      "github": "https://github.com/ctavan"
+    }
+  ],
+  "keywords": [
+    "uuid",
+    "guid",
+    "rfc4122"
+  ],
+  "dependencies": {},
+  "development": {},
+  "main": "uuid.js",
+  "scripts": [
+    "uuid.js"
+  ],
+  "license": "MIT"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/package.json
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/package.json b/node_modules/node-uuid/package.json
index 680c3c7..36ab2a9 100644
--- a/node_modules/node-uuid/package.json
+++ b/node_modules/node-uuid/package.json
@@ -1,76 +1,92 @@
 {
   "_args": [
     [
-      "node-uuid@1.3.3",
-      "d:\\cordova\\cordova-ios\\node_modules\\xcode"
+      "node-uuid@1.4.7",
+      "D:\\Cordova\\cordova-ios\\node_modules\\xcode"
     ]
   ],
-  "_defaultsLoaded": true,
-  "_engineSupported": true,
-  "_from": "node-uuid@1.3.3",
-  "_id": "node-uuid@1.3.3",
+  "_from": "node-uuid@1.4.7",
+  "_id": "node-uuid@1.4.7",
   "_inCache": true,
   "_installable": true,
   "_location": "/node-uuid",
-  "_nodeVersion": "v0.4.6",
+  "_nodeVersion": "5.0.0",
   "_npmUser": {
-    "email": "robert@broofa.com",
-    "name": "broofa"
+    "email": "coolaj86@gmail.com",
+    "name": "coolaj86"
   },
-  "_npmVersion": "1.0.106",
+  "_npmVersion": "3.3.6",
   "_phantomChildren": {},
   "_requested": {
     "name": "node-uuid",
-    "raw": "node-uuid@1.3.3",
-    "rawSpec": "1.3.3",
+    "raw": "node-uuid@1.4.7",
+    "rawSpec": "1.4.7",
     "scope": null,
-    "spec": "1.3.3",
+    "spec": "1.4.7",
     "type": "version"
   },
   "_requiredBy": [
     "/xcode"
   ],
-  "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.3.3.tgz",
-  "_shasum": "d3db4d7b56810d9e4032342766282af07391729b",
+  "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
+  "_shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f",
   "_shrinkwrap": null,
-  "_spec": "node-uuid@1.3.3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\xcode",
+  "_spec": "node-uuid@1.4.7",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\xcode",
   "author": {
     "email": "robert@broofa.com",
     "name": "Robert Kieffer"
   },
+  "bin": {
+    "uuid": "./bin/uuid"
+  },
   "bugs": {
     "url": "https://github.com/broofa/node-uuid/issues"
   },
   "contributors": [
     {
+      "email": "coolaj86@gmail.com",
+      "name": "AJ ONeal"
+    },
+    {
       "email": "dev@tavan.de",
       "name": "Christoph Tavan"
     }
   ],
   "dependencies": {},
   "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
-  "devDependencies": {},
+  "devDependencies": {
+    "nyc": "^2.2.0"
+  },
   "directories": {},
   "dist": {
-    "shasum": "d3db4d7b56810d9e4032342766282af07391729b",
-    "tarball": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.3.3.tgz"
-  },
-  "engines": {
-    "node": "*"
+    "shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f",
+    "tarball": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
   },
-  "homepage": "https://github.com/broofa/node-uuid#readme",
+  "gitHead": "309512573ec1c60143c257157479a20f7f1f51cd",
+  "homepage": "https://github.com/broofa/node-uuid",
+  "installable": true,
   "keywords": [
-    "uuid",
     "guid",
-    "rfc4122"
+    "rfc4122",
+    "uuid"
   ],
   "lib": ".",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md"
+    }
+  ],
   "main": "./uuid.js",
   "maintainers": [
     {
       "email": "robert@broofa.com",
       "name": "broofa"
+    },
+    {
+      "email": "coolaj86@gmail.com",
+      "name": "coolaj86"
     }
   ],
   "name": "node-uuid",
@@ -78,8 +94,12 @@
   "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
-    "url": "git://github.com/broofa/node-uuid.git"
+    "url": "git+https://github.com/broofa/node-uuid.git"
+  },
+  "scripts": {
+    "coverage": "nyc npm test && nyc report",
+    "test": "node test/test.js"
   },
   "url": "http://github.com/broofa/node-uuid",
-  "version": "1.3.3"
+  "version": "1.4.7"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/test/test.js
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/test/test.js b/node_modules/node-uuid/test/test.js
index be23919..5f1113d 100644
--- a/node_modules/node-uuid/test/test.js
+++ b/node_modules/node-uuid/test/test.js
@@ -1,6 +1,9 @@
 if (!this.uuid) {
   // node.js
   uuid = require('../uuid');
+  if (!/_rb/.test(uuid._rng.toString())) {
+    throw new Error("should use crypto for node.js");
+  }
 }
 
 //
@@ -18,7 +21,7 @@ function _log(msg, type) {
       log: '\033[39m',
       warn: '\033[33m',
       error: '\033[31m'
-    }
+    };
     console[type](color[type] + msg + color.log);
   }
 }
@@ -66,7 +69,7 @@ compare('uuids with time option', [
   uuid.v1({msecs: TIME - 1}),
   uuid.v1({msecs: TIME}),
   uuid.v1({msecs: TIME + 1}),
-  uuid.v1({msecs: TIME + 28*24*3600*1000}),
+  uuid.v1({msecs: TIME + 28*24*3600*1000})
 ]);
 
 assert(
@@ -217,20 +220,8 @@ for (var version in generators) {
   var generator = generators[version];
   var buf = new uuid.BufferClass(16);
 
-  if (version == 'v4') {
-    ['mathRNG', 'whatwgRNG', 'nodeRNG'].forEach(function(rng) {
-      if (uuid[rng]) {
-        var options = {rng: uuid[rng]};
-        for (var i = 0, t = Date.now(); i < N; i++) generator(options);
-        rate('uuid.' + version + '() with ' + rng, t);
-      } else {
-        log('uuid.' + version + '() with ' + rng + ': not defined');
-      }
-    });
-  } else {
-    for (var i = 0, t = Date.now(); i < N; i++) generator();
-    rate('uuid.' + version + '()', t);
-  }
+  for (var i = 0, t = Date.now(); i < N; i++) generator();
+  rate('uuid.' + version + '()', t);
 
   for (var i = 0, t = Date.now(); i < N; i++) generator('binary');
   rate('uuid.' + version + '(\'binary\')', t);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/node-uuid/uuid.js
----------------------------------------------------------------------
diff --git a/node_modules/node-uuid/uuid.js b/node_modules/node-uuid/uuid.js
index 27f1d12..89c5b8f 100644
--- a/node_modules/node-uuid/uuid.js
+++ b/node_modules/node-uuid/uuid.js
@@ -1,58 +1,76 @@
-//     node-uuid/uuid.js
+//     uuid.js
 //
-//     Copyright (c) 2010 Robert Kieffer
-//     Dual licensed under the MIT and GPL licenses.
-//     Documentation and details at https://github.com/broofa/node-uuid
-(function() {
-  var _global = this;
-
-  // Unique ID creation requires a high quality random # generator, but
-  // Math.random() does not guarantee "cryptographic quality".  So we feature
-  // detect for more robust APIs, normalizing each method to return 128-bits
-  // (16 bytes) of random data.
-  var mathRNG, nodeRNG, whatwgRNG;
-
-  // Math.random()-based RNG.  All platforms, very fast, unknown quality
-  var _rndBytes = new Array(16);
-  mathRNG = function() {
-    var r, b = _rndBytes, i = 0;
-
-    for (var i = 0, r; i < 16; i++) {
-      if ((i & 0x03) == 0) r = Math.random() * 0x100000000;
-      b[i] = r >>> ((i & 0x03) << 3) & 0xff;
+//     Copyright (c) 2010-2012 Robert Kieffer
+//     MIT License - http://opensource.org/licenses/mit-license.php
+
+/*global window, require, define */
+(function(_window) {
+  'use strict';
+
+  // Unique ID creation requires a high quality random # generator.  We feature
+  // detect to determine the best RNG source, normalizing to a function that
+  // returns 128-bits of randomness, since that's what's usually required
+  var _rng, _mathRNG, _nodeRNG, _whatwgRNG, _previousRoot;
+
+  function setupBrowser() {
+    // Allow for MSIE11 msCrypto
+    var _crypto = _window.crypto || _window.msCrypto;
+
+    if (!_rng && _crypto && _crypto.getRandomValues) {
+      // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
+      //
+      // Moderately fast, high quality
+      try {
+        var _rnds8 = new Uint8Array(16);
+        _whatwgRNG = _rng = function whatwgRNG() {
+          _crypto.getRandomValues(_rnds8);
+          return _rnds8;
+        };
+        _rng();
+      } catch(e) {}
     }
 
-    return b;
-  }
-
-  // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
-  // WebKit only (currently), moderately fast, high quality
-  if (_global.crypto && crypto.getRandomValues) {
-    var _rnds = new Uint32Array(4);
-    whatwgRNG = function() {
-      crypto.getRandomValues(_rnds);
-
-      for (var c = 0 ; c < 16; c++) {
-        _rndBytes[c] = _rnds[c >> 2] >>> ((c & 0x03) * 8) & 0xff;
+    if (!_rng) {
+      // Math.random()-based (RNG)
+      //
+      // If all else fails, use Math.random().  It's fast, but is of unspecified
+      // quality.
+      var  _rnds = new Array(16);
+      _mathRNG = _rng = function() {
+        for (var i = 0, r; i < 16; i++) {
+          if ((i & 0x03) === 0) { r = Math.random() * 0x100000000; }
+          _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
+        }
+
+        return _rnds;
+      };
+      if ('undefined' !== typeof console && console.warn) {
+        console.warn("[SECURITY] node-uuid: crypto not usable, falling back to insecure Math.random()");
       }
-      return _rndBytes;
     }
   }
 
-  // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
-  // Node.js only, moderately fast, high quality
-  try {
-    var _rb = require('crypto').randomBytes;
-    nodeRNG = _rb && function() {
-      return _rb(16);
-    };
-  } catch (e) {}
+  function setupNode() {
+    // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
+    //
+    // Moderately fast, high quality
+    if ('function' === typeof require) {
+      try {
+        var _rb = require('crypto').randomBytes;
+        _nodeRNG = _rng = _rb && function() {return _rb(16);};
+        _rng();
+      } catch(e) {}
+    }
+  }
 
-  // Select RNG with best quality
-  var _rng = nodeRNG || whatwgRNG || mathRNG;
+  if (_window) {
+    setupBrowser();
+  } else {
+    setupNode();
+  }
 
   // Buffer class to use
-  var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array;
+  var BufferClass = ('function' === typeof Buffer) ? Buffer : Array;
 
   // Maps for number <-> hex string conversion
   var _byteToHex = [];
@@ -67,9 +85,9 @@
     var i = (buf && offset) || 0, ii = 0;
 
     buf = buf || [];
-    s.toLowerCase().replace(/[0-9a-f]{2}/g, function(byte) {
+    s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {
       if (ii < 16) { // Don't overflow!
-        buf[i + ii++] = _hexToByte[byte];
+        buf[i + ii++] = _hexToByte[oct];
       }
     });
 
@@ -121,17 +139,17 @@
 
     options = options || {};
 
-    var clockseq = options.clockseq != null ? options.clockseq : _clockseq;
+    var clockseq = (options.clockseq != null) ? options.clockseq : _clockseq;
 
     // UUID timestamps are 100 nano-second units since the Gregorian epoch,
     // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
     // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
     // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-    var msecs = options.msecs != null ? options.msecs : new Date().getTime();
+    var msecs = (options.msecs != null) ? options.msecs : new Date().getTime();
 
     // Per 4.2.1.2, use count of uuid's generated during the current clock
     // cycle to simulate higher resolution clock
-    var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;
+    var nsecs = (options.nsecs != null) ? options.nsecs : _lastNSecs + 1;
 
     // Time since last uuid creation (in msecs)
     var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
@@ -197,8 +215,8 @@
     // Deprecated - 'format' argument, as supported in v1.2
     var i = buf && offset || 0;
 
-    if (typeof(options) == 'string') {
-      buf = options == 'binary' ? new BufferClass(16) : null;
+    if (typeof(options) === 'string') {
+      buf = (options === 'binary') ? new BufferClass(16) : null;
       options = null;
     }
     options = options || {};
@@ -226,24 +244,29 @@
   uuid.parse = parse;
   uuid.unparse = unparse;
   uuid.BufferClass = BufferClass;
+  uuid._rng = _rng;
+  uuid._mathRNG = _mathRNG;
+  uuid._nodeRNG = _nodeRNG;
+  uuid._whatwgRNG = _whatwgRNG;
 
-  // Export RNG options
-  uuid.mathRNG = mathRNG;
-  uuid.nodeRNG = nodeRNG;
-  uuid.whatwgRNG = whatwgRNG;
-
-  if (typeof(module) != 'undefined') {
-    // Play nice with node.js
+  if (('undefined' !== typeof module) && module.exports) {
+    // Publish as node.js module
     module.exports = uuid;
+  } else if (typeof define === 'function' && define.amd) {
+    // Publish as AMD module
+    define(function() {return uuid;});
+
+
   } else {
-    // Play nice with browsers
-    var _previousRoot = _global.uuid;
+    // Publish as global (in browsers)
+    _previousRoot = _window.uuid;
 
     // **`noConflict()` - (browser only) to reset global 'uuid' var**
     uuid.noConflict = function() {
-      _global.uuid = _previousRoot;
+      _window.uuid = _previousRoot;
       return uuid;
-    }
-    _global.uuid = uuid;
+    };
+
+    _window.uuid = uuid;
   }
-}());
+})('undefined' !== typeof window ? window : null);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/nopt/package.json
----------------------------------------------------------------------
diff --git a/node_modules/nopt/package.json b/node_modules/nopt/package.json
index c758434..466ca5c 100644
--- a/node_modules/nopt/package.json
+++ b/node_modules/nopt/package.json
@@ -1,38 +1,88 @@
 {
-  "name": "nopt",
-  "version": "3.0.6",
-  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
+  "_args": [
+    [
+      "nopt@^3.0.6",
+      "D:\\Cordova\\cordova-ios"
+    ]
+  ],
+  "_from": "nopt@>=3.0.6 <4.0.0",
+  "_id": "nopt@3.0.6",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/nopt",
+  "_nodeVersion": "4.2.1",
+  "_npmUser": {
+    "email": "ogd@aoaioxxysz.net",
+    "name": "othiym23"
+  },
+  "_npmVersion": "2.14.10",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "nopt",
+    "raw": "nopt@^3.0.6",
+    "rawSpec": "^3.0.6",
+    "scope": null,
+    "spec": ">=3.0.6 <4.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+  "_shasum": "c6465dbf08abcd4db359317f79ac68a646b28ff9",
+  "_shrinkwrap": null,
+  "_spec": "nopt@^3.0.6",
+  "_where": "D:\\Cordova\\cordova-ios",
   "author": {
-    "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
+    "name": "Isaac Z. Schlueter",
     "url": "http://blog.izs.me/"
   },
-  "main": "lib/nopt.js",
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/nopt.git"
-  },
   "bin": {
     "nopt": "./bin/nopt.js"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/npm/nopt/issues"
+  },
   "dependencies": {
     "abbrev": "1"
   },
+  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
   "devDependencies": {
     "tap": "^1.2.0"
   },
-  "readme": "If you want to write an option parser, and have it be good, there are\ntwo ways to do it.  The Right Way, and the Wrong Way.\n\nThe Wrong Way is to sit down and write an option parser.  We've all done\nthat.\n\nThe Right Way is to write some complex configurable program with so many\noptions that you hit the limit of your frustration just trying to\nmanage them all, and defer it with duct-tape solutions until you see\nexactly to the core of the problem, and finally snap and write an\nawesome option parser.\n\nIf you want to write an option parser, don't write an option parser.\nWrite a package manager, or a source control system, or a service\nrestarter, or an operating system.  You probably won't end up with a\ngood one of those, but if you don't give up, and you are relentless and\ndiligent enough in your procrastination, you may just end up with a very\nnice option parser.\n\n## USAGE\n\n    // my-program.js\n    var nopt = require(\"nopt\")\n      , Stream = require
 (\"stream\").Stream\n      , path = require(\"path\")\n      , knownOpts = { \"foo\" : [String, null]\n                    , \"bar\" : [Stream, Number]\n                    , \"baz\" : path\n                    , \"bloo\" : [ \"big\", \"medium\", \"small\" ]\n                    , \"flag\" : Boolean\n                    , \"pick\" : Boolean\n                    , \"many1\" : [String, Array]\n                    , \"many2\" : [path]\n                    }\n      , shortHands = { \"foofoo\" : [\"--foo\", \"Mr. Foo\"]\n                     , \"b7\" : [\"--bar\", \"7\"]\n                     , \"m\" : [\"--bloo\", \"medium\"]\n                     , \"p\" : [\"--pick\"]\n                     , \"f\" : [\"--flag\"]\n                     }\n                 // everything is optional.\n                 // knownOpts and shorthands default to {}\n                 // arg list defaults to process.argv\n                 // slice defaults to 2\n      , parsed = nopt(knownOpts, shortHands, proces
 s.argv, 2)\n    console.log(parsed)\n\nThis would give you support for any of the following:\n\n```bash\n$ node my-program.js --foo \"blerp\" --no-flag\n{ \"foo\" : \"blerp\", \"flag\" : false }\n\n$ node my-program.js ---bar 7 --foo \"Mr. Hand\" --flag\n{ bar: 7, foo: \"Mr. Hand\", flag: true }\n\n$ node my-program.js --foo \"blerp\" -f -----p\n{ foo: \"blerp\", flag: true, pick: true }\n\n$ node my-program.js -fp --foofoo\n{ foo: \"Mr. Foo\", flag: true, pick: true }\n\n$ node my-program.js --foofoo -- -fp  # -- stops the flag parsing.\n{ foo: \"Mr. Foo\", argv: { remain: [\"-fp\"] } }\n\n$ node my-program.js --blatzk -fp # unknown opts are ok.\n{ blatzk: true, flag: true, pick: true }\n\n$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value\n{ blatzk: 1000, flag: true, pick: true }\n\n$ node my-program.js --no-blatzk -fp # unless they start with \"no-\"\n{ blatzk: false, flag: true, pick: true }\n\n$ node my-program.js --baz b/a/z # known paths are r
 esolved.\n{ baz: \"/Users/isaacs/b/a/z\" }\n\n# if Array is one of the types, then it can take many\n# values, and will always be an array.  The other types provided\n# specify what types are allowed in the list.\n\n$ node my-program.js --many1 5 --many1 null --many1 foo\n{ many1: [\"5\", \"null\", \"foo\"] }\n\n$ node my-program.js --many2 foo --many2 bar\n{ many2: [\"/path/to/foo\", \"path/to/bar\"] }\n```\n\nRead the tests at the bottom of `lib/nopt.js` for more examples of\nwhat this puppy can do.\n\n## Types\n\nThe following types are supported, and defined on `nopt.typeDefs`\n\n* String: A normal string.  No parsing is done.\n* path: A file system path.  Gets resolved against cwd if not absolute.\n* url: A url.  If it doesn't parse, it isn't accepted.\n* Number: Must be numeric.\n* Date: Must parse as a date. If it does, and `Date` is one of the options,\n  then it will return a Date object, not a string.\n* Boolean: Must be either `true` or `false`.  If an option is a boolean
 ,\n  then it does not need a value, and its presence will imply `true` as\n  the value.  To negate boolean flags, do `--no-whatever` or `--whatever\n  false`\n* NaN: Means that the option is strictly not allowed.  Any value will\n  fail.\n* Stream: An object matching the \"Stream\" class in node.  Valuable\n  for use when validating programmatically.  (npm uses this to let you\n  supply any WriteStream on the `outfd` and `logfd` config options.)\n* Array: If `Array` is specified as one of the types, then the value\n  will be parsed as a list of options.  This means that multiple values\n  can be specified, and that the value will always be an array.\n\nIf a type is an array of values not on this list, then those are\nconsidered valid values.  For instance, in the example above, the\n`--bloo` option can only be one of `\"big\"`, `\"medium\"`, or `\"small\"`,\nand any other value will be rejected.\n\nWhen parsing unknown fields, `\"true\"`, `\"false\"`, and `\"null\"` will be\ninterpr
 eted as their JavaScript equivalents.\n\nYou can also mix types and values, or multiple types, in a list.  For\ninstance `{ blah: [Number, null] }` would allow a value to be set to\neither a Number or null.  When types are ordered, this implies a\npreference, and the first type that can be used to properly interpret\nthe value will be used.\n\nTo define a new type, add it to `nopt.typeDefs`.  Each item in that\nhash is an object with a `type` member and a `validate` method.  The\n`type` member is an object that matches what goes in the type list.  The\n`validate` method is a function that gets called with `validate(data,\nkey, val)`.  Validate methods should assign `data[key]` to the valid\nvalue of `val` if it can be handled properly, or return boolean\n`false` if it cannot.\n\nYou can also call `nopt.clean(data, types, typeDefs)` to clean up a\nconfig object and remove its invalid properties.\n\n## Error Handling\n\nBy default, nopt outputs a warning to standard error when invalid
  values for\nknown options are found.  You can change this behavior by assigning a method\nto `nopt.invalidHandler`.  This method will be called with\nthe offending `nopt.invalidHandler(key, val, types)`.\n\nIf no `nopt.invalidHandler` is assigned, then it will console.error\nits whining.  If it is assigned to boolean `false` then the warning is\nsuppressed.\n\n## Abbreviations\n\nYes, they are supported.  If you define options like this:\n\n```javascript\n{ \"foolhardyelephants\" : Boolean\n, \"pileofmonkeys\" : Boolean }\n```\n\nThen this will work:\n\n```bash\nnode program.js --foolhar --pil\nnode program.js --no-f --pileofmon\n# etc.\n```\n\n## Shorthands\n\nShorthands are a hash of shorter option names to a snippet of args that\nthey expand to.\n\nIf multiple one-character shorthands are all combined, and the\ncombination does not unambiguously match any other option or shorthand,\nthen they will be broken up into their constituent parts.  For example:\n\n```json\n{ \"s\" : [\"
 --loglevel\", \"silent\"]\n, \"g\" : \"--global\"\n, \"f\" : \"--force\"\n, \"p\" : \"--parseable\"\n, \"l\" : \"--long\"\n}\n```\n\n```bash\nnpm ls -sgflp\n# just like doing this:\nnpm ls --loglevel silent --global --force --long --parseable\n```\n\n## The Rest of the args\n\nThe config object returned by nopt is given a special member called\n`argv`, which is an object with the following fields:\n\n* `remain`: The remaining args after all the parsing has occurred.\n* `original`: The args as they originally appeared.\n* `cooked`: The args after flags and shorthands are expanded.\n\n## Slicing\n\nNode programs are called with more or less the exact argv as it appears\nin C land, after the v8 and node-specific options have been plucked off.\nAs such, `argv[0]` is always `node` and `argv[1]` is always the\nJavaScript program being run.\n\nThat's usually not very useful to you.  So they're sliced off by\ndefault.  If you want them, then you can pass in `0` as the last\nargument, or any
  other number that you'd like to slice off the start of\nthe list.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/npm/nopt/issues"
+  "directories": {},
+  "dist": {
+    "shasum": "c6465dbf08abcd4db359317f79ac68a646b28ff9",
+    "tarball": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"
   },
+  "gitHead": "10a750c9bb99c1950160353459e733ac2aa18cb6",
   "homepage": "https://github.com/npm/nopt#readme",
-  "_id": "nopt@3.0.6",
-  "_shasum": "c6465dbf08abcd4db359317f79ac68a646b28ff9",
-  "_resolved": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/nopt/-/nopt-3.0.6.tgz",
-  "_from": "nopt@>=3.0.6 <4.0.0"
+  "license": "ISC",
+  "main": "lib/nopt.js",
+  "maintainers": [
+    {
+      "email": "i@izs.me",
+      "name": "isaacs"
+    },
+    {
+      "email": "ogd@aoaioxxysz.net",
+      "name": "othiym23"
+    },
+    {
+      "email": "kat@sykosomatic.org",
+      "name": "zkat"
+    }
+  ],
+  "name": "nopt",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/nopt.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "3.0.6"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/once/package.json
----------------------------------------------------------------------
diff --git a/node_modules/once/package.json b/node_modules/once/package.json
index 8834d11..ed066e3 100644
--- a/node_modules/once/package.json
+++ b/node_modules/once/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "once@^1.3.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\glob"
+      "D:\\Cordova\\cordova-ios\\node_modules\\glob"
     ]
   ],
   "_from": "once@>=1.3.0 <2.0.0",
@@ -33,7 +33,7 @@
   "_shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20",
   "_shrinkwrap": null,
   "_spec": "once@^1.3.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\glob",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\glob",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/os-homedir/package.json
----------------------------------------------------------------------
diff --git a/node_modules/os-homedir/package.json b/node_modules/os-homedir/package.json
index 9730a5e..516799b 100644
--- a/node_modules/os-homedir/package.json
+++ b/node_modules/os-homedir/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "os-homedir@^1.0.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\osenv"
+      "D:\\Cordova\\cordova-ios\\node_modules\\osenv"
     ]
   ],
   "_from": "os-homedir@>=1.0.0 <2.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "0d62bdf44b916fd3bbdcf2cab191948fb094f007",
   "_shrinkwrap": null,
   "_spec": "os-homedir@^1.0.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\osenv",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\osenv",
   "author": {
     "email": "sindresorhus@gmail.com",
     "name": "Sindre Sorhus",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/os-tmpdir/package.json
----------------------------------------------------------------------
diff --git a/node_modules/os-tmpdir/package.json b/node_modules/os-tmpdir/package.json
index 369a8dc..8142201 100644
--- a/node_modules/os-tmpdir/package.json
+++ b/node_modules/os-tmpdir/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "os-tmpdir@^1.0.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\osenv"
+      "D:\\Cordova\\cordova-ios\\node_modules\\osenv"
     ]
   ],
   "_from": "os-tmpdir@>=1.0.0 <2.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "e9b423a1edaf479882562e92ed71d7743a071b6e",
   "_shrinkwrap": null,
   "_spec": "os-tmpdir@^1.0.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\osenv",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\osenv",
   "author": {
     "email": "sindresorhus@gmail.com",
     "name": "Sindre Sorhus",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/osenv/package.json
----------------------------------------------------------------------
diff --git a/node_modules/osenv/package.json b/node_modules/osenv/package.json
index d3104eb..430c542 100644
--- a/node_modules/osenv/package.json
+++ b/node_modules/osenv/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "osenv@^0.1.3",
-      "d:\\cordova\\cordova-ios\\node_modules\\cordova-common"
+      "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common"
     ]
   ],
   "_from": "osenv@>=0.1.3 <0.2.0",
@@ -32,7 +32,7 @@
   "_shasum": "83cf05c6d6458fc4d5ac6362ea325d92f2754217",
   "_shrinkwrap": null,
   "_spec": "osenv@^0.1.3",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\cordova-common",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\cordova-common",
   "author": {
     "email": "i@izs.me",
     "name": "Isaac Z. Schlueter",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/path-is-absolute/package.json
----------------------------------------------------------------------
diff --git a/node_modules/path-is-absolute/package.json b/node_modules/path-is-absolute/package.json
index e36c1dd..33f17fa 100644
--- a/node_modules/path-is-absolute/package.json
+++ b/node_modules/path-is-absolute/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "path-is-absolute@^1.0.0",
-      "d:\\cordova\\cordova-ios\\node_modules\\glob"
+      "D:\\Cordova\\cordova-ios\\node_modules\\glob"
     ]
   ],
   "_from": "path-is-absolute@>=1.0.0 <2.0.0",
@@ -32,7 +32,7 @@
   "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
   "_shrinkwrap": null,
   "_spec": "path-is-absolute@^1.0.0",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\glob",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\glob",
   "author": {
     "email": "sindresorhus@gmail.com",
     "name": "Sindre Sorhus",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/pegjs/package.json
----------------------------------------------------------------------
diff --git a/node_modules/pegjs/package.json b/node_modules/pegjs/package.json
index ad12e19..b866120 100644
--- a/node_modules/pegjs/package.json
+++ b/node_modules/pegjs/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "pegjs@0.6.2",
-      "d:\\cordova\\cordova-ios\\node_modules\\xcode"
+      "D:\\Cordova\\cordova-ios\\node_modules\\xcode"
     ]
   ],
   "_defaultsLoaded": true,
@@ -36,7 +36,7 @@
   "_shasum": "74651f8a800e444db688e4eeae8edb65637a17a5",
   "_shrinkwrap": null,
   "_spec": "pegjs@0.6.2",
-  "_where": "d:\\cordova\\cordova-ios\\node_modules\\xcode",
+  "_where": "D:\\Cordova\\cordova-ios\\node_modules\\xcode",
   "author": {
     "email": "david@majda.cz",
     "name": "David Majda",

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/3d3a746c/node_modules/plist/package.json
----------------------------------------------------------------------
diff --git a/node_modules/plist/package.json b/node_modules/plist/package.json
index fd05954..925528b 100644
--- a/node_modules/plist/package.json
+++ b/node_modules/plist/package.json
@@ -1,22 +1,58 @@
 {
-  "name": "plist",
-  "description": "Mac OS X Plist parser/builder for Node.js and browsers",
-  "version": "1.2.0",
+  "_args": [
+    [
+      "plist@^1.2.0",
+      "D:\\Cordova\\cordova-ios"
+    ]
+  ],
+  "_from": "plist@>=1.2.0 <2.0.0",
+  "_id": "plist@1.2.0",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/plist",
+  "_nodeVersion": "5.0.0",
+  "_npmUser": {
+    "email": "reinstein.mike@gmail.com",
+    "name": "mreinstein"
+  },
+  "_npmVersion": "3.3.11",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "plist",
+    "raw": "plist@^1.2.0",
+    "rawSpec": "^1.2.0",
+    "scope": null,
+    "spec": ">=1.2.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/",
+    "/cordova-common",
+    "/ios-sim"
+  ],
+  "_resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
+  "_shasum": "084b5093ddc92506e259f874b8d9b1afb8c79593",
+  "_shrinkwrap": null,
+  "_spec": "plist@^1.2.0",
+  "_where": "D:\\Cordova\\cordova-ios",
   "author": {
-    "name": "Nathan Rajlich",
-    "email": "nathan@tootallnate.net"
+    "email": "nathan@tootallnate.net",
+    "name": "Nathan Rajlich"
+  },
+  "bugs": {
+    "url": "https://github.com/TooTallNate/node-plist/issues"
   },
   "contributors": [
     {
-      "name": "Hans Huebner",
-      "email": "hans.huebner@gmail.com"
+      "email": "hans.huebner@gmail.com",
+      "name": "Hans Huebner"
     },
     {
       "name": "Pierre Metrailler"
     },
     {
-      "name": "Mike Reinstein",
-      "email": "reinstein.mike@gmail.com"
+      "email": "reinstein.mike@gmail.com",
+      "name": "Mike Reinstein"
     },
     {
       "name": "Vladimir Tsvang"
@@ -25,68 +61,59 @@
       "name": "Mathieu D'Amours"
     }
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/node-plist.git"
-  },
-  "license": "MIT",
-  "keywords": [
-    "apple",
-    "browser",
-    "mac",
-    "plist",
-    "parser",
-    "xml"
-  ],
-  "main": "lib/plist.js",
   "dependencies": {
     "base64-js": "0.0.8",
+    "util-deprecate": "1.0.2",
     "xmlbuilder": "4.0.0",
-    "xmldom": "0.1.x",
-    "util-deprecate": "1.0.2"
+    "xmldom": "0.1.x"
   },
+  "description": "Mac OS X Plist parser/builder for Node.js and browsers",
   "devDependencies": {
     "browserify": "12.0.1",
     "mocha": "2.3.3",
     "multiline": "1.0.2",
     "zuul": "3.7.2"
   },
-  "scripts": {
-    "test": "make test"
-  },
-  "gitHead": "69520574f27864145192338b72e608fbe1bda6f7",
-  "bugs": {
-    "url": "https://github.com/TooTallNate/node-plist/issues"
-  },
-  "homepage": "https://github.com/TooTallNate/node-plist#readme",
-  "_id": "plist@1.2.0",
-  "_shasum": "084b5093ddc92506e259f874b8d9b1afb8c79593",
-  "_from": "plist@>=1.2.0 <2.0.0",
-  "_npmVersion": "3.3.11",
-  "_nodeVersion": "5.0.0",
-  "_npmUser": {
-    "name": "mreinstein",
-    "email": "reinstein.mike@gmail.com"
-  },
+  "directories": {},
   "dist": {
     "shasum": "084b5093ddc92506e259f874b8d9b1afb8c79593",
-    "tarball": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/plist/-/plist-1.2.0.tgz"
+    "tarball": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz"
   },
+  "gitHead": "69520574f27864145192338b72e608fbe1bda6f7",
+  "homepage": "https://github.com/TooTallNate/node-plist#readme",
+  "keywords": [
+    "apple",
+    "browser",
+    "mac",
+    "plist",
+    "parser",
+    "xml"
+  ],
+  "license": "MIT",
+  "main": "lib/plist.js",
   "maintainers": [
     {
-      "name": "TooTallNate",
-      "email": "nathan@tootallnate.net"
+      "email": "nathan@tootallnate.net",
+      "name": "TooTallNate"
     },
     {
-      "name": "tootallnate",
-      "email": "nathan@tootallnate.net"
+      "email": "nathan@tootallnate.net",
+      "name": "tootallnate"
     },
     {
-      "name": "mreinstein",
-      "email": "reinstein.mike@gmail.com"
+      "email": "reinstein.mike@gmail.com",
+      "name": "mreinstein"
     }
   ],
-  "directories": {},
-  "_resolved": "http://visustar.francelab.fr.ibm.com:8081/nexus/content/groups/mobile-npm-all/plist/-/plist-1.2.0.tgz",
-  "readme": "ERROR: No README data found!"
+  "name": "plist",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/node-plist.git"
+  },
+  "scripts": {
+    "test": "make test"
+  },
+  "version": "1.2.0"
 }


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