cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject [1/3] ios commit: CB-11117: Optimize prepare for ios platform, clean prepared files
Date Fri, 27 May 2016 00:36:25 GMT
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 “[Pyramid of\nDoom][POD]”: 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’s caught and handled.  (Here `promisedStepN` is\na version of `stepN` that returns a promise.)\n\nThe callback approach is called an “inversion of control”.\nA function that accepts a callback instead of a return value\nis saying, “Don’t call me, I’ll call you.”.  Promises\n[un-invert][IOC] the inversion, cleanly separating the input\narguments from control flow arguments.  This simplifies the\nuse and creation of API’s, 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’m\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    “become” 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’s 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 “spreads” 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’s 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’t 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’t need to defer, you can use the “static”\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’t 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—like\n`Q.nfcall`—\"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 “long stack traces,” 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–2015 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


Mime
View raw message