You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/04/13 03:08:32 UTC

[50/53] [abbrv] [partial] CB-6440 create - use shelljs rather than custom copy function

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/async/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/package.json b/blackberry10/node_modules/async/package.json
index 5aa1417..2d2361d 100644
--- a/blackberry10/node_modules/async/package.json
+++ b/blackberry10/node_modules/async/package.json
@@ -38,5 +38,9 @@
   "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, each…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n\nas
 ync.parallel([\n    function(){ ... },\n    function(){ ... }\n], callback);\n\nasync.series([\n    function(){ ... },\n    function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n  squareExponent: 2,\n  square: function(number, callback){ \n    var result = Math.pow(number, this.squareExponent);\n    setTimeout(function(){\n      callback(null, result);\n    }, 200);\n  }\n};\n\nasync.map([1,
  2, 3], AsyncSquaringLibrary.square, function(err, result){\n  // result is [NaN, NaN, NaN]\n  // This fails because the `this.squareExponent` expression in the square\n  // function is not evaluated in the context of AsyncSquaringLibrary, and is\n  // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n  // result is [1, 4, 9]\n  // With the help of bind we can attach a context to the iterator before\n  // passing it to async. Now the square function will be executed in its \n  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n  // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n    npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Bro
 wser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n    async.map(data, asyncProcess, function(err, results){\n        alert(results);\n    });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoiz
 e)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callbac
 k which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time
 .\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------
 ------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which c
 an be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not proce
 ssed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], 1, fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a n
 ew array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(results) - A callback which is called after all the iterator\n  functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr,
  iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. F
 or performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n  array to produce the next step in the reduction. The iterator is passed a\n  callback(err, reduction) which accepts an optional error as its first \n  argument, and the state of the reduction as the second. If an error is \n  passed to the callback, the reduction is stopped and the main callback is \n  immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n  functions have finished. Result is the reduced value.\n\n__Example__\n\n`
 ``js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n    // pointless async:\n    process.nextTick(function(){\n        callback(null, memo + item)\n    });\n}, function(err, result){\n    // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Argu
 ments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n    // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the tr
 uth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, sortValue) which must be called once it\n  has completed with an error (which can be null) and a value to use as the sort\n  criteria.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is the items from\n  the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n    fs.stat(file, function(err, stats){\n        callback(err, stats.mtime);\n    });\n}, function(err, results){\n    // results is now the original array of files so
 rted by\n    // modified date\n});\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  either true or false depending on the values of the 
 async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n  functions have finished. Result will be either true or false depending on\n  the 
 values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, results) which must be called once it \n  has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have f
 inished, or an error has occurred. Results is an array containing\n  the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n    // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each proper
 ty will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.series([\n    function(callback){\n        // do some stuff ...\n        callback(null, 'one');\n    },\n    function(callback){\n        // do some more stuff ...\n        callback(null, 'two');\n    }\n],\n// optional callback\nfunction(err, results){\n    // results is now equal to ['one', 'two']\n});\n\n\n// an example using an ob
 ject instead of an array\nasync.series({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a mo
 re readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'one');\n        }, 200);\n    },\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'two');\n        }, 100);\n    }\n],\n// optional callback\nfunction(err, results){\n    // the results array will equal ['one','two'] even though\n    // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an 
 array\nasync.parallel({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* limit - The maximum num
 ber of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n  passed a callback(err) which must be called once it has completed with an \n  optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n  execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n    function () { return count < 5; },\n    function (callback) {\n        count++;\n        setT
 imeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in seri
 es, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n  callback(err, result1, result2, ...) it must call on completion. The first\n  argument is an error (which can be null) and any further arguments will be \n  passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([
 \n    function(callback){\n        callback(null, 'one', 'two');\n    },\n    function(arg1, arg2, callback){\n        callback(null, 'three');\n    },\n    function(arg1, callback){\n        // arg1 now equals 'three'\n        callback(null, 'done');\n    }\n], function (err, result) {\n   // result now equals 'done'    \n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n    setTimeout(function () {\n        callback(null, n + 1);\n   
  }, 10);\n}\n\nfunction mul3(n, callback) {\n    setTimeout(function () {\n        callback(null, n * 3);\n    }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n   // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n  functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// p
 artial application example:\nasync.each(\n    buckets,\n    async.applyEach([enableSearch, updateSchema]),\n    callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n  task, which must call its callback(err) argument when finished, with an \n  optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n  
 run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n  run in parallel. This property can be changed after a queue is created to\n  alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last ite
 m from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n    console.log('hello ' + task.name);\n    callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n    console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a cargo object with th
 e specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n  queued tasks, which must call its callback(err) argument when finished, with \n  an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n  processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n  process per round. This property can be changed after a cargo is created to\n  alter the payload on-the-fly.\n* push(task, [
 callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n    for(var i=0; i<tasks.length; i++){\n      console.log('hello ' + tasks[i].name);\n    }\n    callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar')
 ;\n});\ncargo.push({name: 'baz'}, function (err) {\n    console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n  readData: async.apply(
 fs.readFile, 'data.txt', 'utf-8');\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n  readData: function(cb, results){\n    fs.readFile('data.txt', 'utf-8', cb);\n  }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n  requirements, with the function itself the last item in the array. The key\n  used for each function or array is used when specifying requirements. The \n  function receives two arguments: (1) a callback(err, result) which must be \n  called when finished, passing an error (which can be null) and the result of \n  the function's execution, and (2) a results object, containing the results of\n  the previously executed functions.\n* callback(err, results) - 
 An optional callback which is called when all the\n  tasks have been completed. The callback will receive an error as an argument\n  if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n  \n\n__Example__\n\n```js\nasync.auto({\n    get_data: function(callback){\n        // async code to get some data\n    },\n    make_folder: function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    },\n    write_file: ['get_data', 'make_folder', function(callback){\n        // once there is some data and the directory exists,\n        // write the data to a file in the directory\n        callback(null, filename);\n    }],\n    email_link: ['write_file', function(callback, results){\n        // once the file is written let's email a link to it...\n        // resul
 ts.write_file contains the filename returned by write_file.\n    }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n    function(callback){\n        // async code to get some data\n    },\n    function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    }\n],\nfunction(err, results){\n    async.series([\n        function(callback){\n            // once there is some data and the directory exists,\n            // write the data to a file in the directory\n        },\n        function(callback){\n            // once the file is written let's email a link to it...\n        }\n    ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iter
 ator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n    function(){ sys.p('one'); },\n    function(){ sys.p('two'); },\n    function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combine
 d with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n    async.apply(fs.writeFile, 'testfile1', 'test1'),\n    async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n    function(callback){\n        fs.writeFile('testfile1', 'test1', callback);\n    },\n    function(callback){\n        fs.writeFile('testfile2', 'test2', callback);\n    }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n
 \n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n    call_order.push('two');\n    // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some c
 omplicated async factory\nvar createUser = function(id, callback) {\n  callback(null, {\n    id: 'user' + id\n  })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n    createUser(n, function(err, user) {\n      next(err, user)\n    })\n}, function(err, users) {\n  // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you
  to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n  results, it has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n    // do something\n    callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n    // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n
 __Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, 'hello ' + name);\n    }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js
 \nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, {hello: name});\n    }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n",
   "readmeFilename": "README.md",
   "_id": "async@0.2.9",
-  "_from": "async@0.2.9"
+  "dist": {
+    "shasum": "1d805cdf65c236e4b351b9265610066e4ae4185c"
+  },
+  "_from": "async@0.2.9",
+  "_resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz"
 }

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/elementtree/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/package.json b/blackberry10/node_modules/elementtree/package.json
index 5a637e9..749a8d7 100644
--- a/blackberry10/node_modules/elementtree/package.json
+++ b/blackberry10/node_modules/elementtree/package.json
@@ -55,5 +55,5 @@
     "url": "https://github.com/racker/node-elementtree/issues"
   },
   "_id": "elementtree@0.1.5",
-  "_from": "elementtree@0.1.x"
+  "_from": "elementtree@0.1.5"
 }

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/exit/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/package.json b/blackberry10/node_modules/exit/package.json
index 57841ee..0c6977a 100644
--- a/blackberry10/node_modules/exit/package.json
+++ b/blackberry10/node_modules/exit/package.json
@@ -47,9 +47,5 @@
   "readme": "# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit)\n\nA replacement for process.exit that ensures stdio are fully drained before exiting.\n\nTo make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`.\n\nSee [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference.\n\nTested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18.\n\nBased on some code by [@vladikoff](https://github.com/vladikoff).\n\n## Getting Started\nInstall the module with: `npm install exit`\n\n```javascript\nvar exit = require('exit');\n\n// These lines should appear in the output, EVEN ON WINDOWS.\nconsole.log(\"omg\");\nconsole.error(\"yay\");\n\n// process.exit
 (5);\nexit(5);\n\n// These lines shouldn't appear in the output.\nconsole.log(\"wtf\");\nconsole.error(\"bro\");\n```\n\n## Don't believe me? Try it for yourself.\n\nIn Windows, clone the repo and cd to the `test\\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly.\n\nThis test was done using cmd.exe, but you can see the same results using `| grep \"std\"` in either PowerShell or git-bash.\n\n```\nC:\\node-exit\\test\\fixtures>node log.js 0 10 stdout stderr 2>&1 | find \"std\"\nstdout 0\nstderr 0\nstdout 1\nstderr 1\nstdout 2\nstderr 2\nstdout 3\nstderr 3\nstdout 4\nstderr 4\nstdout 5\nstderr 5\nstdout 6\nstderr 6\nstdout 7\nstderr 7\nstdout 8\nstderr 8\nstdout 9\nstderr 9\n\nC:\\node-exit\\test\\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find \"std\"\n\nC:\\node-exit\\test\\fixtures>\n```\n\n## Contributing\nIn lieu o
 f a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now!  \n2013-09-20 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2013 \"Cowboy\" Ben Alman  \nLicensed under the MIT license.\n",
   "readmeFilename": "README.md",
   "_id": "exit@0.1.1",
-  "dist": {
-    "shasum": "8bf4af1e41fdb092476006764db9f750dfcddc4e"
-  },
-  "_from": "exit@0.1.1",
-  "_resolved": "https://registry.npmjs.org/exit/-/exit-0.1.1.tgz"
+  "_from": "exit@0.1.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/jake/Jakefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jake/Jakefile b/blackberry10/node_modules/jake/Jakefile
deleted file mode 100644
index b7725cd..0000000
--- a/blackberry10/node_modules/jake/Jakefile
+++ /dev/null
@@ -1,43 +0,0 @@
-var fs = require('fs')
-  , path = require('path');
-
-var t = new jake.TestTask('Jake', function () {
-  this.testFiles.include('test/*.js');
-  this.testFiles.exclude('test/helpers.js');
-});
-
-namespace('doc', function () {
-  task('generate', ['doc:clobber'], function () {
-    var cmd = '../node-jsdoc-toolkit/app/run.js -n -r=100 ' +
-        '-t=../node-jsdoc-toolkit/templates/codeview -d=./doc/ ./lib';
-    jake.logger.log('Generating docs ...');
-    jake.exec([cmd], function () {
-      jake.logger.log('Done.');
-      complete();
-    });
-  }, {async: true});
-
-  task('clobber', function () {
-    var cmd = 'rm -fr ./doc/*';
-    jake.exec([cmd], function () {
-      jake.logger.log('Clobbered old docs.');
-      complete();
-    });
-  }, {async: true});
-
-});
-
-desc('Generate docs for Jake');
-task('doc', ['doc:generate']);
-
-var p = new jake.NpmPublishTask('jake', [
-  'Makefile'
-, 'Jakefile'
-, 'README.md'
-, 'package.json'
-, 'lib/**'
-, 'bin/**'
-, 'test/**'
-]);
-
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/jake/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jake/Makefile b/blackberry10/node_modules/jake/Makefile
deleted file mode 100644
index 3d0574e..0000000
--- a/blackberry10/node_modules/jake/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Jake JavaScript build tool
-# Copyright 2112 Matthew Eernisse (mde@fleegix.org)
-#
-# Licensed 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.
-#
-
-.PHONY: all build install clean uninstall
-
-PREFIX=/usr/local
-DESTDIR=
-
-all: build
-
-build:
-	@echo 'Jake built.'
-
-install:
-	@mkdir -p $(DESTDIR)$(PREFIX)/bin && \
-    mkdir -p $(DESTDIR)$(PREFIX)/lib/node_modules/jake && \
-    mkdir -p ./node_modules && \
-    npm install utilities minimatch && \
-		cp -R ./* $(DESTDIR)$(PREFIX)/lib/node_modules/jake/ && \
-		ln -snf ../lib/node_modules/jake/bin/cli.js $(DESTDIR)$(PREFIX)/bin/jake && \
-		chmod 755 $(DESTDIR)$(PREFIX)/lib/node_modules/jake/bin/cli.js && \
-		echo 'Jake installed.'
-
-clean:
-	@true
-
-uninstall:
-	@rm -f $(DESTDIR)$(PREFIX)/bin/jake && \
-		rm -fr $(DESTDIR)$(PREFIX)/lib/node_modules/jake/ && \
-		echo 'Jake uninstalled.'

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/jake/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jake/README.md b/blackberry10/node_modules/jake/README.md
deleted file mode 100644
index 5cb7cc9..0000000
--- a/blackberry10/node_modules/jake/README.md
+++ /dev/null
@@ -1,946 +0,0 @@
-### Jake -- JavaScript build tool for Node.js
-
-### Installing with [NPM](http://npmjs.org/)
-
-Install globally with:
-
-    npm install -g jake
-
-Or you may also install it as a development dependency in a package.json file:
-
-    // package.json
-    "devDependencies": {
-      "jake": "latest"
-    }
-
-Then install it with `npm install`
-
-Note Jake is intended to be mostly a command-line tool, but lately there have been
-changes to it so it can be either embedded, or run from inside your project.
-
-### Installing from source
-
-Prerequisites: Jake requires [Node.js](<http://nodejs.org/>), and the
-[utilities](https://npmjs.org/package/utilities) and
-[minimatch](https://npmjs.org/package/minimatch) modules.
-
-Get Jake:
-
-    git clone git://github.com/mde/jake.git
-
-Build Jake:
-
-    cd jake && make && sudo make install
-
-Even if you're installing Jake from source, you'll still need NPM for installing
-the few modules Jake depends on. `make install` will do this automatically for
-you.
-
-By default Jake is installed in "/usr/local." To install it into a different
-directory (e.g., one that doesn't require super-user privilege), pass the PREFIX
-variable to the `make install` command.  For example, to install it into a
-"jake" directory in your home directory, you could use this:
-
-    make && make install PREFIX=~/jake
-
-If do you install Jake somewhere special, you'll need to add the "bin" directory
-in the install target to your PATH to get access to the `jake` executable.
-
-### Windows, installing from source
-
-For Windows users installing from source, there are some additional steps.
-
-*Assumed: current directory is the same directory where node.exe is present.*
-
-Get Jake:
-
-    git clone git://github.com/mde/jake.git node_modules/jake
-
-Copy jake.bat and jake to the same directory as node.exe
-
-    copy node_modules/jake/jake.bat jake.bat
-    copy node_modules/jake/jake jake
-
-Add the directory of node.exe to the environment PATH variable.
-
-### Basic usage
-
-    jake [options ...] [env variables ...] target
-
-### Description
-
-    Jake is a simple JavaScript build program with capabilities similar to the
-    regular make or rake command.
-
-    Jake has the following features:
-        * Jakefiles are in standard JavaScript syntax
-        * Tasks with prerequisites
-        * Namespaces for tasks
-        * Async task execution
-
-### Options
-
-    -V/v
-    --version                   Display the Jake version.
-
-    -h
-    --help                      Display help message.
-
-    -f *FILE*
-    --jakefile *FILE*           Use FILE as the Jakefile.
-
-    -C *DIRECTORY*
-    --directory *DIRECTORY*     Change to DIRECTORY before running tasks.
-
-    -q
-    --quiet                     Do not log messages to standard output.
-
-    -J *JAKELIBDIR*
-    --jakelibdir *JAKELIBDIR*   Auto-import any .jake files in JAKELIBDIR.
-                                (default is 'jakelib')
-
-    -B
-    --always-make               Unconditionally make all targets.
-
-    -t
-    --trace                     Enable full backtrace.
-
-    -T/ls
-    --tasks                     Display the tasks (matching optional PATTERN)
-                                with descriptions, then exit.
-
-### Jakefile syntax
-
-A Jakefile is just executable JavaScript. You can include whatever JavaScript
-you want in it.
-
-## API Docs
-
-API docs [can be found here](http://mde.github.com/jake/doc/).
-
-## Tasks
-
-Use `task` to define tasks. It has one required argument, the task-name, and
-three optional arguments:
-
-```javascript
-task(name, [prerequisites], [action], [opts]);
-```
-
-The `name` argument is a String with the name of the task, and `prerequisites`
-is an optional Array arg of the list of prerequisite tasks to perform first.
-
-The `action` is a Function defininng the action to take for the task. (Note that
-Object-literal syntax for name/prerequisites in a single argument a la Rake is
-also supported, but JavaScript's lack of support for dynamic keys in Object
-literals makes it not very useful.) The action is invoked with the Task object
-itself as the execution context (i.e, "this" inside the action references the
-Task object).
-
-The `opts` argument is the normal JavaScript-style 'options' object. When a
-task's operations are asynchronous, the `async` property should be set to
-`true`, and the task must call `complete()` to signal to Jake that the task is
-done, and execution can proceed. By default the `async` property is `false`.
-
-Tasks created with `task` are always executed when asked for (or are a
-prerequisite). Tasks created with `file` are only executed if no file with the
-given name exists or if any of its file-prerequisites are more recent than the
-file named by the task. Also, if any prerequisite is a regular task, the file
-task will always be executed.
-
-Use `desc` to add a string description of the task.
-
-Here's an example:
-
-```javascript
-desc('This is the default task.');
-task('default', function (params) {
-  console.log('This is the default task.');
-});
-
-desc('This task has prerequisites.');
-task('hasPrereqs', ['foo', 'bar', 'baz'], function (params) {
-  console.log('Ran some prereqs first.');
-});
-```
-
-And here's an example of an asynchronous task:
-
-```javascript
-desc('This is an asynchronous task.');
-task('asyncTask', {async: true}, function () {
-  setTimeout(complete, 1000);
-});
-```
-
-A Task is also an EventEmitter which emits the 'complete' event when it is
-finished. This allows asynchronous tasks to be run from within other asked via
-either `invoke` or `execute`, and ensure they will complete before the rest of
-the containing task executes. See the section "Running tasks from within other
-tasks," below.
-
-### File-tasks
-
-Create a file-task by calling `file`.
-
-File-tasks create a file from one or more other files. With a file-task, Jake
-checks both that the file exists, and also that it is not older than the files
-specified by any prerequisite tasks. File-tasks are particularly useful for
-compiling something from a tree of source files.
-
-```javascript
-desc('This builds a minified JS file for production.');
-file('foo-minified.js', ['bar', 'foo-bar.js', 'foo-baz.js'], function () {
-  // Code to concat and minify goes here
-});
-```
-
-### Directory-tasks
-
-Create a directory-task by calling `directory`.
-
-Directory-tasks create a directory for use with for file-tasks. Jake checks for
-the existence of the directory, and only creates it if needed.
-
-```javascript
-desc('This creates the bar directory for use with the foo-minified.js file-task.');
-directory('bar');
-```
-
-This task will create the directory when used as a prerequisite for a file-task,
-or when run from the command-line.
-
-### Namespaces
-
-Use `namespace` to create a namespace of tasks to perform. Call it with two arguments:
-
-```javascript
-namespace(name, namespaceTasks);
-```
-
-Where is `name` is the name of the namespace, and `namespaceTasks` is a function
-with calls inside it to `task` or `desc` definining all the tasks for that
-namespace.
-
-Here's an example:
-
-```javascript
-desc('This is the default task.');
-task('default', function () {
-  console.log('This is the default task.');
-});
-
-namespace('foo', function () {
-  desc('This the foo:bar task');
-  task('bar', function () {
-    console.log('doing foo:bar task');
-  });
-
-  desc('This the foo:baz task');
-  task('baz', ['default', 'foo:bar'], function () {
-    console.log('doing foo:baz task');
-  });
-
-});
-```
-
-In this example, the foo:baz task depends on the the default and foo:bar tasks.
-
-### Passing parameters to jake
-
-Parameters can be passed to Jake two ways: plain arguments, and environment
-variables.
-
-To pass positional arguments to the Jake tasks, enclose them in square braces,
-separated by commas, after the name of the task on the command-line. For
-example, with the following Jakefile:
-
-```javascript
-desc('This is an awesome task.');
-task('awesome', function (a, b, c) {
-  console.log(a, b, c);
-});
-```
-
-You could run `jake` like this:
-
-    jake awesome[foo,bar,baz]
-
-And you'd get the following output:
-
-    foo bar baz
-
-Note that you *cannot* uses spaces between the commas separating the parameters.
-
-Any parameters passed after the Jake task that contain an equals sign (=) will
-be added to process.env.
-
-With the following Jakefile:
-
-```javascript
-desc('This is an awesome task.');
-task('awesome', function (a, b, c) {
-  console.log(a, b, c);
-  console.log(process.env.qux, process.env.frang);
-});
-```
-
-You could run `jake` like this:
-
-    jake awesome[foo,bar,baz] qux=zoobie frang=asdf
-
-And you'd get the following output:
-
-    foo bar baz
-    zoobie asdf
-Running `jake` with no arguments runs the default task.
-
-__Note for zsh users__ : you will need to escape the brackets or wrap in single
-quotes like this to pass parameters :
-
-    jake 'awesome[foo,bar,baz]'
-
-An other solution is to desactivate permannently file-globbing for the `jake`
-command. You can do this by adding this line to your `.zshrc` file :
-
-    alias jake="noglob jake"
-
-### Cleanup after all tasks run, jake 'complete' event
-
-The base 'jake' object is an EventEmitter, and fires a 'complete' event after
-running all tasks.
-
-This is sometimes useful when a task starts a process which keeps the Node
-event-loop running (e.g., a database connection). If you know you want to stop
-the running Node process after all tasks have finished, you can set a listener
-for the 'complete' event, like so:
-
-```javascript
-jake.addListener('complete', function () {
-  process.exit();
-});
-```
-
-### Running tasks from within other tasks
-
-Jake supports the ability to run a task from within another task via the
-`invoke` and `execute` methods.
-
-The `invoke` method will run the desired task, along with its prerequisites:
-
-```javascript
-desc('Calls the foo:bar task and its prerequisites.');
-task('invokeFooBar', function () {
-  // Calls foo:bar and its prereqs
-  jake.Task['foo:bar'].invoke();
-});
-```
-
-The `invoke` method will only run the task once, even if you call it repeatedly.
-
-```javascript
-desc('Calls the foo:bar task and its prerequisites.');
-task('invokeFooBar', function () {
-  // Calls foo:bar and its prereqs
-  jake.Task['foo:bar'].invoke();
-  // Does nothing
-  jake.Task['foo:bar'].invoke();
-});
-```
-
-The `execute` method will run the desired task without its prerequisites:
-
-```javascript
-desc('Calls the foo:bar task without its prerequisites.');
-task('executeFooBar', function () {
-  // Calls foo:bar without its prereqs
-  jake.Task['foo:baz'].execute();
-});
-```
-
-Calling `execute` repeatedly will run the desired task repeatedly.
-
-```javascript
-desc('Calls the foo:bar task without its prerequisites.');
-task('executeFooBar', function () {
-  // Calls foo:bar without its prereqs
-  jake.Task['foo:baz'].execute();
-  // Can keep running this over and over
-  jake.Task['foo:baz'].execute();
-  jake.Task['foo:baz'].execute();
-});
-```
-
-If you want to run the task and its prerequisites more than once, you can use
-`invoke` with the `reenable` method.
-
-```javascript
-desc('Calls the foo:bar task and its prerequisites.');
-task('invokeFooBar', function () {
-  // Calls foo:bar and its prereqs
-  jake.Task['foo:bar'].invoke();
-  // Does nothing
-  jake.Task['foo:bar'].invoke();
-  // Only re-runs foo:bar, but not its prerequisites
-  jake.Task['foo:bar'].reenable();
-  jake.Task['foo:bar'].invoke();
-});
-```
-
-The `reenable` method takes a single Boolean arg, a 'deep' flag, which reenables
-the task's prerequisites if set to true.
-
-```javascript
-desc('Calls the foo:bar task and its prerequisites.');
-task('invokeFooBar', function () {
-  // Calls foo:bar and its prereqs
-  jake.Task['foo:bar'].invoke();
-  // Does nothing
-  jake.Task['foo:bar'].invoke();
-  // Re-runs foo:bar and all of its prerequisites
-  jake.Task['foo:bar'].reenable(true);
-  jake.Task['foo:bar'].invoke();
-});
-```
-
-It's easy to pass params on to a sub-task run via `invoke` or `execute`:
-
-```javascript
-desc('Passes params on to other tasks.');
-task('passParams', function () {
-  var t = jake.Task['foo:bar'];
-  // Calls foo:bar, passing along current args
-  t.invoke.apply(t, arguments);
-});
-```
-
-### Managing asynchrony without prereqs (e.g., when using `invoke`)
-
-You can mix sync and async without problems when using normal prereqs, because
-the Jake execution loop takes care of the difference for you. But when you call
-`invoke` or `execute`, you have to manage the asynchrony yourself.
-
-Here's a correct working example:
-
-```javascript
-task('async1', ['async2'], {async: true}, function () {
-    console.log('-- async1 start ----------------');
-    setTimeout(function () {
-        console.log('-- async1 done ----------------');
-        complete();
-    }, 1000);
-});
-
-task('async2', {async: true}, function () {
-    console.log('-- async2 start ----------------');
-    setTimeout(function () {
-        console.log('-- async2 done ----------------');
-        complete();
-    }, 500);
-});
-
-task('init', ['async1', 'async2'], {async: true}, function () {
-    console.log('-- init start ----------------');
-    setTimeout(function () {
-        console.log('-- init done ----------------');
-        complete();
-    }, 100);
-});
-
-task('default', {async: true}, function () {
-  console.log('-- default start ----------------');
-  var init = jake.Task.init;
-  init.addListener('complete', function () {
-    console.log('-- default done ----------------');
-    complete();
-  });
-  init.invoke();
-});
-```
-
-You have to declare the "default" task as asynchronous as well, and call
-`complete` on it when "init" finishes. Here's the output:
-
-    -- default start ----------------
-    -- async2 start ----------------
-    -- async2 done ----------------
-    -- async1 start ----------------
-    -- async1 done ----------------
-    -- init start ----------------
-    -- init done ----------------
-    -- default done ----------------
-
-You get what you expect -- "default" starts, the rest runs, and finally
-"default" finishes.
-
-### Evented tasks
-
-Tasks are EventEmitters. They can fire 'complete' and 'error' events.
-
-If a task called via `invoke` is asynchronous, you can set a listener on the
-'complete' event to run any code that depends on it.
-
-```javascript
-desc('Calls the async foo:baz task and its prerequisites.');
-task('invokeFooBaz', {async: true}, function () {
-  var t = jake.Task['foo:baz'];
-  t.addListener('complete', function () {
-    console.log('Finished executing foo:baz');
-    // Maybe run some other code
-    // ...
-    // Complete the containing task
-    complete();
-  });
-  // Kick off foo:baz
-  t.invoke();
-});
-```
-
-If you want to handle the errors in a task in some specific way, you can set a
-listener for the 'error' event, like so:
-
-```javascript
-namespace('vronk', function () {
-  task('groo', function () {
-    var t = jake.Task['vronk:zong'];
-    t.addListener('error', function (e) {
-      console.log(e.message);
-    });
-    t.invoke();
-  });
-
-  task('zong', function () {
-    throw new Error('OMFGZONG');
-  });
-});
-```
-
-If no specific listener is set for the "error" event, errors are handled by
-Jake's generic error-handling.
-
-### Aborting a task
-
-You can abort a task by calling the `fail` function, and Jake will abort the
-currently running task. You can pass a customized error message to `fail`:
-
-```javascript
-desc('This task fails.');
-task('failTask', function () {
-  fail('Yikes. Something back happened.');
-});
-```
-
-You can also pass an optional exit status-code to the fail command, like so:
-
-```javascript
-desc('This task fails with an exit-status of 42.');
-task('failTaskQuestionCustomStatus', function () {
-  fail('What is the answer?', 42);
-});
-```
-
-The process will exit with a status of 42.
-
-Uncaught errors will also abort the currently running task.
-
-### Showing the list of tasks
-
-Passing `jake` the -T or --tasks flag will display the full list of tasks
-available in a Jakefile, along with their descriptions:
-
-    $ jake -T
-    jake default       # This is the default task.
-    jake asdf          # This is the asdf task.
-    jake concat.txt    # File task, concating two files together
-    jake failure       # Failing task.
-    jake lookup        # Jake task lookup by name.
-    jake foo:bar       # This the foo:bar task
-    jake foo:fonebone  # This the foo:fonebone task
-
-Setting a value for -T/--tasks will filter the list by that value:
-
-    $ jake -T foo
-    jake foo:bar       # This the foo:bar task
-    jake foo:fonebone  # This the foo:fonebone task
-
-The list displayed will be all tasks whose namespace/name contain the filter-string.
-
-## Breaking things up into multiple files
-
-Jake will automatically look for files with a .jake extension in a 'jakelib'
-directory in your project, and load them (via `require`) after loading your
-Jakefile. (The directory name can be overridden using the -J/--jakelibdir
-command-line option.)
-
-This allows you to break your tasks up over multiple files -- a good way to do
-it is one namespace per file: e.g., a `zardoz` namespace full of tasks in
-'jakelib/zardox.jake'.
-
-Note that these .jake files each run in their own module-context, so they don't
-have access to each others' data. However, the Jake API methods, and the
-task-hierarchy are globally available, so you can use tasks in any file as
-prerequisites for tasks in any other, just as if everything were in a single
-file.
-
-Environment-variables set on the command-line are likewise also naturally
-available to code in all files via process.env.
-
-## File-utils
-
-Since shelling out in Node is an asynchronous operation, Jake comes with a few
-useful file-utilities with a synchronous API, that make scripting easier.
-
-The `jake.mkdirP` utility recursively creates a set of nested directories. It
-will not throw an error if any of the directories already exists. Here's an example:
-
-```javascript
-jake.mkdirP('app/views/layouts');
-```
-
-The `jake.cpR` utility does a recursive copy of a file or directory. It takes
-two arguments, the file/directory to copy, and the destination. Note that this
-command can only copy files and directories; it does not perform globbing (so
-arguments like '*.txt' are not possible).
-
-```javascript
-jake.cpR(path.join(sourceDir, '/templates'), currentDir);
-```
-
-This would copy 'templates' (and all its contents) into `currentDir`.
-
-The `jake.readdirR` utility gives you a recursive directory listing, giving you
-output somewhat similar to the Unix `find` command. It only works with a
-directory name, and does not perform filtering or globbing.
-
-```javascript
-jake.readdirR('pkg');
-```
-
-This would return an array of filepaths for all files in the 'pkg' directory,
-and all its subdirectories.
-
-The `jake.rmRf` utility recursively removes a directory and all its contents.
-
-```javascript
-jake.rmRf('pkg');
-```
-
-This would remove the 'pkg' directory, and all its contents.
-
-## Running shell-commands: `jake.exec` and `jake.createExec`
-
-Jake also provides a more general utility function for running a sequence of
-shell-commands.
-
-### `jake.exec`
-
-The `jake.exec` command takes an array of shell-command strings, and an optional
-callback to run after completing them. Here's an example from Jake's Jakefile,
-that runs the tests:
-
-```javascript
-desc('Runs the Jake tests.');
-task('test', {async: true}, function () {
-  var cmds = [
-    'node ./tests/parseargs.js'
-  , 'node ./tests/task_base.js'
-  , 'node ./tests/file_task.js'
-  ];
-  jake.exec(cmds, {printStdout: true}, function () {
-    console.log('All tests passed.');
-    complete();
-  });
-
-desc('Runs some apps in interactive mode.');
-task('interactiveTask', {async: true}, function () {
-  var cmds = [
-    'node' // Node conosle
-  , 'vim' // Open Vim
-  ];
-  jake.exec(cmds, {interactive: true}, function () {
-    complete();
-  });
-});
-```
-
-It also takes an optional options-object, with the following options:
-
- * `interactive` (tasks are interactive, trumps printStdout and
-    printStderr below, default false)
-
- * `printStdout` (print to stdout, default false)
-
- * `printStderr` (print to stderr, default false)
-
- * `breakOnError` (stop execution on error, default true)
-
-This command doesn't pipe input between commands -- it's for simple execution.
-
-### `jake.createExec` and the evented Exec object
-
-Jake also provides an evented interface for running shell commands. Calling
-`jake.createExec` returns an instance of `jake.Exec`, which is an `EventEmitter`
-that fires events as it executes commands.
-
-It emits the following events:
-
-* 'cmdStart': When a new command begins to run. Passes one arg, the command
-being run.
-
-* 'cmdEnd': When a command finishes. Passes one arg, the command
-being run.
-
-* 'stdout': When the stdout for the child-process recieves data. This streams
-the stdout data. Passes one arg, the chunk of data.
-
-* 'stderr': When the stderr for the child-process recieves data. This streams
-the stderr data. Passes one arg, the chunk of data.
-
-* 'error': When a shell-command exits with a non-zero status-code. Passes two
-args -- the error message, and the status code. If you do not set an error
-handler, and a command exits with an error-code, Jake will throw the unhandled
-error. If `breakOnError` is set to true, the Exec object will emit and 'error'
-event after the first error, and stop any further execution.
-
-To begin running the commands, you have to call the `run` method on it. It also
-has an `append` method for adding new commands to the list of commands to run.
-
-Here's an example:
-
-```javascript
-var ex = jake.createExec(['do_thing.sh'], {printStdout: true});
-ex.addListener('error', function (msg, code) {
-  if (code == 127) {
-    console.log("Couldn't find do_thing script, trying do_other_thing");
-    ex.append('do_other_thing.sh');
-  }
-  else {
-    fail('Fatal error: ' + msg, code);
-  }
-});
-ex.run();
-```
-
-Using the evented Exec object gives you a lot more flexibility in running shell
-commmands. But if you need something more sophisticated, Procstreams
-(<https://github.com/polotek/procstreams>) might be a good option.
-
-## Logging and output
-
-Using the -q/--quiet flag at the command-line will stop Jake from sending its
-normal output to standard output. Note that this only applies to built-in output
-from Jake; anything you output normally from your tasks will still be displayed.
-
-If you want to take advantage of the -q/--quiet flag in your own programs, you
-can use `jake.logger.log` and `jake.logger.error` for displaying output. These
-two commands will respect the flag, and suppress output correctly when the
-quiet-flag is on.
-
-You can check the current value of this flag in your own tasks by using
-`jake.program.opts.quiet`. If you want the output of a `jake.exec` shell-command
-to respect the quiet-flag, set your `printStdout` and `printStderr` options to
-false if the quiet-option is on:
-
-```javascript
-task('echo', {async: true}, function () {
-  jake.exec(['echo "hello"'], function () {
-    jake.logger.log('Done.');
-    complete();
-  }, {printStdout: !jake.program.opts.quiet});
-});
-```
-
-## PackageTask
-
-Instantiating a PackageTask programmically creates a set of tasks for packaging
-up your project for distribution. Here's an example:
-
-```javascript
-var t = new jake.PackageTask('fonebone', 'v0.1.2112', function () {
-  var fileList = [
-    'Jakefile'
-  , 'README.md'
-  , 'package.json'
-  , 'lib/*'
-  , 'bin/*'
-  , 'tests/*'
-  ];
-  this.packageFiles.include(fileList);
-  this.needTarGz = true;
-  this.needTarBz2 = true;
-});
-```
-
-This will automatically create a 'package' task that will assemble the specified
-files in 'pkg/fonebone-v0.1.2112,' and compress them according to the specified
-options. After running `jake package`, you'll have the following in pkg/:
-
-    fonebone-v0.1.2112
-    fonebone-v0.1.2112.tar.bz2
-    fonebone-v0.1.2112.tar.gz
-
-PackageTask also creates a 'clobber' task that removes the pkg/
-directory.
-
-The [PackageTask API
-docs](http://mde.github.com/jake/doc/symbols/jake.PackageTask.html) include a
-lot more information, including different archiving options.
-
-### FileList
-
-Jake's FileList takes a list of glob-patterns and file-names, and lazy-creates a
-list of files to include. Instead of immediately searching the filesystem to
-find the files, a FileList holds the pattern until it is actually used.
-
-When any of the normal JavaScript Array methods (or the `toArray` method) are
-called on the FileList, the pending patterns are resolved into an actual list of
-file-names. FileList uses the [minimatch](https://github.com/isaacs/minimatch) module.
-
-To build the list of files, use FileList's `include` and `exclude` methods:
-
-```javascript
-var list = new jake.FileList();
-list.include('foo/*.txt');
-list.include(['bar/*.txt', 'README.md']);
-list.include('Makefile', 'package.json');
-list.exclude('foo/zoobie.txt');
-list.exclude(/foo\/src.*.txt/);
-console.log(list.toArray());
-```
-
-The `include` method can be called either with an array of items, or multiple
-single parameters. Items can be either glob-patterns, or individual file-names.
-
-The `exclude` method will prevent files from being included in the list. These
-files must resolve to actual files on the filesystem. It can be called either
-with an array of items, or mutliple single parameters. Items can be
-glob-patterns, individual file-names, string-representations of
-regular-expressions, or regular-expression literals.
-
-## TestTask
-
-Instantiating a TestTask programmically creates a simple task for running tests
-for your project. The first argument of the constructor is the project-name
-(used in the description of the task), and the second argument is a function
-that defines the task. It allows you to specifify what files to run as tests,
-and what to name the task that gets created (defaults to "test" if unset).
-
-```javascript
-var t = new jake.TestTask('fonebone', function () {
-  var fileList = [
-    'tests/*'
-  , 'lib/adapters/**/test.js'
-  ];
-  this.testFiles.include(fileList);
-  this.testFiles.exclude('tests/helper.js');
-  this.testName = 'testMainAndAdapters';
-});
-```
-
-Tests in the specified file should be in the very simple format of
-test-functions hung off the export. These tests are converted into Jake tasks
-which Jake then runs normally.
-
-If a test needs to run asynchronously, simply define the test-function with a
-single argument, a callback. Jake will define this as an asynchronous task, and
-will wait until the callback is called in the test function to run the next test.
-
-Here's an example test-file:
-
-```javascript
-var assert = require('assert')
-  , tests;
-
-tests = {
-  'sync test': function () {
-    // Assert something
-    assert.ok(true);
-  }
-, 'async test': function (next) {
-    // Assert something else
-    assert.ok(true);
-    // Won't go next until this is called
-    next();
-  }
-, 'another sync test': function () {
-    // Assert something else
-    assert.ok(true);
-  }
-};
-
-module.exports = tests;
-```
-
-Jake's tests are also a good example of use of a TestTask.
-
-## NpmPublishTask
-
-The NpmPublishTask builds on top of PackageTask to allow you to do a version
-bump of your project, package it, and publish it to NPM. Define the task with
-your project's name, and the list of files you want packaged and published to
-NPM.
-
-Here's an example from Jake's Jakefile:
-
-```javascript
-var p = new jake.NpmPublishTask('jake', [
-  'Makefile'
-, 'Jakefile'
-, 'README.md'
-, 'package.json'
-, 'lib/*'
-, 'bin/*'
-, 'tests/*'
-]);
-```
-
-The NpmPublishTask will automatically create a `publish` task which performs the
-following steps:
-
-1. Bump the version number in your package.json
-2. Commit change in git, push it to GitHub
-3. Create a git tag for the version
-4. Push the tag to GitHub
-5. Package the new version of your project
-6. Publish it to NPM
-7. Clean up the package
-
-## CoffeeScript Jakefiles
-
-Jake can also handle Jakefiles in CoffeeScript. Be sure to make it
-Jakefile.coffee so Jake knows it's in CoffeeScript.
-
-Here's an example:
-
-```coffeescript
-util = require('util')
-
-desc 'This is the default task.'
-task 'default', (params) ->
-  console.log 'Ths is the default task.'
-  console.log(util.inspect(arguments))
-  jake.Task['new'].invoke []
-
-task 'new', ->
-  console.log 'ello from new'
-  jake.Task['foo:next'].invoke ['param']
-
-namespace 'foo', ->
-  task 'next', (param) ->
-    console.log 'ello from next with param: ' + param
-```
-
-## Related projects
-
-James Coglan's "Jake": <http://github.com/jcoglan/jake>
-
-Confusingly, this is a Ruby tool for building JavaScript packages from source code.
-
-280 North's Jake: <http://github.com/280north/jake>
-
-This is also a JavaScript port of Rake, which runs on the Narwhal platform.
-
-### License
-
-Licensed under the Apache License, Version 2.0
-(<http://www.apache.org/licenses/LICENSE-2.0>)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/3016473f/blackberry10/node_modules/jake/bin/cli.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jake/bin/cli.js b/blackberry10/node_modules/jake/bin/cli.js
deleted file mode 100755
index e241f2b..0000000
--- a/blackberry10/node_modules/jake/bin/cli.js
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env node
-/*
- * Jake JavaScript build tool
- * Copyright 2112 Matthew Eernisse (mde@fleegix.org)
- *
- * Licensed 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.
- *
-*/
-
-var args = process.argv.slice(2)
-  , jake = require('../lib/jake');
-
-jake.run.apply(jake, args);