Commit 8c7622380abee57bc1ee2c4d3983bde555dad282

Authored by Cassio Cabral
1 parent 9493e37d
Exists in master and in 1 other branch devel

fix done job

Showing 61 changed files with 437 additions and 293 deletions   Show diff stats
endpoints/texto.js
@@ -65,6 +65,7 @@ function init(req, res, Request) { @@ -65,6 +65,7 @@ function init(req, res, Request) {
65 65
66 job.on('complete', function() { 66 job.on('complete', function() {
67 /* Listener que dispara quando a requisição ao core finaliza */ 67 /* Listener que dispara quando a requisição ao core finaliza */
  68 + // console.log("JOB complete");
68 child.on('close', function(code, signal) { 69 child.on('close', function(code, signal) {
69 // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' }); 70 // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' });
70 db.update(request_object, 'Completed', function(result) { 71 db.update(request_object, 'Completed', function(result) {
helpers/queue.js
1 var exec = require('child_process').exec, child; 1 var exec = require('child_process').exec, child;
2 2
3 -exports.exec_command_line = function (command_line, callback) { 3 +exports.exec_command_line = function (command_line, done) {
4 4
5 child = exec(command_line, function(err, stdout, stderr) { 5 child = exec(command_line, function(err, stdout, stderr) {
6 // console.log('Err: ' + err); 6 // console.log('Err: ' + err);
7 // console.log('STDOUT: ' + stdout); 7 // console.log('STDOUT: ' + stdout);
8 // console.log('STDERR: ' + stderr); 8 // console.log('STDERR: ' + stderr);
9 }); 9 });
10 - //callback(); 10 + //done();
11 // if (child === undefined) { 11 // if (child === undefined) {
12 // throw "Erro ao conectar com o core"; 12 // throw "Erro ao conectar com o core";
13 // } 13 // }
@@ -17,6 +17,18 @@ exports.exec_command_line = function (command_line, callback) { @@ -17,6 +17,18 @@ exports.exec_command_line = function (command_line, callback) {
17 child.on('disconnect', function(code, signal) { 17 child.on('disconnect', function(code, signal) {
18 throw "Disconectado do core"; 18 throw "Disconectado do core";
19 }); 19 });
  20 +
  21 + // tentar com isso descomentado no lugar de chamar o done() direto
  22 + // child.on('close', function(code, signal) {
  23 + // done();
  24 + // });
  25 + done();
20 return child; 26 return child;
21 27
22 }; 28 };
  29 +
  30 +// use to debug
  31 +exports.text = function (text, callback) {
  32 + console.log("Text inside queue_helper: " + text);
  33 + return text;
  34 +};
logsystem/errors.log
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 "1": 2, 4 "1": 2,
5 "2": 0, 5 "2": 0,
6 "3": 0, 6 "3": 0,
7 - "4": 1 7 + "4": 48
8 }, 8 },
9 "nao-bloqueante": { 9 "nao-bloqueante": {
10 "1": 0, 10 "1": 0,
logsystem/services.log
@@ -6,8 +6,8 @@ @@ -6,8 +6,8 @@
6 "saude": 0 6 "saude": 0
7 }, 7 },
8 "outros": { 8 "outros": {
9 - "requisicoes": 133,  
10 - "traducoes": 129, 9 + "requisicoes": 184,
  10 + "traducoes": 153,
11 "saude": 0 11 "saude": 0
12 } 12 }
13 } 13 }
node_modules/async/.travis.yml
1 language: node_js 1 language: node_js
2 node_js: 2 node_js:
3 - "0.10" 3 - "0.10"
  4 + - "0.12"
  5 + - "iojs"
node_modules/async/README.md
@@ -5,8 +5,16 @@ @@ -5,8 +5,16 @@
5 5
6 Async is a utility module which provides straight-forward, powerful functions 6 Async is a utility module which provides straight-forward, powerful functions
7 for working with asynchronous JavaScript. Although originally designed for 7 for working with asynchronous JavaScript. Although originally designed for
8 -use with [Node.js](http://nodejs.org), it can also be used directly in the  
9 -browser. Also supports [component](https://github.com/component/component). 8 +use with [Node.js](http://nodejs.org) and installable via `npm install async`,
  9 +it can also be used directly in the browser.
  10 +
  11 +Async is also installable via:
  12 +
  13 +- [bower](http://bower.io/): `bower install async`
  14 +- [component](https://github.com/component/component): `component install
  15 + caolan/async`
  16 +- [jam](http://jamjs.org/): `jam install async`
  17 +- [spm](http://spmjs.io/): `spm install async`
10 18
11 Async provides around 20 functions that include the usual 'functional' 19 Async provides around 20 functions that include the usual 'functional'
12 suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns 20 suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns
@@ -182,7 +190,7 @@ __Arguments__ @@ -182,7 +190,7 @@ __Arguments__
182 * `arr` - An array to iterate over. 190 * `arr` - An array to iterate over.
183 * `iterator(item, callback)` - A function to apply to each item in `arr`. 191 * `iterator(item, callback)` - A function to apply to each item in `arr`.
184 The iterator is passed a `callback(err)` which must be called once it has 192 The iterator is passed a `callback(err)` which must be called once it has
185 - completed. If no error has occured, the `callback` should be run without 193 + completed. If no error has occurred, the `callback` should be run without
186 arguments or with an explicit `null` argument. 194 arguments or with an explicit `null` argument.
187 * `callback(err)` - A callback which is called when all `iterator` functions 195 * `callback(err)` - A callback which is called when all `iterator` functions
188 have finished, or an error occurs. 196 have finished, or an error occurs.
@@ -202,7 +210,7 @@ async.each(openFiles, saveFile, function(err){ @@ -202,7 +210,7 @@ async.each(openFiles, saveFile, function(err){
202 ```js 210 ```js
203 // assuming openFiles is an array of file names 211 // assuming openFiles is an array of file names
204 212
205 -async.each(openFiles, function( file, callback) { 213 +async.each(openFiles, function(file, callback) {
206 214
207 // Perform operation on file here. 215 // Perform operation on file here.
208 console.log('Processing file ' + file); 216 console.log('Processing file ' + file);
@@ -256,7 +264,7 @@ __Arguments__ @@ -256,7 +264,7 @@ __Arguments__
256 * `limit` - The maximum number of `iterator`s to run at any time. 264 * `limit` - The maximum number of `iterator`s to run at any time.
257 * `iterator(item, callback)` - A function to apply to each item in `arr`. 265 * `iterator(item, callback)` - A function to apply to each item in `arr`.
258 The iterator is passed a `callback(err)` which must be called once it has 266 The iterator is passed a `callback(err)` which must be called once it has
259 - completed. If no error has occured, the callback should be run without 267 + completed. If no error has occurred, the callback should be run without
260 arguments or with an explicit `null` argument. 268 arguments or with an explicit `null` argument.
261 * `callback(err)` - A callback which is called when all `iterator` functions 269 * `callback(err)` - A callback which is called when all `iterator` functions
262 have finished, or an error occurs. 270 have finished, or an error occurs.
@@ -280,7 +288,7 @@ async.eachLimit(documents, 20, requestApi, function(err){ @@ -280,7 +288,7 @@ async.eachLimit(documents, 20, requestApi, function(err){
280 Produces a new array of values by mapping each value in `arr` through 288 Produces a new array of values by mapping each value in `arr` through
281 the `iterator` function. The `iterator` is called with an item from `arr` and a 289 the `iterator` function. The `iterator` is called with an item from `arr` and a
282 callback for when it has finished processing. Each of these callback takes 2 arguments: 290 callback for when it has finished processing. Each of these callback takes 2 arguments:
283 -an `error`, and the transformed item from `arr`. If `iterator` passes an error to this 291 +an `error`, and the transformed item from `arr`. If `iterator` passes an error to his
284 callback, the main `callback` (for the `map` function) is immediately called with the error. 292 callback, the main `callback` (for the `map` function) is immediately called with the error.
285 293
286 Note, that since this function applies the `iterator` to each item in parallel, 294 Note, that since this function applies the `iterator` to each item in parallel,
@@ -536,14 +544,14 @@ By modifying the callback parameter the sorting order can be influenced: @@ -536,14 +544,14 @@ By modifying the callback parameter the sorting order can be influenced:
536 ```js 544 ```js
537 //ascending order 545 //ascending order
538 async.sortBy([1,9,3,5], function(x, callback){ 546 async.sortBy([1,9,3,5], function(x, callback){
539 - callback(err, x); 547 + callback(null, x);
540 }, function(err,result){ 548 }, function(err,result){
541 //result callback 549 //result callback
542 } ); 550 } );
543 551
544 //descending order 552 //descending order
545 async.sortBy([1,9,3,5], function(x, callback){ 553 async.sortBy([1,9,3,5], function(x, callback){
546 - callback(err, x*-1); //<- x*-1 instead of x, turns the order around 554 + callback(null, x*-1); //<- x*-1 instead of x, turns the order around
547 }, function(err,result){ 555 }, function(err,result){
548 //result callback 556 //result callback
549 } ); 557 } );
@@ -913,19 +921,19 @@ __Example__ @@ -913,19 +921,19 @@ __Example__
913 921
914 ```js 922 ```js
915 async.waterfall([ 923 async.waterfall([
916 - function(callback){ 924 + function(callback) {
917 callback(null, 'one', 'two'); 925 callback(null, 'one', 'two');
918 }, 926 },
919 - function(arg1, arg2, callback){ 927 + function(arg1, arg2, callback) {
920 // arg1 now equals 'one' and arg2 now equals 'two' 928 // arg1 now equals 'one' and arg2 now equals 'two'
921 callback(null, 'three'); 929 callback(null, 'three');
922 }, 930 },
923 - function(arg1, callback){ 931 + function(arg1, callback) {
924 // arg1 now equals 'three' 932 // arg1 now equals 'three'
925 callback(null, 'done'); 933 callback(null, 'done');
926 } 934 }
927 ], function (err, result) { 935 ], function (err, result) {
928 - // result now equals 'done' 936 + // result now equals 'done'
929 }); 937 });
930 ``` 938 ```
931 939
@@ -972,7 +980,8 @@ add1mul3(4, function (err, result) { @@ -972,7 +980,8 @@ add1mul3(4, function (err, result) {
972 ### seq(fn1, fn2...) 980 ### seq(fn1, fn2...)
973 981
974 Version of the compose function that is more natural to read. 982 Version of the compose function that is more natural to read.
975 -Each following function consumes the return value of the latter function. 983 +Each function consumes the return value of the previous function.
  984 +It is the equivalent of [`compose`](#compose) with the arguments reversed.
976 985
977 Each function is executed with the `this` binding of the composed function. 986 Each function is executed with the `this` binding of the composed function.
978 987
@@ -989,28 +998,20 @@ __Example__ @@ -989,28 +998,20 @@ __Example__
989 // This example uses `seq` function to avoid overnesting and error 998 // This example uses `seq` function to avoid overnesting and error
990 // handling clutter. 999 // handling clutter.
991 app.get('/cats', function(request, response) { 1000 app.get('/cats', function(request, response) {
992 - function handleError(err, data, callback) {  
993 - if (err) {  
994 - console.error(err);  
995 - response.json({ status: 'error', message: err.message });  
996 - }  
997 - else {  
998 - callback(data);  
999 - }  
1000 - }  
1001 var User = request.models.User; 1001 var User = request.models.User;
1002 async.seq( 1002 async.seq(
1003 _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) 1003 _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))
1004 - handleError,  
1005 function(user, fn) { 1004 function(user, fn) {
1006 user.getCats(fn); // 'getCats' has signature (callback(err, data)) 1005 user.getCats(fn); // 'getCats' has signature (callback(err, data))
1007 - },  
1008 - handleError,  
1009 - function(cats) { 1006 + }
  1007 + )(req.session.user_id, function (err, cats) {
  1008 + if (err) {
  1009 + console.error(err);
  1010 + response.json({ status: 'error', message: err.message });
  1011 + } else {
1010 response.json({ status: 'ok', message: 'Cats found', data: cats }); 1012 response.json({ status: 'ok', message: 'Cats found', data: cats });
1011 } 1013 }
1012 - )(req.session.user_id);  
1013 - } 1014 + });
1014 }); 1015 });
1015 ``` 1016 ```
1016 1017
@@ -1092,7 +1093,7 @@ methods: @@ -1092,7 +1093,7 @@ methods:
1092 * `paused` - a boolean for determining whether the queue is in a paused state 1093 * `paused` - a boolean for determining whether the queue is in a paused state
1093 * `pause()` - a function that pauses the processing of tasks until `resume()` is called. 1094 * `pause()` - a function that pauses the processing of tasks until `resume()` is called.
1094 * `resume()` - a function that resumes the processing of queued tasks when the queue is paused. 1095 * `resume()` - a function that resumes the processing of queued tasks when the queue is paused.
1095 -* `kill()` - a function that empties remaining tasks from the queue forcing it to go idle. 1096 +* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.
1096 1097
1097 __Example__ 1098 __Example__
1098 1099
@@ -1122,7 +1123,7 @@ q.push({name: &#39;bar&#39;}, function (err) { @@ -1122,7 +1123,7 @@ q.push({name: &#39;bar&#39;}, function (err) {
1122 // add some items to the queue (batch-wise) 1123 // add some items to the queue (batch-wise)
1123 1124
1124 q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { 1125 q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
1125 - console.log('finished processing bar'); 1126 + console.log('finished processing item');
1126 }); 1127 });
1127 1128
1128 // add some items to the front of the queue 1129 // add some items to the front of the queue
@@ -1349,7 +1350,7 @@ new tasks much easier (and the code more readable). @@ -1349,7 +1350,7 @@ new tasks much easier (and the code more readable).
1349 1350
1350 Attempts to get a successful response from `task` no more than `times` times before 1351 Attempts to get a successful response from `task` no more than `times` times before
1351 returning an error. If the task is successful, the `callback` will be passed the result 1352 returning an error. If the task is successful, the `callback` will be passed the result
1352 -of the successfull task. If all attemps fail, the callback will be passed the error and 1353 +of the successful task. If all attempts fail, the callback will be passed the error and
1353 result (if any) of the final attempt. 1354 result (if any) of the final attempt.
1354 1355
1355 __Arguments__ 1356 __Arguments__
@@ -1474,7 +1475,7 @@ three @@ -1474,7 +1475,7 @@ three
1474 --------------------------------------- 1475 ---------------------------------------
1475 1476
1476 <a name="nextTick" /> 1477 <a name="nextTick" />
1477 -### nextTick(callback) 1478 +### nextTick(callback), setImmediate(callback)
1478 1479
1479 Calls `callback` on a later loop around the event loop. In Node.js this just 1480 Calls `callback` on a later loop around the event loop. In Node.js this just
1480 calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` 1481 calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`
node_modules/async/component.json
1 { 1 {
2 "name": "async", 2 "name": "async",
3 - "repo": "caolan/async",  
4 "description": "Higher-order functions and common patterns for asynchronous code", 3 "description": "Higher-order functions and common patterns for asynchronous code",
5 - "version": "0.1.23",  
6 - "keywords": [],  
7 - "dependencies": {},  
8 - "development": {},  
9 - "main": "lib/async.js",  
10 - "scripts": [ "lib/async.js" ]  
11 -} 4 + "version": "0.9.2",
  5 + "keywords": [
  6 + "async",
  7 + "callback",
  8 + "utility",
  9 + "module"
  10 + ],
  11 + "license": "MIT",
  12 + "repository": "caolan/async",
  13 + "scripts": [
  14 + "lib/async.js"
  15 + ]
  16 +}
12 \ No newline at end of file 17 \ No newline at end of file
node_modules/async/lib/async.js 100755 → 100644
@@ -42,9 +42,6 @@ @@ -42,9 +42,6 @@
42 }; 42 };
43 43
44 var _each = function (arr, iterator) { 44 var _each = function (arr, iterator) {
45 - if (arr.forEach) {  
46 - return arr.forEach(iterator);  
47 - }  
48 for (var i = 0; i < arr.length; i += 1) { 45 for (var i = 0; i < arr.length; i += 1) {
49 iterator(arr[i], i, arr); 46 iterator(arr[i], i, arr);
50 } 47 }
@@ -821,23 +818,26 @@ @@ -821,23 +818,26 @@
821 pause: function () { 818 pause: function () {
822 if (q.paused === true) { return; } 819 if (q.paused === true) { return; }
823 q.paused = true; 820 q.paused = true;
824 - q.process();  
825 }, 821 },
826 resume: function () { 822 resume: function () {
827 if (q.paused === false) { return; } 823 if (q.paused === false) { return; }
828 q.paused = false; 824 q.paused = false;
829 - q.process(); 825 + // Need to call q.process once per concurrent
  826 + // worker to preserve full concurrency after pause
  827 + for (var w = 1; w <= q.concurrency; w++) {
  828 + async.setImmediate(q.process);
  829 + }
830 } 830 }
831 }; 831 };
832 return q; 832 return q;
833 }; 833 };
834 - 834 +
835 async.priorityQueue = function (worker, concurrency) { 835 async.priorityQueue = function (worker, concurrency) {
836 - 836 +
837 function _compareTasks(a, b){ 837 function _compareTasks(a, b){
838 return a.priority - b.priority; 838 return a.priority - b.priority;
839 }; 839 };
840 - 840 +
841 function _binarySearch(sequence, item, compare) { 841 function _binarySearch(sequence, item, compare) {
842 var beg = -1, 842 var beg = -1,
843 end = sequence.length - 1; 843 end = sequence.length - 1;
@@ -851,7 +851,7 @@ @@ -851,7 +851,7 @@
851 } 851 }
852 return beg; 852 return beg;
853 } 853 }
854 - 854 +
855 function _insert(q, data, priority, callback) { 855 function _insert(q, data, priority, callback) {
856 if (!q.started){ 856 if (!q.started){
857 q.started = true; 857 q.started = true;
@@ -873,7 +873,7 @@ @@ -873,7 +873,7 @@
873 priority: priority, 873 priority: priority,
874 callback: typeof callback === 'function' ? callback : null 874 callback: typeof callback === 'function' ? callback : null
875 }; 875 };
876 - 876 +
877 q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); 877 q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
878 878
879 if (q.saturated && q.tasks.length === q.concurrency) { 879 if (q.saturated && q.tasks.length === q.concurrency) {
@@ -882,15 +882,15 @@ @@ -882,15 +882,15 @@
882 async.setImmediate(q.process); 882 async.setImmediate(q.process);
883 }); 883 });
884 } 884 }
885 - 885 +
886 // Start with a normal queue 886 // Start with a normal queue
887 var q = async.queue(worker, concurrency); 887 var q = async.queue(worker, concurrency);
888 - 888 +
889 // Override push to accept second parameter representing priority 889 // Override push to accept second parameter representing priority
890 q.push = function (data, priority, callback) { 890 q.push = function (data, priority, callback) {
891 _insert(q, data, priority, callback); 891 _insert(q, data, priority, callback);
892 }; 892 };
893 - 893 +
894 // Remove unshift function 894 // Remove unshift function
895 delete q.unshift; 895 delete q.unshift;
896 896
node_modules/async/package.json
1 { 1 {
2 "name": "async", 2 "name": "async",
3 "description": "Higher-order functions and common patterns for asynchronous code", 3 "description": "Higher-order functions and common patterns for asynchronous code",
4 - "main": "./lib/async", 4 + "main": "lib/async.js",
5 "author": { 5 "author": {
6 "name": "Caolan McMahon" 6 "name": "Caolan McMahon"
7 }, 7 },
8 - "version": "0.9.0", 8 + "version": "0.9.2",
  9 + "keywords": [
  10 + "async",
  11 + "callback",
  12 + "utility",
  13 + "module"
  14 + ],
9 "repository": { 15 "repository": {
10 "type": "git", 16 "type": "git",
11 - "url": "https://github.com/caolan/async.git" 17 + "url": "git+https://github.com/caolan/async.git"
12 }, 18 },
13 "bugs": { 19 "bugs": {
14 "url": "https://github.com/caolan/async/issues" 20 "url": "https://github.com/caolan/async/issues"
15 }, 21 },
16 - "licenses": [  
17 - {  
18 - "type": "MIT",  
19 - "url": "https://github.com/caolan/async/raw/master/LICENSE"  
20 - }  
21 - ], 22 + "license": "MIT",
22 "devDependencies": { 23 "devDependencies": {
23 "nodeunit": ">0.0.0", 24 "nodeunit": ">0.0.0",
24 "uglify-js": "1.2.x", 25 "uglify-js": "1.2.x",
25 - "nodelint": ">0.0.0" 26 + "nodelint": ">0.0.0",
  27 + "lodash": ">=2.4.1"
26 }, 28 },
27 "jam": { 29 "jam": {
28 "main": "lib/async.js", 30 "main": "lib/async.js",
@@ -30,31 +32,53 @@ @@ -30,31 +32,53 @@
30 "lib/async.js", 32 "lib/async.js",
31 "README.md", 33 "README.md",
32 "LICENSE" 34 "LICENSE"
  35 + ],
  36 + "categories": [
  37 + "Utilities"
33 ] 38 ]
34 }, 39 },
35 "scripts": { 40 "scripts": {
36 "test": "nodeunit test/test-async.js" 41 "test": "nodeunit test/test-async.js"
37 }, 42 },
38 - "homepage": "https://github.com/caolan/async",  
39 - "_id": "async@0.9.0",  
40 - "dist": {  
41 - "shasum": "ac3613b1da9bed1b47510bb4651b8931e47146c7",  
42 - "tarball": "http://registry.npmjs.org/async/-/async-0.9.0.tgz" 43 + "spm": {
  44 + "main": "lib/async.js"
43 }, 45 },
  46 + "volo": {
  47 + "main": "lib/async.js",
  48 + "ignore": [
  49 + "**/.*",
  50 + "node_modules",
  51 + "bower_components",
  52 + "test",
  53 + "tests"
  54 + ]
  55 + },
  56 + "gitHead": "de3a16091d5125384eff4a54deb3998b13c3814c",
  57 + "homepage": "https://github.com/caolan/async#readme",
  58 + "_id": "async@0.9.2",
  59 + "_shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
44 "_from": "async@>=0.9.0 <0.10.0", 60 "_from": "async@>=0.9.0 <0.10.0",
45 - "_npmVersion": "1.4.3", 61 + "_npmVersion": "2.9.0",
  62 + "_nodeVersion": "2.0.1",
46 "_npmUser": { 63 "_npmUser": {
47 - "name": "caolan",  
48 - "email": "caolan.mcmahon@gmail.com" 64 + "name": "beaugunderson",
  65 + "email": "beau@beaugunderson.com"
49 }, 66 },
50 "maintainers": [ 67 "maintainers": [
51 { 68 {
52 "name": "caolan", 69 "name": "caolan",
53 - "email": "caolan@caolanmcmahon.com" 70 + "email": "caolan.mcmahon@gmail.com"
  71 + },
  72 + {
  73 + "name": "beaugunderson",
  74 + "email": "beau@beaugunderson.com"
54 } 75 }
55 ], 76 ],
  77 + "dist": {
  78 + "shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
  79 + "tarball": "http://registry.npmjs.org/async/-/async-0.9.2.tgz"
  80 + },
56 "directories": {}, 81 "directories": {},
57 - "_shasum": "ac3613b1da9bed1b47510bb4651b8931e47146c7",  
58 - "_resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", 82 + "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
59 "readme": "ERROR: No README data found!" 83 "readme": "ERROR: No README data found!"
60 } 84 }
node_modules/express/node_modules/commander/node_modules/keypress/package.json
@@ -36,5 +36,9 @@ @@ -36,5 +36,9 @@
36 "directories": {}, 36 "directories": {},
37 "_shasum": "4a3188d4291b66b4f65edb99f806aa9ae293592a", 37 "_shasum": "4a3188d4291b66b4f65edb99f806aa9ae293592a",
38 "_resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", 38 "_resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
39 - "_from": "keypress@>=0.1.0 <0.2.0" 39 + "_from": "keypress@>=0.1.0 <0.2.0",
  40 + "bugs": {
  41 + "url": "https://github.com/TooTallNate/keypress/issues"
  42 + },
  43 + "homepage": "https://github.com/TooTallNate/keypress"
40 } 44 }
node_modules/express/node_modules/connect/node_modules/bytes/package.json
@@ -45,5 +45,6 @@ @@ -45,5 +45,6 @@
45 ], 45 ],
46 "directories": {}, 46 "directories": {},
47 "_shasum": "78e2e0e28c7f9c7b988ea8aee0db4d5fa9941935", 47 "_shasum": "78e2e0e28c7f9c7b988ea8aee0db4d5fa9941935",
48 - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz" 48 + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz",
  49 + "readme": "ERROR: No README data found!"
49 } 50 }
node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/package.json
@@ -38,5 +38,6 @@ @@ -38,5 +38,6 @@
38 "directories": {}, 38 "directories": {},
39 "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", 39 "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31",
40 "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", 40 "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz",
  41 + "readme": "ERROR: No README data found!",
41 "scripts": {} 42 "scripts": {}
42 } 43 }
node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/package.json
@@ -53,5 +53,10 @@ @@ -53,5 +53,10 @@
53 "directories": {}, 53 "directories": {},
54 "_shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60", 54 "_shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60",
55 "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", 55 "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz",
56 - "_from": "negotiator@0.3.0" 56 + "_from": "negotiator@0.3.0",
  57 + "bugs": {
  58 + "url": "https://github.com/federomero/negotiator/issues"
  59 + },
  60 + "readme": "ERROR: No README data found!",
  61 + "homepage": "https://github.com/federomero/negotiator"
57 } 62 }
node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/package.json
@@ -45,5 +45,10 @@ @@ -45,5 +45,10 @@
45 ], 45 ],
46 "directories": {}, 46 "directories": {},
47 "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0", 47 "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0",
48 - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" 48 + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz",
  49 + "bugs": {
  50 + "url": "https://github.com/shtylman/node-cookie/issues"
  51 + },
  52 + "readme": "ERROR: No README data found!",
  53 + "homepage": "https://github.com/shtylman/node-cookie"
49 } 54 }
node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/package.json
@@ -50,5 +50,6 @@ @@ -50,5 +50,6 @@
50 ], 50 ],
51 "directories": {}, 51 "directories": {},
52 "_shasum": "3648df2d7294641e7f78673ffc29681d9bad9073", 52 "_shasum": "3648df2d7294641e7f78673ffc29681d9bad9073",
53 - "_resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz" 53 + "_resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz",
  54 + "readme": "ERROR: No README data found!"
54 } 55 }
node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/package.json
@@ -45,5 +45,10 @@ @@ -45,5 +45,10 @@
45 ], 45 ],
46 "directories": {}, 46 "directories": {},
47 "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0", 47 "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0",
48 - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" 48 + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz",
  49 + "bugs": {
  50 + "url": "https://github.com/shtylman/node-cookie/issues"
  51 + },
  52 + "readme": "ERROR: No README data found!",
  53 + "homepage": "https://github.com/shtylman/node-cookie"
49 } 54 }
node_modules/express/node_modules/connect/node_modules/express-session/node_modules/debug/package.json
@@ -59,5 +59,6 @@ @@ -59,5 +59,6 @@
59 "directories": {}, 59 "directories": {},
60 "_shasum": "06e1ea8082c2cb14e39806e22e2f6f757f92af39", 60 "_shasum": "06e1ea8082c2cb14e39806e22e2f6f757f92af39",
61 "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", 61 "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
62 - "readme": "ERROR: No README data found!" 62 + "readme": "ERROR: No README data found!",
  63 + "scripts": {}
63 } 64 }
node_modules/express/node_modules/connect/node_modules/express-session/node_modules/utils-merge/package.json
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 "chai": "1.x.x" 30 "chai": "1.x.x"
31 }, 31 },
32 "scripts": { 32 "scripts": {
33 - "test": "node_modules/.bin/mocha --reporter spec --require test/bootstrap/node test/*.test.js" 33 + "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js"
34 }, 34 },
35 "engines": { 35 "engines": {
36 "node": ">= 0.4.0" 36 "node": ">= 0.4.0"
@@ -54,5 +54,7 @@ @@ -54,5 +54,7 @@
54 ], 54 ],
55 "directories": {}, 55 "directories": {},
56 "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8", 56 "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8",
57 - "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" 57 + "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
  58 + "readme": "ERROR: No README data found!",
  59 + "homepage": "https://github.com/jaredhanson/utils-merge"
58 } 60 }
node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/package.json
@@ -37,5 +37,6 @@ @@ -37,5 +37,6 @@
37 ], 37 ],
38 "directories": {}, 38 "directories": {},
39 "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", 39 "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31",
40 - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz" 40 + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz",
  41 + "readme": "ERROR: No README data found!"
41 } 42 }
node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json
@@ -43,5 +43,7 @@ @@ -43,5 +43,7 @@
43 ], 43 ],
44 "directories": {}, 44 "directories": {},
45 "_shasum": "ded266556319c8b0e222812b9cf3b26fa7d947de", 45 "_shasum": "ded266556319c8b0e222812b9cf3b26fa7d947de",
46 - "_resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz" 46 + "_resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
  47 + "readme": "ERROR: No README data found!",
  48 + "homepage": "https://github.com/superjoe30/node-stream-counter"
47 } 49 }
node_modules/express/node_modules/connect/node_modules/pause/package.json
@@ -27,6 +27,5 @@ @@ -27,6 +27,5 @@
27 "directories": {}, 27 "directories": {},
28 "_shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d", 28 "_shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d",
29 "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 29 "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
30 - "_from": "pause@0.0.1",  
31 - "readme": "ERROR: No README data found!" 30 + "_from": "pause@0.0.1"
32 } 31 }
node_modules/express/node_modules/connect/node_modules/qs/package.json
@@ -49,5 +49,7 @@ @@ -49,5 +49,7 @@
49 ], 49 ],
50 "directories": {}, 50 "directories": {},
51 "_shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107", 51 "_shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107",
52 - "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" 52 + "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz",
  53 + "readme": "ERROR: No README data found!",
  54 + "homepage": "https://github.com/visionmedia/node-querystring"
53 } 55 }
node_modules/express/node_modules/connect/node_modules/raw-body/package.json
@@ -53,5 +53,6 @@ @@ -53,5 +53,6 @@
53 ], 53 ],
54 "directories": {}, 54 "directories": {},
55 "_shasum": "f0b5624388d031f63da07f870c86cb9ccadcb67d", 55 "_shasum": "f0b5624388d031f63da07f870c86cb9ccadcb67d",
56 - "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.4.tgz" 56 + "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.4.tgz",
  57 + "readme": "ERROR: No README data found!"
57 } 58 }
node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/package.json
@@ -62,5 +62,6 @@ @@ -62,5 +62,6 @@
62 ], 62 ],
63 "directories": {}, 63 "directories": {},
64 "_shasum": "8c43ea7e4c40ddfe40c3c0234c4ef77500b8fd37", 64 "_shasum": "8c43ea7e4c40ddfe40c3c0234c4ef77500b8fd37",
65 - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.2.tgz" 65 + "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.2.tgz",
  66 + "readme": "ERROR: No README data found!"
66 } 67 }
node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/package.json
@@ -36,5 +36,6 @@ @@ -36,5 +36,6 @@
36 ], 36 ],
37 "directories": {}, 37 "directories": {},
38 "_shasum": "2e57dce6efdd37c3518701030944c22bf388b7b4", 38 "_shasum": "2e57dce6efdd37c3518701030944c22bf388b7b4",
39 - "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz" 39 + "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz",
  40 + "readme": "ERROR: No README data found!"
40 } 41 }
node_modules/express/node_modules/connect/node_modules/serve-static/package.json
@@ -66,5 +66,6 @@ @@ -66,5 +66,6 @@
66 ], 66 ],
67 "directories": {}, 67 "directories": {},
68 "_shasum": "454dfa05bb3ddd4e701a8915b83a278aa91c5643", 68 "_shasum": "454dfa05bb3ddd4e701a8915b83a278aa91c5643",
69 - "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.1.0.tgz" 69 + "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.1.0.tgz",
  70 + "readme": "ERROR: No README data found!"
70 } 71 }
node_modules/express/node_modules/connect/node_modules/setimmediate/package.json
@@ -97,5 +97,7 @@ @@ -97,5 +97,7 @@
97 "directories": {}, 97 "directories": {},
98 "_shasum": "a9ca56ccbd6a4c3334855f060abcdece5c42ebb7", 98 "_shasum": "a9ca56ccbd6a4c3334855f060abcdece5c42ebb7",
99 "_resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.1.tgz", 99 "_resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.1.tgz",
100 - "_from": "setimmediate@1.0.1" 100 + "_from": "setimmediate@1.0.1",
  101 + "readme": "ERROR: No README data found!",
  102 + "homepage": "https://github.com/NobleJS/setImmediate"
101 } 103 }
node_modules/express/node_modules/cookie-signature/package.json
@@ -44,5 +44,6 @@ @@ -44,5 +44,6 @@
44 ], 44 ],
45 "directories": {}, 45 "directories": {},
46 "_shasum": "91cd997cc51fb641595738c69cda020328f50ff9", 46 "_shasum": "91cd997cc51fb641595738c69cda020328f50ff9",
47 - "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz" 47 + "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz",
  48 + "readme": "ERROR: No README data found!"
48 } 49 }
node_modules/express/node_modules/cookie/package.json
@@ -49,5 +49,6 @@ @@ -49,5 +49,6 @@
49 ], 49 ],
50 "directories": {}, 50 "directories": {},
51 "_shasum": "72fec3d24e48a3432073d90c12642005061004b1", 51 "_shasum": "72fec3d24e48a3432073d90c12642005061004b1",
52 - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz" 52 + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz",
  53 + "readme": "ERROR: No README data found!"
53 } 54 }
node_modules/express/node_modules/debug/package.json
@@ -56,5 +56,6 @@ @@ -56,5 +56,6 @@
56 ], 56 ],
57 "directories": {}, 57 "directories": {},
58 "_shasum": "20ff4d26f5e422cb68a1bacbbb61039ad8c1c130", 58 "_shasum": "20ff4d26f5e422cb68a1bacbbb61039ad8c1c130",
59 - "_resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz" 59 + "_resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz",
  60 + "readme": "ERROR: No README data found!"
60 } 61 }
node_modules/express/node_modules/fresh/package.json
@@ -46,5 +46,6 @@ @@ -46,5 +46,6 @@
46 ], 46 ],
47 "directories": {}, 47 "directories": {},
48 "_shasum": "9731dcf5678c7faeb44fb903c4f72df55187fa77", 48 "_shasum": "9731dcf5678c7faeb44fb903c4f72df55187fa77",
49 - "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz" 49 + "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz",
  50 + "readme": "ERROR: No README data found!"
50 } 51 }
node_modules/express/node_modules/merge-descriptors/package.json
@@ -38,5 +38,6 @@ @@ -38,5 +38,6 @@
38 ], 38 ],
39 "directories": {}, 39 "directories": {},
40 "_shasum": "c36a52a781437513c57275f39dd9d317514ac8c7", 40 "_shasum": "c36a52a781437513c57275f39dd9d317514ac8c7",
41 - "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz" 41 + "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz",
  42 + "readme": "ERROR: No README data found!"
42 } 43 }
node_modules/express/node_modules/mkdirp/package.json
@@ -49,5 +49,6 @@ @@ -49,5 +49,6 @@
49 ], 49 ],
50 "directories": {}, 50 "directories": {},
51 "_shasum": "291ac2a2d43a19c478662577b5be846fe83b5923", 51 "_shasum": "291ac2a2d43a19c478662577b5be846fe83b5923",
52 - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.4.0.tgz" 52 + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.4.0.tgz",
  53 + "readme": "ERROR: No README data found!"
53 } 54 }
node_modules/express/node_modules/range-parser/package.json
@@ -45,5 +45,7 @@ @@ -45,5 +45,7 @@
45 ], 45 ],
46 "directories": {}, 46 "directories": {},
47 "_shasum": "a4b264cfe0be5ce36abe3765ac9c2a248746dbc0", 47 "_shasum": "a4b264cfe0be5ce36abe3765ac9c2a248746dbc0",
48 - "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz" 48 + "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz",
  49 + "readme": "ERROR: No README data found!",
  50 + "homepage": "https://github.com/visionmedia/node-range-parser"
49 } 51 }
node_modules/express/node_modules/send/node_modules/debug/package.json
@@ -51,5 +51,6 @@ @@ -51,5 +51,6 @@
51 ], 51 ],
52 "directories": {}, 52 "directories": {},
53 "_shasum": "0541ea91f0e503fdf0c5eed418a32550234967f0", 53 "_shasum": "0541ea91f0e503fdf0c5eed418a32550234967f0",
54 - "_resolved": "https://registry.npmjs.org/debug/-/debug-0.8.0.tgz" 54 + "_resolved": "https://registry.npmjs.org/debug/-/debug-0.8.0.tgz",
  55 + "readme": "ERROR: No README data found!"
55 } 56 }
node_modules/express/node_modules/send/node_modules/mime/package.json
@@ -51,5 +51,8 @@ @@ -51,5 +51,8 @@
51 ], 51 ],
52 "directories": {}, 52 "directories": {},
53 "_shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10", 53 "_shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10",
54 - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" 54 + "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
  55 + "readme": "ERROR: No README data found!",
  56 + "homepage": "https://github.com/broofa/node-mime",
  57 + "scripts": {}
55 } 58 }
node_modules/express/node_modules/send/package.json
@@ -59,5 +59,6 @@ @@ -59,5 +59,6 @@
59 ], 59 ],
60 "directories": {}, 60 "directories": {},
61 "_shasum": "9718324634806fc75bc4f8f5e51f57d9d66606e7", 61 "_shasum": "9718324634806fc75bc4f8f5e51f57d9d66606e7",
62 - "_resolved": "https://registry.npmjs.org/send/-/send-0.3.0.tgz" 62 + "_resolved": "https://registry.npmjs.org/send/-/send-0.3.0.tgz",
  63 + "readme": "ERROR: No README data found!"
63 } 64 }
node_modules/express/package.json
@@ -111,5 +111,6 @@ @@ -111,5 +111,6 @@
111 ], 111 ],
112 "directories": {}, 112 "directories": {},
113 "_shasum": "af440e1ddad078934ec78241420b40bbc56dc2ad", 113 "_shasum": "af440e1ddad078934ec78241420b40bbc56dc2ad",
114 - "_resolved": "https://registry.npmjs.org/express/-/express-3.5.3.tgz" 114 + "_resolved": "https://registry.npmjs.org/express/-/express-3.5.3.tgz",
  115 + "readme": "ERROR: No README data found!"
115 } 116 }
node_modules/ip/README.md
@@ -4,7 +4,7 @@ IP address utilities for node.js @@ -4,7 +4,7 @@ IP address utilities for node.js
4 ## Usage 4 ## Usage
5 Get your ip address, compare ip addresses, validate ip addresses, etc. 5 Get your ip address, compare ip addresses, validate ip addresses, etc.
6 6
7 -``` 7 +```js
8 var ip = require('ip'); 8 var ip = require('ip');
9 9
10 ip.address() // my ip address 10 ip.address() // my ip address
node_modules/ip/lib/ip.js
1 -var ip = exports,  
2 - Buffer = require('buffer').Buffer,  
3 - os = require('os'); 1 +'use strict';
  2 +
  3 +var ip = exports;
  4 +var Buffer = require('buffer').Buffer;
  5 +var os = require('os');
4 6
5 ip.toBuffer = function toBuffer(ip, buff, offset) { 7 ip.toBuffer = function toBuffer(ip, buff, offset) {
6 offset = ~~offset; 8 offset = ~~offset;
7 9
8 var result; 10 var result;
9 11
  12 + if (/^::ffff:(\d{1,3}\.){3,3}\d{1,3}$/.test(ip)) {
  13 + ip = ip.replace(/^::ffff:/, '');
  14 + }
  15 +
10 if (/^(\d{1,3}\.){3,3}\d{1,3}$/.test(ip)) { 16 if (/^(\d{1,3}\.){3,3}\d{1,3}$/.test(ip)) {
11 result = buff || new Buffer(offset + 4); 17 result = buff || new Buffer(offset + 4);
12 ip.split(/\./g).map(function(byte) { 18 ip.split(/\./g).map(function(byte) {
13 result[offset++] = parseInt(byte, 10) & 0xff; 19 result[offset++] = parseInt(byte, 10) & 0xff;
14 }); 20 });
15 } else if (/^[a-f0-9:]+$/.test(ip)) { 21 } else if (/^[a-f0-9:]+$/.test(ip)) {
16 - var s = ip.split(/::/g, 2),  
17 - head = (s[0] || '').split(/:/g, 8),  
18 - tail = (s[1] || '').split(/:/g, 8); 22 + var s = ip.split(/::/g, 2);
  23 + var head = (s[0] || '').split(/:/g, 8);
  24 + var tail = (s[1] || '').split(/:/g, 8);
19 25
20 if (tail.length === 0) { 26 if (tail.length === 0) {
21 // xxxx:: 27 // xxxx::
@@ -65,6 +71,10 @@ ip.toString = function toString(buff, offset, length) { @@ -65,6 +71,10 @@ ip.toString = function toString(buff, offset, length) {
65 return result; 71 return result;
66 }; 72 };
67 73
  74 +function _normalizeFamily(family) {
  75 + return family ? family.toLowerCase() : 'ipv4';
  76 +}
  77 +
68 ip.fromPrefixLen = function fromPrefixLen(prefixlen, family) { 78 ip.fromPrefixLen = function fromPrefixLen(prefixlen, family) {
69 if (prefixlen > 32) { 79 if (prefixlen > 32) {
70 family = 'ipv6'; 80 family = 'ipv6';
@@ -128,14 +138,14 @@ ip.mask = function mask(addr, mask) { @@ -128,14 +138,14 @@ ip.mask = function mask(addr, mask) {
128 ip.cidr = function cidr(cidrString) { 138 ip.cidr = function cidr(cidrString) {
129 var cidrParts = cidrString.split('/'); 139 var cidrParts = cidrString.split('/');
130 140
131 - if (cidrParts.length != 2) 141 + var addr = cidrParts[0];
  142 + if (cidrParts.length !== 2)
132 throw new Error('invalid CIDR subnet: ' + addr); 143 throw new Error('invalid CIDR subnet: ' + addr);
133 144
134 - var addr = cidrParts[0];  
135 var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10)); 145 var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10));
136 146
137 return ip.mask(addr, mask); 147 return ip.mask(addr, mask);
138 -} 148 +};
139 149
140 ip.subnet = function subnet(addr, mask) { 150 ip.subnet = function subnet(addr, mask) {
141 var networkAddress = ip.toLong(ip.mask(addr, mask)); 151 var networkAddress = ip.toLong(ip.mask(addr, mask));
@@ -145,7 +155,7 @@ ip.subnet = function subnet(addr, mask) { @@ -145,7 +155,7 @@ ip.subnet = function subnet(addr, mask) {
145 var maskLength = 0; 155 var maskLength = 0;
146 156
147 for (var i = 0; i < maskBuffer.length; i++) { 157 for (var i = 0; i < maskBuffer.length; i++) {
148 - if (maskBuffer[i] == 0xff) { 158 + if (maskBuffer[i] === 0xff) {
149 maskLength += 8; 159 maskLength += 8;
150 } else { 160 } else {
151 var octet = maskBuffer[i] & 0xff; 161 var octet = maskBuffer[i] & 0xff;
@@ -173,19 +183,19 @@ ip.subnet = function subnet(addr, mask) { @@ -173,19 +183,19 @@ ip.subnet = function subnet(addr, mask) {
173 numberOfAddresses : numberOfAddresses - 2, 183 numberOfAddresses : numberOfAddresses - 2,
174 length: numberOfAddresses 184 length: numberOfAddresses
175 }; 185 };
176 -} 186 +};
177 187
178 ip.cidrSubnet = function cidrSubnet(cidrString) { 188 ip.cidrSubnet = function cidrSubnet(cidrString) {
179 var cidrParts = cidrString.split('/'); 189 var cidrParts = cidrString.split('/');
180 190
  191 + var addr = cidrParts[0];
181 if (cidrParts.length !== 2) 192 if (cidrParts.length !== 2)
182 throw new Error('invalid CIDR subnet: ' + addr); 193 throw new Error('invalid CIDR subnet: ' + addr);
183 194
184 - var addr = cidrParts[0];  
185 var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10)); 195 var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10));
186 196
187 return ip.subnet(addr, mask); 197 return ip.subnet(addr, mask);
188 -} 198 +};
189 199
190 ip.not = function not(addr) { 200 ip.not = function not(addr) {
191 var buff = ip.toBuffer(addr); 201 var buff = ip.toBuffer(addr);
@@ -200,7 +210,7 @@ ip.or = function or(a, b) { @@ -200,7 +210,7 @@ ip.or = function or(a, b) {
200 b = ip.toBuffer(b); 210 b = ip.toBuffer(b);
201 211
202 // same protocol 212 // same protocol
203 - if (a.length == b.length) { 213 + if (a.length === b.length) {
204 for (var i = 0; i < a.length; ++i) { 214 for (var i = 0; i < a.length; ++i) {
205 a[i] |= b[i]; 215 a[i] |= b[i];
206 } 216 }
@@ -259,25 +269,26 @@ ip.isEqual = function isEqual(a, b) { @@ -259,25 +269,26 @@ ip.isEqual = function isEqual(a, b) {
259 }; 269 };
260 270
261 ip.isPrivate = function isPrivate(addr) { 271 ip.isPrivate = function isPrivate(addr) {
262 - return addr.match(/^10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/) != null ||  
263 - addr.match(/^192\.168\.([0-9]{1,3})\.([0-9]{1,3})/) != null ||  
264 - addr.match(  
265 - /^172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})/) != null ||  
266 - addr.match(/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/) != null ||  
267 - addr.match(/^169\.254\.([0-9]{1,3})\.([0-9]{1,3})/) != null ||  
268 - addr.match(/^fc00:/) != null || addr.match(/^fe80:/) != null ||  
269 - addr.match(/^::1$/) != null || addr.match(/^::$/) != null; 272 + return /^10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) ||
  273 + /^192\.168\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) ||
  274 + /^172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) ||
  275 + /^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) ||
  276 + /^169\.254\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) ||
  277 + /^fc00:/.test(addr) ||
  278 + /^fe80:/.test(addr) ||
  279 + /^::1$/.test(addr) ||
  280 + /^::$/.test(addr);
270 }; 281 };
271 282
272 ip.isPublic = function isPublic(addr) { 283 ip.isPublic = function isPublic(addr) {
273 return !ip.isPrivate(addr); 284 return !ip.isPrivate(addr);
274 -} 285 +};
275 286
276 ip.isLoopback = function isLoopback(addr) { 287 ip.isLoopback = function isLoopback(addr) {
277 - return /^127\.0\.0\.1$/.test(addr)  
278 - || /^fe80::1$/.test(addr)  
279 - || /^::1$/.test(addr)  
280 - || /^::$/.test(addr); 288 + return /^127\.\d+\.\d+\.\d+$/.test(addr) ||
  289 + /^fe80::1$/.test(addr) ||
  290 + /^::1$/.test(addr) ||
  291 + /^::$/.test(addr);
281 }; 292 };
282 293
283 ip.loopback = function loopback(family) { 294 ip.loopback = function loopback(family) {
@@ -290,9 +301,7 @@ ip.loopback = function loopback(family) { @@ -290,9 +301,7 @@ ip.loopback = function loopback(family) {
290 throw new Error('family must be ipv4 or ipv6'); 301 throw new Error('family must be ipv4 or ipv6');
291 } 302 }
292 303
293 - return family === 'ipv4'  
294 - ? '127.0.0.1'  
295 - : 'fe80::1'; 304 + return family === 'ipv4' ? '127.0.0.1' : 'fe80::1';
296 }; 305 };
297 306
298 // 307 //
@@ -311,8 +320,8 @@ ip.loopback = function loopback(family) { @@ -311,8 +320,8 @@ ip.loopback = function loopback(family) {
311 // * undefined: First address with `ipv4` or loopback addres `127.0.0.1`. 320 // * undefined: First address with `ipv4` or loopback addres `127.0.0.1`.
312 // 321 //
313 ip.address = function address(name, family) { 322 ip.address = function address(name, family) {
314 - var interfaces = os.networkInterfaces(),  
315 - all; 323 + var interfaces = os.networkInterfaces();
  324 + var all;
316 325
317 // 326 //
318 // Default to `ipv4` 327 // Default to `ipv4`
@@ -323,11 +332,14 @@ ip.address = function address(name, family) { @@ -323,11 +332,14 @@ ip.address = function address(name, family) {
323 // If a specific network interface has been named, 332 // If a specific network interface has been named,
324 // return the address. 333 // return the address.
325 // 334 //
326 - if (name && !~['public', 'private'].indexOf(name)) {  
327 - return interfaces[name].filter(function (details) {  
328 - details.family = details.family.toLowerCase();  
329 - return details.family === family;  
330 - })[0].address; 335 + if (name && name !== 'private' && name !== 'public') {
  336 + var res = interfaces[name].filter(function(details) {
  337 + var itemFamily = details.family.toLowerCase();
  338 + return itemFamily === family;
  339 + });
  340 + if (res.length === 0)
  341 + return undefined;
  342 + return res[0].address;
331 } 343 }
332 344
333 var all = Object.keys(interfaces).map(function (nic) { 345 var all = Object.keys(interfaces).map(function (nic) {
@@ -339,42 +351,32 @@ ip.address = function address(name, family) { @@ -339,42 +351,32 @@ ip.address = function address(name, family) {
339 details.family = details.family.toLowerCase(); 351 details.family = details.family.toLowerCase();
340 if (details.family !== family || ip.isLoopback(details.address)) { 352 if (details.family !== family || ip.isLoopback(details.address)) {
341 return false; 353 return false;
342 - }  
343 - else if (!name) { 354 + } else if (!name) {
344 return true; 355 return true;
345 } 356 }
346 357
347 - return name === 'public'  
348 - ? !ip.isPrivate(details.address)  
349 - : ip.isPrivate(details.address) 358 + return name === 'public' ? !ip.isPrivate(details.address) :
  359 + ip.isPrivate(details.address);
350 }); 360 });
351 361
352 - return addresses.length  
353 - ? addresses[0].address  
354 - : undefined; 362 + return addresses.length ? addresses[0].address : undefined;
355 }).filter(Boolean); 363 }).filter(Boolean);
356 364
357 - return !all.length  
358 - ? ip.loopback(family)  
359 - : all[0]; 365 + return !all.length ? ip.loopback(family) : all[0];
360 }; 366 };
361 367
362 -ip.toLong = function toInt(ip){  
363 - var ipl=0;  
364 - ip.split('.').forEach(function( octet ) {  
365 - ipl<<=8;  
366 - ipl+=parseInt(octet); 368 +ip.toLong = function toInt(ip) {
  369 + var ipl = 0;
  370 + ip.split('.').forEach(function(octet) {
  371 + ipl <<= 8;
  372 + ipl += parseInt(octet);
367 }); 373 });
368 - return(ipl >>>0); 374 + return(ipl >>> 0);
369 }; 375 };
370 376
371 -ip.fromLong = function fromInt(ipl){  
372 - return ( (ipl>>>24) +'.' +  
373 - (ipl>>16 & 255) +'.' +  
374 - (ipl>>8 & 255) +'.' + 377 +ip.fromLong = function fromInt(ipl) {
  378 + return ((ipl >>> 24) + '.' +
  379 + (ipl >> 16 & 255) + '.' +
  380 + (ipl >> 8 & 255) + '.' +
375 (ipl & 255) ); 381 (ipl & 255) );
376 }; 382 };
377 -  
378 -function _normalizeFamily(family) {  
379 - return family ? family.toLowerCase() : 'ipv4';  
380 -}  
node_modules/ip/package.json
1 { 1 {
2 "name": "ip", 2 "name": "ip",
3 - "version": "0.3.3", 3 + "version": "1.0.1",
4 "author": { 4 "author": {
5 "name": "Fedor Indutny", 5 "name": "Fedor Indutny",
6 "email": "fedor@indutny.com" 6 "email": "fedor@indutny.com"
@@ -12,22 +12,24 @@ @@ -12,22 +12,24 @@
12 }, 12 },
13 "main": "lib/ip", 13 "main": "lib/ip",
14 "devDependencies": { 14 "devDependencies": {
  15 + "jscs": "^2.1.1",
  16 + "jshint": "^2.8.0",
15 "mocha": "~1.3.2" 17 "mocha": "~1.3.2"
16 }, 18 },
17 "scripts": { 19 "scripts": {
18 - "test": "mocha --reporter spec test/*-test.js" 20 + "test": "jscs lib/*.js test/*.js && jshint lib/*.js && mocha --reporter spec test/*-test.js"
19 }, 21 },
20 "license": "MIT", 22 "license": "MIT",
21 - "gitHead": "7798e2d222718087863d8a5a99e3c02f3a30e2b9", 23 + "gitHead": "5fa3ae74c70f2af2f3bc1b8784685c5bc004d468",
22 "description": "IP address utilities for node.js", 24 "description": "IP address utilities for node.js",
23 "bugs": { 25 "bugs": {
24 "url": "https://github.com/indutny/node-ip/issues" 26 "url": "https://github.com/indutny/node-ip/issues"
25 }, 27 },
26 - "_id": "ip@0.3.3",  
27 - "_shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4", 28 + "_id": "ip@1.0.1",
  29 + "_shasum": "c7e356cdea225ae71b36d70f2e71a92ba4e42590",
28 "_from": "ip@latest", 30 "_from": "ip@latest",
29 - "_npmVersion": "2.9.0",  
30 - "_nodeVersion": "2.0.0", 31 + "_npmVersion": "2.14.2",
  32 + "_nodeVersion": "4.0.0",
31 "_npmUser": { 33 "_npmUser": {
32 "name": "indutny", 34 "name": "indutny",
33 "email": "fedor@indutny.com" 35 "email": "fedor@indutny.com"
@@ -47,9 +49,10 @@ @@ -47,9 +49,10 @@
47 } 49 }
48 ], 50 ],
49 "dist": { 51 "dist": {
50 - "shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4",  
51 - "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.3.tgz" 52 + "shasum": "c7e356cdea225ae71b36d70f2e71a92ba4e42590",
  53 + "tarball": "http://registry.npmjs.org/ip/-/ip-1.0.1.tgz"
52 }, 54 },
53 "directories": {}, 55 "directories": {},
54 - "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz" 56 + "_resolved": "https://registry.npmjs.org/ip/-/ip-1.0.1.tgz",
  57 + "readme": "ERROR: No README data found!"
55 } 58 }
node_modules/ip/test/api-test.js
1 -var ip = require('..'),  
2 - assert = require('assert'),  
3 - net = require('net'),  
4 - os = require('os'); 1 +'use strict';
  2 +
  3 +var ip = require('..');
  4 +var assert = require('assert');
  5 +var net = require('net');
  6 +var os = require('os');
5 7
6 describe('IP library for node.js', function() { 8 describe('IP library for node.js', function() {
7 describe('toBuffer()/toString() methods', function() { 9 describe('toBuffer()/toString() methods', function() {
@@ -38,6 +40,12 @@ describe(&#39;IP library for node.js&#39;, function() { @@ -38,6 +40,12 @@ describe(&#39;IP library for node.js&#39;, function() {
38 assert.equal(ip.toString(ip.toBuffer('abcd::dcba', buf, offset), 40 assert.equal(ip.toString(ip.toBuffer('abcd::dcba', buf, offset),
39 offset, 16), 'abcd::dcba'); 41 offset, 16), 'abcd::dcba');
40 }); 42 });
  43 +
  44 + it('should convert to buffer IPv6 mapped IPv4 address', function() {
  45 + var buf = ip.toBuffer('::ffff:127.0.0.1');
  46 + assert.equal(buf.toString('hex'), '7f000001');
  47 + assert.equal(ip.toString(buf), '127.0.0.1');
  48 + });
41 }); 49 });
42 50
43 describe('fromPrefixLen() method', function() { 51 describe('fromPrefixLen() method', function() {
@@ -198,6 +206,8 @@ describe(&#39;IP library for node.js&#39;, function() { @@ -198,6 +206,8 @@ describe(&#39;IP library for node.js&#39;, function() {
198 assert(!ip.isEqual('127.0.0.1', '::7f00:2')); 206 assert(!ip.isEqual('127.0.0.1', '::7f00:2'));
199 assert(ip.isEqual('127.0.0.1', '::ffff:7f00:1')); 207 assert(ip.isEqual('127.0.0.1', '::ffff:7f00:1'));
200 assert(!ip.isEqual('127.0.0.1', '::ffaf:7f00:1')); 208 assert(!ip.isEqual('127.0.0.1', '::ffaf:7f00:1'));
  209 + assert(ip.isEqual('::ffff:127.0.0.1', '::ffff:127.0.0.1'));
  210 + assert(ip.isEqual('::ffff:127.0.0.1', '127.0.0.1'));
201 }); 211 });
202 }); 212 });
203 213
@@ -249,69 +259,75 @@ describe(&#39;IP library for node.js&#39;, function() { @@ -249,69 +259,75 @@ describe(&#39;IP library for node.js&#39;, function() {
249 }); 259 });
250 }); 260 });
251 261
252 - describe('loopback() method', function () {  
253 - describe('undefined', function () {  
254 - it('should respond with 127.0.0.1', function () { 262 + describe('loopback() method', function() {
  263 + describe('undefined', function() {
  264 + it('should respond with 127.0.0.1', function() {
255 assert.equal(ip.loopback(), '127.0.0.1') 265 assert.equal(ip.loopback(), '127.0.0.1')
256 }); 266 });
257 }); 267 });
258 268
259 - describe('ipv4', function () {  
260 - it('should respond with 127.0.0.1', function () { 269 + describe('ipv4', function() {
  270 + it('should respond with 127.0.0.1', function() {
261 assert.equal(ip.loopback('ipv4'), '127.0.0.1') 271 assert.equal(ip.loopback('ipv4'), '127.0.0.1')
262 }); 272 });
263 }); 273 });
264 274
265 - describe('ipv6', function () {  
266 - it('should respond with fe80::1', function () { 275 + describe('ipv6', function() {
  276 + it('should respond with fe80::1', function() {
267 assert.equal(ip.loopback('ipv6'), 'fe80::1') 277 assert.equal(ip.loopback('ipv6'), 'fe80::1')
268 }); 278 });
269 }); 279 });
270 }); 280 });
271 281
272 - describe('isLoopback() method', function () {  
273 - describe('127.0.0.1', function () {  
274 - it('should respond with true', function () { 282 + describe('isLoopback() method', function() {
  283 + describe('127.0.0.1', function() {
  284 + it('should respond with true', function() {
275 assert.ok(ip.isLoopback('127.0.0.1')) 285 assert.ok(ip.isLoopback('127.0.0.1'))
276 }); 286 });
277 }); 287 });
278 288
  289 + describe('127.8.8.8', function () {
  290 + it('should respond with true', function () {
  291 + assert.ok(ip.isLoopback('127.8.8.8'))
  292 + });
  293 + });
  294 +
279 describe('8.8.8.8', function () { 295 describe('8.8.8.8', function () {
280 it('should respond with false', function () { 296 it('should respond with false', function () {
281 assert.equal(ip.isLoopback('8.8.8.8'), false); 297 assert.equal(ip.isLoopback('8.8.8.8'), false);
282 }); 298 });
283 }); 299 });
284 300
285 - describe('fe80::1', function () {  
286 - it('should respond with true', function () { 301 + describe('fe80::1', function() {
  302 + it('should respond with true', function() {
287 assert.ok(ip.isLoopback('fe80::1')) 303 assert.ok(ip.isLoopback('fe80::1'))
288 }); 304 });
289 }); 305 });
290 306
291 - describe('::1', function () {  
292 - it('should respond with true', function () { 307 + describe('::1', function() {
  308 + it('should respond with true', function() {
293 assert.ok(ip.isLoopback('::1')) 309 assert.ok(ip.isLoopback('::1'))
294 }); 310 });
295 }); 311 });
296 312
297 - describe('::', function () {  
298 - it('should respond with true', function () { 313 + describe('::', function() {
  314 + it('should respond with true', function() {
299 assert.ok(ip.isLoopback('::')) 315 assert.ok(ip.isLoopback('::'))
300 }); 316 });
301 }); 317 });
302 }); 318 });
303 319
304 - describe('address() method', function () {  
305 - describe('undefined', function () {  
306 - it('should respond with a private ip', function () { 320 + describe('address() method', function() {
  321 + describe('undefined', function() {
  322 + it('should respond with a private ip', function() {
307 assert.ok(ip.isPrivate(ip.address())); 323 assert.ok(ip.isPrivate(ip.address()));
308 }); 324 });
309 }); 325 });
310 326
311 - describe('private', function () {  
312 - [undefined, 'ipv4', 'ipv6'].forEach(function (family) {  
313 - describe(family, function () {  
314 - it('should respond with a private ip', function () { 327 + describe('private', function() {
  328 + [ undefined, 'ipv4', 'ipv6' ].forEach(function(family) {
  329 + describe(family, function() {
  330 + it('should respond with a private ip', function() {
315 assert.ok(ip.isPrivate(ip.address('private', family))); 331 assert.ok(ip.isPrivate(ip.address('private', family)));
316 }); 332 });
317 }); 333 });
@@ -320,34 +336,36 @@ describe(&#39;IP library for node.js&#39;, function() { @@ -320,34 +336,36 @@ describe(&#39;IP library for node.js&#39;, function() {
320 336
321 var interfaces = os.networkInterfaces(); 337 var interfaces = os.networkInterfaces();
322 338
323 - Object.keys(interfaces).forEach(function (nic) {  
324 - describe(nic, function () {  
325 - [undefined, 'ipv4'].forEach(function (family) {  
326 - describe(family, function () {  
327 - it('should respond with an ipv4 address', function () {  
328 - assert.ok(net.isIPv4(ip.address(nic, family))); 339 + Object.keys(interfaces).forEach(function(nic) {
  340 + describe(nic, function() {
  341 + [ undefined, 'ipv4' ].forEach(function(family) {
  342 + describe(family, function() {
  343 + it('should respond with an ipv4 address', function() {
  344 + var addr = ip.address(nic, family);
  345 + assert.ok(!addr || net.isIPv4(addr));
329 }); 346 });
330 }); 347 });
331 }); 348 });
332 349
333 - describe('ipv6', function () {  
334 - it('should respond with an ipv6 address', function () {  
335 - assert.ok(net.isIPv6(ip.address(nic, 'ipv6'))); 350 + describe('ipv6', function() {
  351 + it('should respond with an ipv6 address', function() {
  352 + var addr = ip.address(nic, 'ipv6');
  353 + assert.ok(!addr || net.isIPv6(addr));
336 }); 354 });
337 }) 355 })
338 }); 356 });
339 }); 357 });
340 }); 358 });
341 359
342 - describe('toLong() method', function(){  
343 - it('should respond with a int', function(){ 360 + describe('toLong() method', function() {
  361 + it('should respond with a int', function() {
344 assert.equal(ip.toLong('127.0.0.1'), 2130706433); 362 assert.equal(ip.toLong('127.0.0.1'), 2130706433);
345 assert.equal(ip.toLong('255.255.255.255'), 4294967295); 363 assert.equal(ip.toLong('255.255.255.255'), 4294967295);
346 }); 364 });
347 }); 365 });
348 366
349 - describe('fromLong() method', function(){  
350 - it('should repond with ipv4 address', function(){ 367 + describe('fromLong() method', function() {
  368 + it('should repond with ipv4 address', function() {
351 assert.equal(ip.fromLong(2130706433), '127.0.0.1'); 369 assert.equal(ip.fromLong(2130706433), '127.0.0.1');
352 assert.equal(ip.fromLong(4294967295), '255.255.255.255'); 370 assert.equal(ip.fromLong(4294967295), '255.255.255.255');
353 }); 371 });
node_modules/mkdirp/.npmignore
@@ -1,2 +0,0 @@ @@ -1,2 +0,0 @@
1 -node_modules/  
2 -npm-debug.log  
3 \ No newline at end of file 0 \ No newline at end of file
node_modules/mkdirp/.travis.yml
1 language: node_js 1 language: node_js
2 node_js: 2 node_js:
3 - - 0.6  
4 - - 0.8 3 + - "0.8"
5 - "0.10" 4 - "0.10"
  5 + - "0.12"
  6 + - "iojs"
  7 +before_install:
  8 + - npm install -g npm@~1.4.6
node_modules/mkdirp/index.js
1 var path = require('path'); 1 var path = require('path');
2 var fs = require('fs'); 2 var fs = require('fs');
  3 +var _0777 = parseInt('0777', 8);
3 4
4 module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; 5 module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
5 6
@@ -16,7 +17,7 @@ function mkdirP (p, opts, f, made) { @@ -16,7 +17,7 @@ function mkdirP (p, opts, f, made) {
16 var xfs = opts.fs || fs; 17 var xfs = opts.fs || fs;
17 18
18 if (mode === undefined) { 19 if (mode === undefined) {
19 - mode = 0777 & (~process.umask()); 20 + mode = _0777 & (~process.umask());
20 } 21 }
21 if (!made) made = null; 22 if (!made) made = null;
22 23
@@ -60,7 +61,7 @@ mkdirP.sync = function sync (p, opts, made) { @@ -60,7 +61,7 @@ mkdirP.sync = function sync (p, opts, made) {
60 var xfs = opts.fs || fs; 61 var xfs = opts.fs || fs;
61 62
62 if (mode === undefined) { 63 if (mode === undefined) {
63 - mode = 0777 & (~process.umask()); 64 + mode = _0777 & (~process.umask());
64 } 65 }
65 if (!made) made = null; 66 if (!made) made = null;
66 67
node_modules/mkdirp/node_modules/minimist/package.json
@@ -62,6 +62,5 @@ @@ -62,6 +62,5 @@
62 ], 62 ],
63 "directories": {}, 63 "directories": {},
64 "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", 64 "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
65 - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",  
66 - "readme": "ERROR: No README data found!" 65 + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
67 } 66 }
node_modules/mkdirp/package.json
1 { 1 {
2 "name": "mkdirp", 2 "name": "mkdirp",
3 "description": "Recursively mkdir, like `mkdir -p`", 3 "description": "Recursively mkdir, like `mkdir -p`",
4 - "version": "0.5.0", 4 + "version": "0.5.1",
5 "author": { 5 "author": {
6 "name": "James Halliday", 6 "name": "James Halliday",
7 "email": "mail@substack.net", 7 "email": "mail@substack.net",
8 "url": "http://substack.net" 8 "url": "http://substack.net"
9 }, 9 },
10 - "main": "./index", 10 + "main": "index.js",
11 "keywords": [ 11 "keywords": [
12 "mkdir", 12 "mkdir",
13 "directory" 13 "directory"
14 ], 14 ],
15 "repository": { 15 "repository": {
16 "type": "git", 16 "type": "git",
17 - "url": "https://github.com/substack/node-mkdirp.git" 17 + "url": "git+https://github.com/substack/node-mkdirp.git"
18 }, 18 },
19 "scripts": { 19 "scripts": {
20 "test": "tap test/*.js" 20 "test": "tap test/*.js"
@@ -23,27 +23,30 @@ @@ -23,27 +23,30 @@
23 "minimist": "0.0.8" 23 "minimist": "0.0.8"
24 }, 24 },
25 "devDependencies": { 25 "devDependencies": {
26 - "tap": "~0.4.0",  
27 - "mock-fs": "~2.2.0" 26 + "tap": "1",
  27 + "mock-fs": "2 >=2.7.0"
28 }, 28 },
29 "bin": { 29 "bin": {
30 "mkdirp": "bin/cmd.js" 30 "mkdirp": "bin/cmd.js"
31 }, 31 },
32 "license": "MIT", 32 "license": "MIT",
  33 + "gitHead": "d4eff0f06093aed4f387e88e9fc301cb76beedc7",
33 "bugs": { 34 "bugs": {
34 "url": "https://github.com/substack/node-mkdirp/issues" 35 "url": "https://github.com/substack/node-mkdirp/issues"
35 }, 36 },
36 - "homepage": "https://github.com/substack/node-mkdirp",  
37 - "_id": "mkdirp@0.5.0",  
38 - "dist": {  
39 - "shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",  
40 - "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"  
41 - }, 37 + "homepage": "https://github.com/substack/node-mkdirp#readme",
  38 + "_id": "mkdirp@0.5.1",
  39 + "_shasum": "30057438eac6cf7f8c4767f38648d6697d75c903",
42 "_from": "mkdirp@>=0.5.0 <0.6.0", 40 "_from": "mkdirp@>=0.5.0 <0.6.0",
43 - "_npmVersion": "1.4.3", 41 + "_npmVersion": "2.9.0",
  42 + "_nodeVersion": "2.0.0",
44 "_npmUser": { 43 "_npmUser": {
45 "name": "substack", 44 "name": "substack",
46 - "email": "mail@substack.net" 45 + "email": "substack@gmail.com"
  46 + },
  47 + "dist": {
  48 + "shasum": "30057438eac6cf7f8c4767f38648d6697d75c903",
  49 + "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
47 }, 50 },
48 "maintainers": [ 51 "maintainers": [
49 { 52 {
@@ -52,7 +55,6 @@ @@ -52,7 +55,6 @@
52 } 55 }
53 ], 56 ],
54 "directories": {}, 57 "directories": {},
55 - "_shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",  
56 - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", 58 + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
57 "readme": "ERROR: No README data found!" 59 "readme": "ERROR: No README data found!"
58 } 60 }
node_modules/mkdirp/test/chmod.js
@@ -2,6 +2,9 @@ var mkdirp = require(&#39;../&#39;).mkdirp; @@ -2,6 +2,9 @@ var mkdirp = require(&#39;../&#39;).mkdirp;
2 var path = require('path'); 2 var path = require('path');
3 var fs = require('fs'); 3 var fs = require('fs');
4 var test = require('tap').test; 4 var test = require('tap').test;
  5 +var _0777 = parseInt('0777', 8);
  6 +var _0755 = parseInt('0755', 8);
  7 +var _0744 = parseInt('0744', 8);
5 8
6 var ps = [ '', 'tmp' ]; 9 var ps = [ '', 'tmp' ];
7 10
@@ -13,20 +16,20 @@ for (var i = 0; i &lt; 25; i++) { @@ -13,20 +16,20 @@ for (var i = 0; i &lt; 25; i++) {
13 var file = ps.join('/'); 16 var file = ps.join('/');
14 17
15 test('chmod-pre', function (t) { 18 test('chmod-pre', function (t) {
16 - var mode = 0744 19 + var mode = _0744
17 mkdirp(file, mode, function (er) { 20 mkdirp(file, mode, function (er) {
18 t.ifError(er, 'should not error'); 21 t.ifError(er, 'should not error');
19 fs.stat(file, function (er, stat) { 22 fs.stat(file, function (er, stat) {
20 t.ifError(er, 'should exist'); 23 t.ifError(er, 'should exist');
21 t.ok(stat && stat.isDirectory(), 'should be directory'); 24 t.ok(stat && stat.isDirectory(), 'should be directory');
22 - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); 25 + t.equal(stat && stat.mode & _0777, mode, 'should be 0744');
23 t.end(); 26 t.end();
24 }); 27 });
25 }); 28 });
26 }); 29 });
27 30
28 test('chmod', function (t) { 31 test('chmod', function (t) {
29 - var mode = 0755 32 + var mode = _0755
30 mkdirp(file, mode, function (er) { 33 mkdirp(file, mode, function (er) {
31 t.ifError(er, 'should not error'); 34 t.ifError(er, 'should not error');
32 fs.stat(file, function (er, stat) { 35 fs.stat(file, function (er, stat) {
node_modules/mkdirp/test/clobber.js
@@ -2,6 +2,7 @@ var mkdirp = require(&#39;../&#39;).mkdirp; @@ -2,6 +2,7 @@ var mkdirp = require(&#39;../&#39;).mkdirp;
2 var path = require('path'); 2 var path = require('path');
3 var fs = require('fs'); 3 var fs = require('fs');
4 var test = require('tap').test; 4 var test = require('tap').test;
  5 +var _0755 = parseInt('0755', 8);
5 6
6 var ps = [ '', 'tmp' ]; 7 var ps = [ '', 'tmp' ];
7 8
@@ -29,7 +30,7 @@ test(&#39;clobber-pre&#39;, function (t) { @@ -29,7 +30,7 @@ test(&#39;clobber-pre&#39;, function (t) {
29 30
30 test('clobber', function (t) { 31 test('clobber', function (t) {
31 t.plan(2); 32 t.plan(2);
32 - mkdirp(file, 0755, function (err) { 33 + mkdirp(file, _0755, function (err) {
33 t.ok(err); 34 t.ok(err);
34 t.equal(err.code, 'ENOTDIR'); 35 t.equal(err.code, 'ENOTDIR');
35 t.end(); 36 t.end();
node_modules/mkdirp/test/mkdirp.js
@@ -3,6 +3,8 @@ var path = require(&#39;path&#39;); @@ -3,6 +3,8 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('woo', function (t) { 9 test('woo', function (t) {
8 t.plan(5); 10 t.plan(5);
@@ -12,13 +14,13 @@ test(&#39;woo&#39;, function (t) { @@ -12,13 +14,13 @@ test(&#39;woo&#39;, function (t) {
12 14
13 var file = '/tmp/' + [x,y,z].join('/'); 15 var file = '/tmp/' + [x,y,z].join('/');
14 16
15 - mkdirp(file, 0755, function (err) { 17 + mkdirp(file, _0755, function (err) {
16 t.ifError(err); 18 t.ifError(err);
17 exists(file, function (ex) { 19 exists(file, function (ex) {
18 t.ok(ex, 'file created'); 20 t.ok(ex, 'file created');
19 fs.stat(file, function (err, stat) { 21 fs.stat(file, function (err, stat) {
20 t.ifError(err); 22 t.ifError(err);
21 - t.equal(stat.mode & 0777, 0755); 23 + t.equal(stat.mode & _0777, _0755);
22 t.ok(stat.isDirectory(), 'target not a directory'); 24 t.ok(stat.isDirectory(), 'target not a directory');
23 }) 25 })
24 }) 26 })
node_modules/mkdirp/test/opts_fs.js
@@ -2,6 +2,8 @@ var mkdirp = require(&#39;../&#39;); @@ -2,6 +2,8 @@ var mkdirp = require(&#39;../&#39;);
2 var path = require('path'); 2 var path = require('path');
3 var test = require('tap').test; 3 var test = require('tap').test;
4 var mockfs = require('mock-fs'); 4 var mockfs = require('mock-fs');
  5 +var _0777 = parseInt('0777', 8);
  6 +var _0755 = parseInt('0755', 8);
5 7
6 test('opts.fs', function (t) { 8 test('opts.fs', function (t) {
7 t.plan(5); 9 t.plan(5);
@@ -13,13 +15,13 @@ test(&#39;opts.fs&#39;, function (t) { @@ -13,13 +15,13 @@ test(&#39;opts.fs&#39;, function (t) {
13 var file = '/beep/boop/' + [x,y,z].join('/'); 15 var file = '/beep/boop/' + [x,y,z].join('/');
14 var xfs = mockfs.fs(); 16 var xfs = mockfs.fs();
15 17
16 - mkdirp(file, { fs: xfs, mode: 0755 }, function (err) { 18 + mkdirp(file, { fs: xfs, mode: _0755 }, function (err) {
17 t.ifError(err); 19 t.ifError(err);
18 xfs.exists(file, function (ex) { 20 xfs.exists(file, function (ex) {
19 t.ok(ex, 'created file'); 21 t.ok(ex, 'created file');
20 xfs.stat(file, function (err, stat) { 22 xfs.stat(file, function (err, stat) {
21 t.ifError(err); 23 t.ifError(err);
22 - t.equal(stat.mode & 0777, 0755); 24 + t.equal(stat.mode & _0777, _0755);
23 t.ok(stat.isDirectory(), 'target not a directory'); 25 t.ok(stat.isDirectory(), 'target not a directory');
24 }); 26 });
25 }); 27 });
node_modules/mkdirp/test/opts_fs_sync.js
@@ -2,6 +2,8 @@ var mkdirp = require(&#39;../&#39;); @@ -2,6 +2,8 @@ var mkdirp = require(&#39;../&#39;);
2 var path = require('path'); 2 var path = require('path');
3 var test = require('tap').test; 3 var test = require('tap').test;
4 var mockfs = require('mock-fs'); 4 var mockfs = require('mock-fs');
  5 +var _0777 = parseInt('0777', 8);
  6 +var _0755 = parseInt('0755', 8);
5 7
6 test('opts.fs sync', function (t) { 8 test('opts.fs sync', function (t) {
7 t.plan(4); 9 t.plan(4);
@@ -13,12 +15,12 @@ test(&#39;opts.fs sync&#39;, function (t) { @@ -13,12 +15,12 @@ test(&#39;opts.fs sync&#39;, function (t) {
13 var file = '/beep/boop/' + [x,y,z].join('/'); 15 var file = '/beep/boop/' + [x,y,z].join('/');
14 var xfs = mockfs.fs(); 16 var xfs = mockfs.fs();
15 17
16 - mkdirp.sync(file, { fs: xfs, mode: 0755 }); 18 + mkdirp.sync(file, { fs: xfs, mode: _0755 });
17 xfs.exists(file, function (ex) { 19 xfs.exists(file, function (ex) {
18 t.ok(ex, 'created file'); 20 t.ok(ex, 'created file');
19 xfs.stat(file, function (err, stat) { 21 xfs.stat(file, function (err, stat) {
20 t.ifError(err); 22 t.ifError(err);
21 - t.equal(stat.mode & 0777, 0755); 23 + t.equal(stat.mode & _0777, _0755);
22 t.ok(stat.isDirectory(), 'target not a directory'); 24 t.ok(stat.isDirectory(), 'target not a directory');
23 }); 25 });
24 }); 26 });
node_modules/mkdirp/test/perm.js
@@ -3,18 +3,20 @@ var path = require(&#39;path&#39;); @@ -3,18 +3,20 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('async perm', function (t) { 9 test('async perm', function (t) {
8 t.plan(5); 10 t.plan(5);
9 var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); 11 var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
10 12
11 - mkdirp(file, 0755, function (err) { 13 + mkdirp(file, _0755, function (err) {
12 t.ifError(err); 14 t.ifError(err);
13 exists(file, function (ex) { 15 exists(file, function (ex) {
14 t.ok(ex, 'file created'); 16 t.ok(ex, 'file created');
15 fs.stat(file, function (err, stat) { 17 fs.stat(file, function (err, stat) {
16 t.ifError(err); 18 t.ifError(err);
17 - t.equal(stat.mode & 0777, 0755); 19 + t.equal(stat.mode & _0777, _0755);
18 t.ok(stat.isDirectory(), 'target not a directory'); 20 t.ok(stat.isDirectory(), 'target not a directory');
19 }) 21 })
20 }) 22 })
@@ -22,7 +24,7 @@ test(&#39;async perm&#39;, function (t) { @@ -22,7 +24,7 @@ test(&#39;async perm&#39;, function (t) {
22 }); 24 });
23 25
24 test('async root perm', function (t) { 26 test('async root perm', function (t) {
25 - mkdirp('/tmp', 0755, function (err) { 27 + mkdirp('/tmp', _0755, function (err) {
26 if (err) t.fail(err); 28 if (err) t.fail(err);
27 t.end(); 29 t.end();
28 }); 30 });
node_modules/mkdirp/test/perm_sync.js
@@ -3,17 +3,19 @@ var path = require(&#39;path&#39;); @@ -3,17 +3,19 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('sync perm', function (t) { 9 test('sync perm', function (t) {
8 t.plan(4); 10 t.plan(4);
9 var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; 11 var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
10 12
11 - mkdirp.sync(file, 0755); 13 + mkdirp.sync(file, _0755);
12 exists(file, function (ex) { 14 exists(file, function (ex) {
13 t.ok(ex, 'file created'); 15 t.ok(ex, 'file created');
14 fs.stat(file, function (err, stat) { 16 fs.stat(file, function (err, stat) {
15 t.ifError(err); 17 t.ifError(err);
16 - t.equal(stat.mode & 0777, 0755); 18 + t.equal(stat.mode & _0777, _0755);
17 t.ok(stat.isDirectory(), 'target not a directory'); 19 t.ok(stat.isDirectory(), 'target not a directory');
18 }); 20 });
19 }); 21 });
@@ -23,7 +25,7 @@ test(&#39;sync root perm&#39;, function (t) { @@ -23,7 +25,7 @@ test(&#39;sync root perm&#39;, function (t) {
23 t.plan(3); 25 t.plan(3);
24 26
25 var file = '/tmp'; 27 var file = '/tmp';
26 - mkdirp.sync(file, 0755); 28 + mkdirp.sync(file, _0755);
27 exists(file, function (ex) { 29 exists(file, function (ex) {
28 t.ok(ex, 'file created'); 30 t.ok(ex, 'file created');
29 fs.stat(file, function (err, stat) { 31 fs.stat(file, function (err, stat) {
node_modules/mkdirp/test/race.js
@@ -3,9 +3,11 @@ var path = require(&#39;path&#39;); @@ -3,9 +3,11 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('race', function (t) { 9 test('race', function (t) {
8 - t.plan(6); 10 + t.plan(10);
9 var ps = [ '', 'tmp' ]; 11 var ps = [ '', 'tmp' ];
10 12
11 for (var i = 0; i < 25; i++) { 13 for (var i = 0; i < 25; i++) {
@@ -15,24 +17,19 @@ test(&#39;race&#39;, function (t) { @@ -15,24 +17,19 @@ test(&#39;race&#39;, function (t) {
15 var file = ps.join('/'); 17 var file = ps.join('/');
16 18
17 var res = 2; 19 var res = 2;
18 - mk(file, function () {  
19 - if (--res === 0) t.end();  
20 - }); 20 + mk(file);
21 21
22 - mk(file, function () {  
23 - if (--res === 0) t.end();  
24 - }); 22 + mk(file);
25 23
26 function mk (file, cb) { 24 function mk (file, cb) {
27 - mkdirp(file, 0755, function (err) { 25 + mkdirp(file, _0755, function (err) {
28 t.ifError(err); 26 t.ifError(err);
29 exists(file, function (ex) { 27 exists(file, function (ex) {
30 t.ok(ex, 'file created'); 28 t.ok(ex, 'file created');
31 fs.stat(file, function (err, stat) { 29 fs.stat(file, function (err, stat) {
32 t.ifError(err); 30 t.ifError(err);
33 - t.equal(stat.mode & 0777, 0755); 31 + t.equal(stat.mode & _0777, _0755);
34 t.ok(stat.isDirectory(), 'target not a directory'); 32 t.ok(stat.isDirectory(), 'target not a directory');
35 - if (cb) cb();  
36 }); 33 });
37 }) 34 })
38 }); 35 });
node_modules/mkdirp/test/rel.js
@@ -3,6 +3,8 @@ var path = require(&#39;path&#39;); @@ -3,6 +3,8 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('rel', function (t) { 9 test('rel', function (t) {
8 t.plan(5); 10 t.plan(5);
@@ -15,14 +17,14 @@ test(&#39;rel&#39;, function (t) { @@ -15,14 +17,14 @@ test(&#39;rel&#39;, function (t) {
15 17
16 var file = [x,y,z].join('/'); 18 var file = [x,y,z].join('/');
17 19
18 - mkdirp(file, 0755, function (err) { 20 + mkdirp(file, _0755, function (err) {
19 t.ifError(err); 21 t.ifError(err);
20 exists(file, function (ex) { 22 exists(file, function (ex) {
21 t.ok(ex, 'file created'); 23 t.ok(ex, 'file created');
22 fs.stat(file, function (err, stat) { 24 fs.stat(file, function (err, stat) {
23 t.ifError(err); 25 t.ifError(err);
24 process.chdir(cwd); 26 process.chdir(cwd);
25 - t.equal(stat.mode & 0777, 0755); 27 + t.equal(stat.mode & _0777, _0755);
26 t.ok(stat.isDirectory(), 'target not a directory'); 28 t.ok(stat.isDirectory(), 'target not a directory');
27 }) 29 })
28 }) 30 })
node_modules/mkdirp/test/root.js
@@ -2,12 +2,13 @@ var mkdirp = require(&#39;../&#39;); @@ -2,12 +2,13 @@ var mkdirp = require(&#39;../&#39;);
2 var path = require('path'); 2 var path = require('path');
3 var fs = require('fs'); 3 var fs = require('fs');
4 var test = require('tap').test; 4 var test = require('tap').test;
  5 +var _0755 = parseInt('0755', 8);
5 6
6 test('root', function (t) { 7 test('root', function (t) {
7 // '/' on unix, 'c:/' on windows. 8 // '/' on unix, 'c:/' on windows.
8 var file = path.resolve('/'); 9 var file = path.resolve('/');
9 10
10 - mkdirp(file, 0755, function (err) { 11 + mkdirp(file, _0755, function (err) {
11 if (err) throw err 12 if (err) throw err
12 fs.stat(file, function (er, stat) { 13 fs.stat(file, function (er, stat) {
13 if (er) throw er 14 if (er) throw er
node_modules/mkdirp/test/sync.js
@@ -3,6 +3,8 @@ var path = require(&#39;path&#39;); @@ -3,6 +3,8 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('sync', function (t) { 9 test('sync', function (t) {
8 t.plan(4); 10 t.plan(4);
@@ -13,7 +15,7 @@ test(&#39;sync&#39;, function (t) { @@ -13,7 +15,7 @@ test(&#39;sync&#39;, function (t) {
13 var file = '/tmp/' + [x,y,z].join('/'); 15 var file = '/tmp/' + [x,y,z].join('/');
14 16
15 try { 17 try {
16 - mkdirp.sync(file, 0755); 18 + mkdirp.sync(file, _0755);
17 } catch (err) { 19 } catch (err) {
18 t.fail(err); 20 t.fail(err);
19 return t.end(); 21 return t.end();
@@ -23,7 +25,7 @@ test(&#39;sync&#39;, function (t) { @@ -23,7 +25,7 @@ test(&#39;sync&#39;, function (t) {
23 t.ok(ex, 'file created'); 25 t.ok(ex, 'file created');
24 fs.stat(file, function (err, stat) { 26 fs.stat(file, function (err, stat) {
25 t.ifError(err); 27 t.ifError(err);
26 - t.equal(stat.mode & 0777, 0755); 28 + t.equal(stat.mode & _0777, _0755);
27 t.ok(stat.isDirectory(), 'target not a directory'); 29 t.ok(stat.isDirectory(), 'target not a directory');
28 }); 30 });
29 }); 31 });
node_modules/mkdirp/test/umask.js
@@ -3,6 +3,8 @@ var path = require(&#39;path&#39;); @@ -3,6 +3,8 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('implicit mode from umask', function (t) { 9 test('implicit mode from umask', function (t) {
8 t.plan(5); 10 t.plan(5);
@@ -18,7 +20,7 @@ test(&#39;implicit mode from umask&#39;, function (t) { @@ -18,7 +20,7 @@ test(&#39;implicit mode from umask&#39;, function (t) {
18 t.ok(ex, 'file created'); 20 t.ok(ex, 'file created');
19 fs.stat(file, function (err, stat) { 21 fs.stat(file, function (err, stat) {
20 t.ifError(err); 22 t.ifError(err);
21 - t.equal(stat.mode & 0777, 0777 & (~process.umask())); 23 + t.equal(stat.mode & _0777, _0777 & (~process.umask()));
22 t.ok(stat.isDirectory(), 'target not a directory'); 24 t.ok(stat.isDirectory(), 'target not a directory');
23 }); 25 });
24 }) 26 })
node_modules/mkdirp/test/umask_sync.js
@@ -3,6 +3,8 @@ var path = require(&#39;path&#39;); @@ -3,6 +3,8 @@ var path = require(&#39;path&#39;);
3 var fs = require('fs'); 3 var fs = require('fs');
4 var exists = fs.exists || path.exists; 4 var exists = fs.exists || path.exists;
5 var test = require('tap').test; 5 var test = require('tap').test;
  6 +var _0777 = parseInt('0777', 8);
  7 +var _0755 = parseInt('0755', 8);
6 8
7 test('umask sync modes', function (t) { 9 test('umask sync modes', function (t) {
8 t.plan(4); 10 t.plan(4);
@@ -23,7 +25,7 @@ test(&#39;umask sync modes&#39;, function (t) { @@ -23,7 +25,7 @@ test(&#39;umask sync modes&#39;, function (t) {
23 t.ok(ex, 'file created'); 25 t.ok(ex, 'file created');
24 fs.stat(file, function (err, stat) { 26 fs.stat(file, function (err, stat) {
25 t.ifError(err); 27 t.ifError(err);
26 - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); 28 + t.equal(stat.mode & _0777, (_0777 & (~process.umask())));
27 t.ok(stat.isDirectory(), 'target not a directory'); 29 t.ok(stat.isDirectory(), 'target not a directory');
28 }); 30 });
29 }); 31 });
@@ -21,6 +21,7 @@ var logger = require(&#39;./logsystem/main.js&#39;); @@ -21,6 +21,7 @@ var logger = require(&#39;./logsystem/main.js&#39;);
21 var kue = require('kue'); 21 var kue = require('kue');
22 var queue = kue.createQueue(); 22 var queue = kue.createQueue();
23 var unirest = require('unirest'); 23 var unirest = require('unirest');
  24 +var ui = require('kue-ui');
24 25
25 var PythonShell = require('python-shell'); 26 var PythonShell = require('python-shell');
26 27
@@ -30,6 +31,9 @@ var options = { @@ -30,6 +31,9 @@ var options = {
30 args: [] 31 args: []
31 }; 32 };
32 33
  34 +app.use('/kue', kue.app);
  35 +// app.use('/kueui', ui.app);
  36 +
33 app.use(express.static(path.join(__dirname, '/videos'))); 37 app.use(express.static(path.join(__dirname, '/videos')));
34 app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') })); 38 app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') }));
35 39
@@ -216,18 +220,18 @@ app.listen(properties.port, properties.host, function(){ @@ -216,18 +220,18 @@ app.listen(properties.port, properties.host, function(){
216 220
217 221
218 222
219 -var CronJob = require('cron').CronJob;  
220 -// '* * * * * *' == a cada 1 segundo  
221 -new CronJob('* * * * * *', function() {  
222 - unirest.post('http://localhost:5000/api')  
223 - .header('Accept', 'application/json')  
224 - .send({ "servico": "texto", "transparencia": "opaco", "texto": "texto teste" })  
225 - .end(function (response) {  
226 - console.log(response.status);  
227 - if(response.status === 200){  
228 - logger.updateHealth("outros", 1);  
229 - } else {  
230 - logger.updateHealth();  
231 - }  
232 - });  
233 -}, null, true); // no lugar do null pode ser uma funcao pra executar quando parar 223 +// var CronJob = require('cron').CronJob;
  224 +// // '* * * * * *' == a cada 1 segundo
  225 +// new CronJob('* 2 * * * *', function() {
  226 +// unirest.post('http://localhost:5000/api')
  227 +// .header('Accept', 'application/json')
  228 +// .send({ "servico": "texto", "transparencia": "opaco", "texto": "texto teste" })
  229 +// .end(function (response) {
  230 +// console.log(response.status);
  231 +// if(response.status === 200){
  232 +// logger.updateHealth("outros", 1);
  233 +// } else {
  234 +// logger.updateHealth();
  235 +// }
  236 +// });
  237 +// }, null, true); // no lugar do null pode ser uma funcao pra executar quando parar