Lint
This commit is contained in:
parent
1ac133ea6f
commit
5a05992155
104
lib/_debugger.js
104
lib/_debugger.js
@ -5,7 +5,7 @@ var spawn = require('child_process').spawn;
|
|||||||
|
|
||||||
exports.port = 5858;
|
exports.port = 5858;
|
||||||
|
|
||||||
exports.start = function () {
|
exports.start = function() {
|
||||||
var interface = new Interface();
|
var interface = new Interface();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -22,12 +22,12 @@ args.unshift('--debug-brk');
|
|||||||
// Usage:
|
// Usage:
|
||||||
// p = new Protocol();
|
// p = new Protocol();
|
||||||
//
|
//
|
||||||
// p.onResponse = function (res) {
|
// p.onResponse = function(res) {
|
||||||
// // do stuff with response from V8
|
// // do stuff with response from V8
|
||||||
// };
|
// };
|
||||||
//
|
//
|
||||||
// socket.setEncoding('utf8');
|
// socket.setEncoding('utf8');
|
||||||
// socket.on('data', function (s) {
|
// socket.on('data', function(s) {
|
||||||
// // Pass strings into the protocol
|
// // Pass strings into the protocol
|
||||||
// p.execute(s);
|
// p.execute(s);
|
||||||
// });
|
// });
|
||||||
@ -86,7 +86,7 @@ Protocol.prototype.execute = function(d) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new Error("Unknown state");
|
throw new Error('Unknown state');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -121,13 +121,13 @@ function Client() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
protocol.onResponse = this._onResponse.bind(this);
|
protocol.onResponse = this._onResponse.bind(this);
|
||||||
};
|
}
|
||||||
inherits(Client, net.Stream);
|
inherits(Client, net.Stream);
|
||||||
exports.Client = Client;
|
exports.Client = Client;
|
||||||
|
|
||||||
|
|
||||||
Client.prototype._addHandle = function(desc) {
|
Client.prototype._addHandle = function(desc) {
|
||||||
if (typeof desc != 'object' || !desc.handle) throw new Error("bad type");
|
if (typeof desc != 'object' || !desc.handle) throw new Error('bad type');
|
||||||
this.handles[desc.handle] = desc;
|
this.handles[desc.handle] = desc;
|
||||||
|
|
||||||
if (desc.type == 'script') {
|
if (desc.type == 'script') {
|
||||||
@ -201,7 +201,7 @@ Client.prototype.req = function(req, cb) {
|
|||||||
|
|
||||||
|
|
||||||
Client.prototype.reqVersion = function(cb) {
|
Client.prototype.reqVersion = function(cb) {
|
||||||
this.req({ command: 'version' } , function (res) {
|
this.req({ command: 'version' } , function(res) {
|
||||||
if (cb) cb(res.body.V8Version, res.running);
|
if (cb) cb(res.body.V8Version, res.running);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -221,7 +221,7 @@ Client.prototype.reqEval = function(expression, cb) {
|
|||||||
req.arguments.frame = this.currentFrame;
|
req.arguments.frame = this.currentFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.req(req, function (res) {
|
this.req(req, function(res) {
|
||||||
console.error('reqEval res ', res.body);
|
console.error('reqEval res ', res.body);
|
||||||
self._addHandle(res.body);
|
self._addHandle(res.body);
|
||||||
if (cb) cb(res.body);
|
if (cb) cb(res.body);
|
||||||
@ -232,7 +232,7 @@ Client.prototype.reqEval = function(expression, cb) {
|
|||||||
// reqBacktrace(cb)
|
// reqBacktrace(cb)
|
||||||
// TODO: from, to, bottom
|
// TODO: from, to, bottom
|
||||||
Client.prototype.reqBacktrace = function(cb) {
|
Client.prototype.reqBacktrace = function(cb) {
|
||||||
this.req({ command: 'backtrace' } , function (res) {
|
this.req({ command: 'backtrace' } , function(res) {
|
||||||
if (cb) cb(res.body);
|
if (cb) cb(res.body);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -256,7 +256,7 @@ Client.prototype.reqBacktrace = function(cb) {
|
|||||||
//
|
//
|
||||||
Client.prototype.reqScripts = function(cb) {
|
Client.prototype.reqScripts = function(cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.req({ command: 'scripts' } , function (res) {
|
this.req({ command: 'scripts' } , function(res) {
|
||||||
for (var i = 0; i < res.body.length; i++) {
|
for (var i = 0; i < res.body.length; i++) {
|
||||||
self._addHandle(res.body[i]);
|
self._addHandle(res.body[i]);
|
||||||
}
|
}
|
||||||
@ -266,13 +266,13 @@ Client.prototype.reqScripts = function(cb) {
|
|||||||
|
|
||||||
|
|
||||||
Client.prototype.reqContinue = function(cb) {
|
Client.prototype.reqContinue = function(cb) {
|
||||||
this.req({ command: 'continue' }, function (res) {
|
this.req({ command: 'continue' }, function(res) {
|
||||||
if (cb) cb(res);
|
if (cb) cb(res);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Client.prototype.listbreakpoints = function(cb) {
|
Client.prototype.listbreakpoints = function(cb) {
|
||||||
this.req({ command: 'listbreakpoints' }, function (res) {
|
this.req({ command: 'listbreakpoints' }, function(res) {
|
||||||
if (cb) cb(res);
|
if (cb) cb(res);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -284,7 +284,7 @@ Client.prototype.step = function(action, count, cb) {
|
|||||||
arguments: { stepaction: action, stepcount: count }
|
arguments: { stepaction: action, stepcount: count }
|
||||||
};
|
};
|
||||||
|
|
||||||
this.req(req, function (res) {
|
this.req(req, function(res) {
|
||||||
if (cb) cb(res);
|
if (cb) cb(res);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -292,8 +292,8 @@ Client.prototype.step = function(action, count, cb) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
var helpMessage = "Commands: run, kill, print, step, next, " +
|
var helpMessage = 'Commands: run, kill, print, step, next, ' +
|
||||||
"continue, scripts, backtrace, version, quit";
|
'continue, scripts, backtrace, version, quit';
|
||||||
|
|
||||||
function SourceUnderline(sourceText, position) {
|
function SourceUnderline(sourceText, position) {
|
||||||
if (!sourceText) return;
|
if (!sourceText) return;
|
||||||
@ -342,7 +342,7 @@ function Interface() {
|
|||||||
var client;
|
var client;
|
||||||
var term;
|
var term;
|
||||||
|
|
||||||
process.on('exit', function () {
|
process.on('exit', function() {
|
||||||
self.killChild();
|
self.killChild();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -356,15 +356,15 @@ function Interface() {
|
|||||||
|
|
||||||
this.quitting = false;
|
this.quitting = false;
|
||||||
|
|
||||||
process.on('SIGINT', function () {
|
process.on('SIGINT', function() {
|
||||||
self.handleSIGINT();
|
self.handleSIGINT();
|
||||||
});
|
});
|
||||||
|
|
||||||
term.on('SIGINT', function () {
|
term.on('SIGINT', function() {
|
||||||
self.handleSIGINT();
|
self.handleSIGINT();
|
||||||
});
|
});
|
||||||
|
|
||||||
term.on('close', function () {
|
term.on('close', function() {
|
||||||
self.tryQuit();
|
self.tryQuit();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -404,7 +404,7 @@ Interface.prototype.tryQuit = function() {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (self.child) {
|
if (self.child) {
|
||||||
self.quitQuestion(function (yes) {
|
self.quitQuestion(function(yes) {
|
||||||
if (yes) {
|
if (yes) {
|
||||||
self.quit();
|
self.quit();
|
||||||
} else {
|
} else {
|
||||||
@ -425,7 +425,7 @@ Interface.prototype.pause = function() {
|
|||||||
|
|
||||||
|
|
||||||
Interface.prototype.resume = function() {
|
Interface.prototype.resume = function() {
|
||||||
if (!this.paused) return false
|
if (!this.paused) return false;
|
||||||
this.paused = false;
|
this.paused = false;
|
||||||
this.stdin.resume();
|
this.stdin.resume();
|
||||||
this.term.resume();
|
this.term.resume();
|
||||||
@ -464,7 +464,7 @@ Interface.prototype.handleBreak = function(r) {
|
|||||||
|
|
||||||
console.log(result);
|
console.log(result);
|
||||||
|
|
||||||
if(!this.resume()) this.term.prompt();
|
if (!this.resume()) this.term.prompt();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -481,15 +481,15 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
} else if (/^r(un)?/.test(cmd)) {
|
} else if (/^r(un)?/.test(cmd)) {
|
||||||
self._lastCommand = null;
|
self._lastCommand = null;
|
||||||
if (self.child) {
|
if (self.child) {
|
||||||
self.restartQuestion(function (yes) {
|
self.restartQuestion(function(yes) {
|
||||||
if (!yes) {
|
if (!yes) {
|
||||||
self._lastCommand = null;
|
self._lastCommand = null;
|
||||||
term.prompt();
|
term.prompt();
|
||||||
} else {
|
} else {
|
||||||
console.log("restarting...");
|
console.log('restarting...');
|
||||||
self.killChild();
|
self.killChild();
|
||||||
// XXX need to wait a little bit for the restart to work?
|
// XXX need to wait a little bit for the restart to work?
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
self.trySpawn();
|
self.trySpawn();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
@ -507,7 +507,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
self.printNotConnected();
|
self.printNotConnected();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
client.reqVersion(function (v) {
|
client.reqVersion(function(v) {
|
||||||
console.log(v);
|
console.log(v);
|
||||||
term.prompt();
|
term.prompt();
|
||||||
});
|
});
|
||||||
@ -517,7 +517,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
self.printNotConnected();
|
self.printNotConnected();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
client.listbreakpoints(function (res) {
|
client.listbreakpoints(function(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
term.prompt();
|
term.prompt();
|
||||||
});
|
});
|
||||||
@ -527,7 +527,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
self.printNotConnected();
|
self.printNotConnected();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
client.reqBacktrace(function (bt) {
|
client.reqBacktrace(function(bt) {
|
||||||
if (/full/.test(cmd)) {
|
if (/full/.test(cmd)) {
|
||||||
console.log(bt);
|
console.log(bt);
|
||||||
} else if (bt.totalFrames == 0) {
|
} else if (bt.totalFrames == 0) {
|
||||||
@ -558,7 +558,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.pause();
|
self.pause();
|
||||||
client.reqContinue(function () {
|
client.reqContinue(function() {
|
||||||
self.resume();
|
self.resume();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -569,7 +569,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
}
|
}
|
||||||
// kill
|
// kill
|
||||||
if (self.child) {
|
if (self.child) {
|
||||||
self.killQuestion(function (yes) {
|
self.killQuestion(function(yes) {
|
||||||
if (yes) {
|
if (yes) {
|
||||||
self.killChild();
|
self.killChild();
|
||||||
} else {
|
} else {
|
||||||
@ -585,7 +585,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
self.printNotConnected();
|
self.printNotConnected();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
client.step('next', 1, function (res) {
|
client.step('next', 1, function(res) {
|
||||||
// Wait for break point. (disable raw mode?)
|
// Wait for break point. (disable raw mode?)
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -594,7 +594,7 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
self.printNotConnected();
|
self.printNotConnected();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
client.step('in', 1, function (res) {
|
client.step('in', 1, function(res) {
|
||||||
// Wait for break point. (disable raw mode?)
|
// Wait for break point. (disable raw mode?)
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -605,11 +605,11 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
}
|
}
|
||||||
var i = cmd.indexOf(' ');
|
var i = cmd.indexOf(' ');
|
||||||
if (i < 0) {
|
if (i < 0) {
|
||||||
console.log("print [expression]");
|
console.log('print [expression]');
|
||||||
term.prompt();
|
term.prompt();
|
||||||
} else {
|
} else {
|
||||||
cmd = cmd.slice(i);
|
cmd = cmd.slice(i);
|
||||||
client.reqEval(cmd, function (res) {
|
client.reqEval(cmd, function(res) {
|
||||||
if (res) {
|
if (res) {
|
||||||
console.log(res.text);
|
console.log(res.text);
|
||||||
} else {
|
} else {
|
||||||
@ -633,13 +633,13 @@ Interface.prototype.handleCommand = function(cmd) {
|
|||||||
Interface.prototype.yesNoQuestion = function(prompt, cb) {
|
Interface.prototype.yesNoQuestion = function(prompt, cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.resume();
|
self.resume();
|
||||||
this.term.question(prompt, function (answer) {
|
this.term.question(prompt, function(answer) {
|
||||||
if (/^y(es)?$/i.test(answer)) {
|
if (/^y(es)?$/i.test(answer)) {
|
||||||
cb(true);
|
cb(true);
|
||||||
} else if (/^n(o)?$/i.test(answer)) {
|
} else if (/^n(o)?$/i.test(answer)) {
|
||||||
cb(false);
|
cb(false);
|
||||||
} else {
|
} else {
|
||||||
console.log("Please answer y or n.");
|
console.log('Please answer y or n.');
|
||||||
self.restartQuestion(cb);
|
self.restartQuestion(cb);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -647,18 +647,18 @@ Interface.prototype.yesNoQuestion = function(prompt, cb) {
|
|||||||
|
|
||||||
|
|
||||||
Interface.prototype.restartQuestion = function(cb) {
|
Interface.prototype.restartQuestion = function(cb) {
|
||||||
this.yesNoQuestion("The program being debugged has been started already.\n" +
|
this.yesNoQuestion('The program being debugged has been started already.\n' +
|
||||||
"Start it from the beginning? (y or n) ", cb);
|
'Start it from the beginning? (y or n) ', cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Interface.prototype.killQuestion = function(cb) {
|
Interface.prototype.killQuestion = function(cb) {
|
||||||
this.yesNoQuestion("Kill the program being debugged? (y or n) ", cb);
|
this.yesNoQuestion('Kill the program being debugged? (y or n) ', cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Interface.prototype.quitQuestion = function(cb) {
|
Interface.prototype.quitQuestion = function(cb) {
|
||||||
this.yesNoQuestion("A debugging session is active. Quit anyway? (y or n) ",
|
this.yesNoQuestion('A debugging session is active. Quit anyway? (y or n) ',
|
||||||
cb);
|
cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -688,35 +688,35 @@ Interface.prototype.trySpawn = function(cb) {
|
|||||||
|
|
||||||
this.pause();
|
this.pause();
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
process.stdout.write("connecting...");
|
process.stdout.write('connecting...');
|
||||||
var client = self.client = new Client();
|
var client = self.client = new Client();
|
||||||
client.connect(exports.port);
|
client.connect(exports.port);
|
||||||
|
|
||||||
client.once('ready', function () {
|
client.once('ready', function() {
|
||||||
process.stdout.write("ok\r\n");
|
process.stdout.write('ok\r\n');
|
||||||
|
|
||||||
// since we did debug-brk, we're hitting a break point immediately
|
// since we did debug-brk, we're hitting a break point immediately
|
||||||
// continue before anything else.
|
// continue before anything else.
|
||||||
client.reqContinue(function () {
|
client.reqContinue(function() {
|
||||||
if (cb) cb();
|
if (cb) cb();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('close', function () {
|
client.on('close', function() {
|
||||||
console.log("\nprogram terminated");
|
console.log('\nprogram terminated');
|
||||||
self.client = null;
|
self.client = null;
|
||||||
self.killChild();
|
self.killChild();
|
||||||
if (!self.quitting) self.term.prompt();
|
if (!self.quitting) self.term.prompt();
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('unhandledResponse', function (res) {
|
client.on('unhandledResponse', function(res) {
|
||||||
console.log("\r\nunhandled res:");
|
console.log('\r\nunhandled res:');
|
||||||
console.log(res);
|
console.log(res);
|
||||||
self.term.prompt();
|
self.term.prompt();
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('break', function (res) {
|
client.on('break', function(res) {
|
||||||
self.handleBreak(res.body);
|
self.handleBreak(res.body);
|
||||||
});
|
});
|
||||||
}, 100);
|
}, 100);
|
||||||
@ -736,7 +736,9 @@ Interface.prototype.printScripts = function(displayNatives) {
|
|||||||
for (var id in client.scripts) {
|
for (var id in client.scripts) {
|
||||||
var script = client.scripts[id];
|
var script = client.scripts[id];
|
||||||
if (typeof script == 'object' && script.name) {
|
if (typeof script == 'object' && script.name) {
|
||||||
if (displayNatives || script.name == client.currentScript || !script.isNative) {
|
if (displayNatives ||
|
||||||
|
script.name == client.currentScript ||
|
||||||
|
!script.isNative) {
|
||||||
text += script.name == client.currentScript ? '* ' : ' ';
|
text += script.name == client.currentScript ? '* ' : ' ';
|
||||||
var n = require('path').split(script.name);
|
var n = require('path').split(script.name);
|
||||||
text += n[n.length - 1] + '\n';
|
text += n[n.length - 1] + '\n';
|
||||||
|
@ -249,7 +249,7 @@ function expectedException(actual, expected) {
|
|||||||
return expected.test(actual);
|
return expected.test(actual);
|
||||||
} else if (actual instanceof expected) {
|
} else if (actual instanceof expected) {
|
||||||
return true;
|
return true;
|
||||||
} else if ( expected.call({}, actual) === true ) {
|
} else if (expected.call({}, actual) === true) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
30
lib/fs.js
30
lib/fs.js
@ -529,10 +529,14 @@ if (isWindows) {
|
|||||||
var seenLinks = {},
|
var seenLinks = {},
|
||||||
knownHard = {};
|
knownHard = {};
|
||||||
|
|
||||||
var pos = 0, // current character position in p
|
// current character position in p
|
||||||
current = "", // the partial path so far, including a trailing slash if any
|
var pos = 0;
|
||||||
base = "", // the partial path without a trailing slash
|
// the partial path so far, including a trailing slash if any
|
||||||
previous = ""; // the partial path scanned in the previous round, with slash
|
var current = '';
|
||||||
|
// the partial path without a trailing slash
|
||||||
|
var base = '';
|
||||||
|
// the partial path scanned in the previous round, with slash
|
||||||
|
var previous = '';
|
||||||
|
|
||||||
// walk down the path, swapping out linked pathparts for their real
|
// walk down the path, swapping out linked pathparts for their real
|
||||||
// values
|
// values
|
||||||
@ -566,10 +570,10 @@ if (isWindows) {
|
|||||||
// resolve the link, then start over
|
// resolve the link, then start over
|
||||||
p = path.resolve(previous, seenLinks[id], p.slice(pos));
|
p = path.resolve(previous, seenLinks[id], p.slice(pos));
|
||||||
pos = 0;
|
pos = 0;
|
||||||
previous = base = current = "";
|
previous = base = current = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -581,10 +585,14 @@ if (isWindows) {
|
|||||||
var seenLinks = {},
|
var seenLinks = {},
|
||||||
knownHard = {};
|
knownHard = {};
|
||||||
|
|
||||||
var pos = 0, // current character position in p
|
// current character position in p
|
||||||
current = "", // the partial path so far, including a trailing slash if any
|
var pos = 0;
|
||||||
base = "", // the partial path without a trailing slash
|
// the partial path so far, including a trailing slash if any
|
||||||
previous = ""; // the partial path scanned in the previous round, with slash
|
var current = '';
|
||||||
|
// the partial path without a trailing slash
|
||||||
|
var base = '';
|
||||||
|
// the partial path scanned in the previous round, with slash
|
||||||
|
var previous = '';
|
||||||
|
|
||||||
// walk down the path, swapping out linked pathparts for their real
|
// walk down the path, swapping out linked pathparts for their real
|
||||||
// values
|
// values
|
||||||
@ -641,7 +649,7 @@ if (isWindows) {
|
|||||||
// resolve the link, then start over
|
// resolve the link, then start over
|
||||||
p = path.resolve(previous, target, p.slice(pos));
|
p = path.resolve(previous, target, p.slice(pos));
|
||||||
pos = 0;
|
pos = 0;
|
||||||
previous = base = current = "";
|
previous = base = current = '';
|
||||||
|
|
||||||
return process.nextTick(LOOP);
|
return process.nextTick(LOOP);
|
||||||
}
|
}
|
||||||
|
@ -320,7 +320,7 @@ Socket.prototype.write = function(data /* [encoding], [fd], [cb] */) {
|
|||||||
this._writeQueueCallbacks[last] = cb;
|
this._writeQueueCallbacks[last] = cb;
|
||||||
} else {
|
} else {
|
||||||
// awful
|
// awful
|
||||||
this._writeQueueCallbacks[last] = function () {
|
this._writeQueueCallbacks[last] = function() {
|
||||||
this._writeQueueCallbacks[last]();
|
this._writeQueueCallbacks[last]();
|
||||||
cb();
|
cb();
|
||||||
};
|
};
|
||||||
|
@ -8,4 +8,5 @@ exports.totalmem = binding.getTotalMem;
|
|||||||
exports.cpus = binding.getCPUs;
|
exports.cpus = binding.getCPUs;
|
||||||
exports.type = binding.getOSType;
|
exports.type = binding.getOSType;
|
||||||
exports.release = binding.getOSRelease;
|
exports.release = binding.getOSRelease;
|
||||||
exports.isWindows = binding.isWindows;
|
exports.isWindows = binding.isWindows;
|
||||||
|
|
||||||
|
84
lib/path.js
84
lib/path.js
@ -2,9 +2,10 @@
|
|||||||
var isWindows = process.platform === 'win32';
|
var isWindows = process.platform === 'win32';
|
||||||
|
|
||||||
|
|
||||||
// resolves . and .. elements in a path array with directory names
|
// resolves . and .. elements in a path array with directory names there
|
||||||
// there must be no slashes, empty elements, or device names (c:\) in the array
|
// must be no slashes, empty elements, or device names (c:\) in the array
|
||||||
// (so also no leading and trailing slashes - it does not distinguish relative and absolute paths)
|
// (so also no leading and trailing slashes - it does not distinguish
|
||||||
|
// relative and absolute paths)
|
||||||
function normalizeArray(parts, allowAboveRoot) {
|
function normalizeArray(parts, allowAboveRoot) {
|
||||||
// if the path tries to go above the root, `up` ends up > 0
|
// if the path tries to go above the root, `up` ends up > 0
|
||||||
var up = 0;
|
var up = 0;
|
||||||
@ -23,7 +24,7 @@ function normalizeArray(parts, allowAboveRoot) {
|
|||||||
|
|
||||||
// if the path is allowed to go above the root, restore leading ..s
|
// if the path is allowed to go above the root, restore leading ..s
|
||||||
if (allowAboveRoot) {
|
if (allowAboveRoot) {
|
||||||
for ( ; up--; up) {
|
for (; up--; up) {
|
||||||
parts.unshift('..');
|
parts.unshift('..');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,18 +39,20 @@ if (isWindows) {
|
|||||||
// windows version
|
// windows version
|
||||||
var splitPathRe = /^(.+(?:[\\\/](?!$)|:)|[\\\/])?((?:.+?)?(\.[^.]*)?)$/;
|
var splitPathRe = /^(.+(?:[\\\/](?!$)|:)|[\\\/])?((?:.+?)?(\.[^.]*)?)$/;
|
||||||
|
|
||||||
// Regex to split a windows path into three parts: [*, device, slash, tail]
|
// Regex to split a windows path into three parts: [*, device, slash,
|
||||||
// windows-only
|
// tail] windows-only
|
||||||
var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?(.*?)$/;
|
var splitDeviceRe =
|
||||||
|
/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?(.*?)$/;
|
||||||
|
|
||||||
// path.resolve([from ...], to)
|
// path.resolve([from ...], to)
|
||||||
// windows version
|
// windows version
|
||||||
exports.resolve = function() {
|
exports.resolve = function() {
|
||||||
// Prepend cwd to provided paths
|
// Prepend cwd to provided paths
|
||||||
var paths = [process.cwd()].concat(Array.prototype.slice.call(arguments, 0));
|
var paths = [process.cwd()].concat(
|
||||||
|
Array.prototype.slice.call(arguments, 0));
|
||||||
|
|
||||||
var resolvedDevice = "",
|
var resolvedDevice = '',
|
||||||
resolvedTail = "",
|
resolvedTail = '',
|
||||||
resolvedAbsolute = false;
|
resolvedAbsolute = false;
|
||||||
|
|
||||||
for (var i = paths.length; i >= 0; i--) {
|
for (var i = paths.length; i >= 0; i--) {
|
||||||
@ -66,7 +69,9 @@ if (isWindows) {
|
|||||||
isAbsolute = !!result[2] || isUnc, // UNC paths are always absolute
|
isAbsolute = !!result[2] || isUnc, // UNC paths are always absolute
|
||||||
tail = result[3];
|
tail = result[3];
|
||||||
|
|
||||||
if (device && resolvedDevice && device.toLowerCase() !== resolvedDevice.toLowerCase()) {
|
if (device &&
|
||||||
|
resolvedDevice &&
|
||||||
|
device.toLowerCase() !== resolvedDevice.toLowerCase()) {
|
||||||
// This path points to another device so it is not applicable
|
// This path points to another device so it is not applicable
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -92,7 +97,7 @@ if (isWindows) {
|
|||||||
// Windows stores the current directories for 'other' drives
|
// Windows stores the current directories for 'other' drives
|
||||||
// as hidden environment variables like =C:=c:\windows (literally)
|
// as hidden environment variables like =C:=c:\windows (literally)
|
||||||
// var deviceCwd = os.getCwdForDrive(resolvedDevice);
|
// var deviceCwd = os.getCwdForDrive(resolvedDevice);
|
||||||
var deviceCwd = "";
|
var deviceCwd = '';
|
||||||
|
|
||||||
// If there is no cwd set for the drive, it is at root
|
// If there is no cwd set for the drive, it is at root
|
||||||
resolvedTail = deviceCwd + '\\' + resolvedTail;
|
resolvedTail = deviceCwd + '\\' + resolvedTail;
|
||||||
@ -102,16 +107,22 @@ if (isWindows) {
|
|||||||
// Replace slashes (in UNC share name) by backslashes
|
// Replace slashes (in UNC share name) by backslashes
|
||||||
resolvedDevice = resolvedDevice.replace(/\//g, '\\');
|
resolvedDevice = resolvedDevice.replace(/\//g, '\\');
|
||||||
|
|
||||||
// At this point the path should be resolved to a full absolute path, but
|
// At this point the path should be resolved to a full absolute path,
|
||||||
// handle relative paths to be safe (might happen when process.cwd() fails)
|
// but handle relative paths to be safe (might happen when process.cwd()
|
||||||
|
// fails)
|
||||||
|
|
||||||
// Normalize the tail path
|
// Normalize the tail path
|
||||||
resolvedTail = normalizeArray(resolvedTail.split(/[\\\/]+/).filter(function(p) {
|
|
||||||
return !!p;
|
|
||||||
}), !resolvedAbsolute).join('\\');
|
|
||||||
|
|
||||||
return (resolvedDevice + (resolvedAbsolute ? '\\' : '') + resolvedTail) || '.';
|
function f(p) {
|
||||||
}
|
return !!p;
|
||||||
|
}
|
||||||
|
|
||||||
|
resolvedTail = normalizeArray(resolvedTail.split(/[\\\/]+/).filter(f),
|
||||||
|
!resolvedAbsolute).join('\\');
|
||||||
|
|
||||||
|
return (resolvedDevice + (resolvedAbsolute ? '\\' : '') + resolvedTail) ||
|
||||||
|
'.';
|
||||||
|
};
|
||||||
|
|
||||||
// windows version
|
// windows version
|
||||||
exports.normalize = function(path) {
|
exports.normalize = function(path) {
|
||||||
@ -128,21 +139,23 @@ if (isWindows) {
|
|||||||
}), !isAbsolute).join('\\');
|
}), !isAbsolute).join('\\');
|
||||||
|
|
||||||
if (!tail && !isAbsolute) {
|
if (!tail && !isAbsolute) {
|
||||||
tail = '.'
|
tail = '.';
|
||||||
}
|
}
|
||||||
if (tail && trailingSlash) {
|
if (tail && trailingSlash) {
|
||||||
tail += '\\'
|
tail += '\\';
|
||||||
}
|
}
|
||||||
|
|
||||||
return device + (isAbsolute ? '\\' : '') + tail;
|
return device + (isAbsolute ? '\\' : '') + tail;
|
||||||
}
|
};
|
||||||
|
|
||||||
// windows version
|
// windows version
|
||||||
exports.join = function() {
|
exports.join = function() {
|
||||||
var paths = Array.prototype.slice.call(arguments, 0).filter(function(p) {
|
function f(p) {
|
||||||
return p && typeof p === 'string';
|
return p && typeof p === 'string';
|
||||||
}),
|
}
|
||||||
joined = paths.join('\\');
|
|
||||||
|
var paths = Array.prototype.slice.call(arguments, 0).filter(f);
|
||||||
|
var joined = paths.join('\\');
|
||||||
|
|
||||||
// Make sure that the joined path doesn't start with two slashes
|
// Make sure that the joined path doesn't start with two slashes
|
||||||
// - it will be mistaken for an unc path by normalize() -
|
// - it will be mistaken for an unc path by normalize() -
|
||||||
@ -152,7 +165,7 @@ if (isWindows) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return exports.normalize(joined);
|
return exports.normalize(joined);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
} else /* posix */ {
|
} else /* posix */ {
|
||||||
@ -165,9 +178,10 @@ if (isWindows) {
|
|||||||
// posix version
|
// posix version
|
||||||
exports.resolve = function() {
|
exports.resolve = function() {
|
||||||
// Prepend cwd to provided paths
|
// Prepend cwd to provided paths
|
||||||
var paths = [process.cwd()].concat(Array.prototype.slice.call(arguments, 0));
|
var paths = [process.cwd()].concat(
|
||||||
|
Array.prototype.slice.call(arguments, 0));
|
||||||
|
|
||||||
var resolvedPath = "",
|
var resolvedPath = '',
|
||||||
resolvedAbsolute = false;
|
resolvedAbsolute = false;
|
||||||
|
|
||||||
for (var i = paths.length; i >= 0 && !resolvedAbsolute; i--) {
|
for (var i = paths.length; i >= 0 && !resolvedAbsolute; i--) {
|
||||||
@ -189,7 +203,7 @@ if (isWindows) {
|
|||||||
}), !resolvedAbsolute).join('/');
|
}), !resolvedAbsolute).join('/');
|
||||||
|
|
||||||
return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
|
return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
|
||||||
}
|
};
|
||||||
|
|
||||||
// path.normalize(path)
|
// path.normalize(path)
|
||||||
// posix version
|
// posix version
|
||||||
@ -203,23 +217,23 @@ if (isWindows) {
|
|||||||
}), !isAbsolute).join('/');
|
}), !isAbsolute).join('/');
|
||||||
|
|
||||||
if (!path && !isAbsolute) {
|
if (!path && !isAbsolute) {
|
||||||
path = '.'
|
path = '.';
|
||||||
}
|
}
|
||||||
if (path && trailingSlash) {
|
if (path && trailingSlash) {
|
||||||
path += '/';
|
path += '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
return (isAbsolute ? '/' : '') + path;
|
return (isAbsolute ? '/' : '') + path;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
// posix version
|
// posix version
|
||||||
exports.join = function() {
|
exports.join = function() {
|
||||||
var paths = Array.prototype.slice.call(arguments, 0);
|
var paths = Array.prototype.slice.call(arguments, 0);
|
||||||
return exports.normalize(paths.filter(function(p, index) {
|
return exports.normalize(paths.filter(function(p, index) {
|
||||||
return p && typeof p === 'string'
|
return p && typeof p === 'string';
|
||||||
}).join('/'));
|
}).join('/'));
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -227,7 +241,7 @@ exports.dirname = function(path) {
|
|||||||
var dir = splitPathRe.exec(path)[1] || '';
|
var dir = splitPathRe.exec(path)[1] || '';
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
// No dirname
|
// No dirname
|
||||||
return '.'
|
return '.';
|
||||||
} else if (dir.length === 1 ||
|
} else if (dir.length === 1 ||
|
||||||
(isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
|
(isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
|
||||||
// It is just a slash or a drive letter with a slash
|
// It is just a slash or a drive letter with a slash
|
||||||
|
@ -109,7 +109,7 @@ Interface.prototype._onLine = function(line) {
|
|||||||
var cb = this._questionCallback;
|
var cb = this._questionCallback;
|
||||||
this._questionCallback = null;
|
this._questionCallback = null;
|
||||||
this.setPrompt(this._oldPrompt);
|
this.setPrompt(this._oldPrompt);
|
||||||
cb(line)
|
cb(line);
|
||||||
} else {
|
} else {
|
||||||
this.emit('line', line);
|
this.emit('line', line);
|
||||||
}
|
}
|
||||||
|
@ -128,9 +128,11 @@ function REPLServer(prompt, stream) {
|
|||||||
try {
|
try {
|
||||||
// First we attempt to eval as expression with parens.
|
// First we attempt to eval as expression with parens.
|
||||||
// This catches '{a : 1}' properly.
|
// This catches '{a : 1}' properly.
|
||||||
ret = vm.runInContext('(' + self.bufferedCommand + ')', context, 'repl');
|
ret = vm.runInContext('(' + self.bufferedCommand + ')',
|
||||||
|
context,
|
||||||
|
'repl');
|
||||||
if (typeof ret !== 'function') success = true;
|
if (typeof ret !== 'function') success = true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
lib/tls.js
18
lib/tls.js
@ -16,15 +16,14 @@ if (process.env.NODE_DEBUG && /tls/.test(process.env.NODE_DEBUG)) {
|
|||||||
|
|
||||||
var Connection = null;
|
var Connection = null;
|
||||||
try {
|
try {
|
||||||
Connection = process.binding('crypto').Connection;
|
Connection = process.binding('crypto').Connection;
|
||||||
}
|
} catch (e) {
|
||||||
catch (e) {
|
|
||||||
throw new Error('node.js not compiled with openssl crypto support.');
|
throw new Error('node.js not compiled with openssl crypto support.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Base class of both CleartextStream and EncryptedStream
|
// Base class of both CleartextStream and EncryptedStream
|
||||||
function CryptoStream (pair) {
|
function CryptoStream(pair) {
|
||||||
stream.Stream.call(this);
|
stream.Stream.call(this);
|
||||||
|
|
||||||
this.pair = pair;
|
this.pair = pair;
|
||||||
@ -82,8 +81,8 @@ CryptoStream.prototype.setTimeout = function(n) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function parseCertString (s) {
|
// EG '/C=US/ST=CA/L=SF/O=Joyent/OU=Node.js/CN=ca1/emailAddress=ry@clouds.org'
|
||||||
// EG '/C=US/ST=CA/L=SF/O=Joyent/OU=Node.js/CN=ca1/emailAddress=ry@tinyclouds.org'
|
function parseCertString(s) {
|
||||||
var out = {};
|
var out = {};
|
||||||
var parts = s.split('/');
|
var parts = s.split('/');
|
||||||
// Note: can always skip the first one.
|
// Note: can always skip the first one.
|
||||||
@ -267,7 +266,7 @@ CryptoStream.prototype._suck = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function CleartextStream (pair) {
|
function CleartextStream(pair) {
|
||||||
CryptoStream.call(this, pair);
|
CryptoStream.call(this, pair);
|
||||||
}
|
}
|
||||||
util.inherits(CleartextStream, CryptoStream);
|
util.inherits(CleartextStream, CryptoStream);
|
||||||
@ -286,7 +285,7 @@ CleartextStream.prototype._blower = function(pool, offset, length) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function EncryptedStream (pair) {
|
function EncryptedStream(pair) {
|
||||||
CryptoStream.call(this, pair);
|
CryptoStream.call(this, pair);
|
||||||
}
|
}
|
||||||
util.inherits(EncryptedStream, CryptoStream);
|
util.inherits(EncryptedStream, CryptoStream);
|
||||||
@ -380,8 +379,7 @@ exports.createSecurePair = function(credentials,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* Attempt to cycle OpenSSLs buffers in various directions.
|
||||||
* Attempt to cycle OpenSSLs buffers in various directions.
|
|
||||||
*
|
*
|
||||||
* An SSL Connection can be viewed as four separate piplines,
|
* An SSL Connection can be viewed as four separate piplines,
|
||||||
* interacting with one has no connection to the behavoir of
|
* interacting with one has no connection to the behavoir of
|
||||||
|
@ -305,7 +305,7 @@ function urlResolveObject(source, relative) {
|
|||||||
|
|
||||||
// if the path is allowed to go above the root, restore leading ..s
|
// if the path is allowed to go above the root, restore leading ..s
|
||||||
if (!mustEndAbs && !removeAllDots) {
|
if (!mustEndAbs && !removeAllDots) {
|
||||||
for ( ; up--; up) {
|
for (; up--; up) {
|
||||||
srcPath.unshift('..');
|
srcPath.unshift('..');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,11 @@
|
|||||||
|
|
||||||
var path = requireNative('path');
|
var path = requireNative('path');
|
||||||
|
|
||||||
var modulePaths = [path.resolve(process.execPath, '..', '..', 'lib', 'node')];
|
var modulePaths = [path.resolve(process.execPath,
|
||||||
|
'..',
|
||||||
|
'..',
|
||||||
|
'lib',
|
||||||
|
'node')];
|
||||||
|
|
||||||
if (process.env['HOME']) {
|
if (process.env['HOME']) {
|
||||||
modulePaths.unshift(path.resolve(process.env['HOME'], '.node_libraries'));
|
modulePaths.unshift(path.resolve(process.env['HOME'], '.node_libraries'));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user