debug
Advanced tools
Comparing version 2.0.0 to 2.1.0
@@ -5,3 +5,3 @@ { | ||
"description": "small debugging utility", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"keywords": [ | ||
@@ -8,0 +8,0 @@ "debug", |
2.1.0 / 2014-10-15 | ||
================== | ||
* node: implement `DEBUG_FD` env variable support | ||
* package: update "browserify" to v6.1.0 | ||
* package: add "license" field to package.json (#135, @panuhorsmalahti) | ||
2.0.0 / 2014-09-01 | ||
@@ -3,0 +10,0 @@ ================== |
84
node.js
@@ -29,2 +29,14 @@ | ||
/** | ||
* The file descriptor to write the `debug()` calls to. | ||
* Set the `DEBUG_FD` env variable to override with another value. i.e.: | ||
* | ||
* $ DEBUG_FD=3 node script.js 3>debug.log | ||
*/ | ||
var fd = parseInt(process.env.DEBUG_FD, 10) || 2; | ||
var stream = 1 === fd ? process.stdout : | ||
2 === fd ? process.stderr : | ||
createWritableStdioStream(fd); | ||
/** | ||
* Is stdout a TTY? Colored output is enabled when `true`. | ||
@@ -36,3 +48,3 @@ */ | ||
if (0 === debugColors.length) { | ||
return tty.isatty(1); | ||
return tty.isatty(fd); | ||
} else { | ||
@@ -96,3 +108,3 @@ return '0' !== debugColors | ||
function log() { | ||
return console.error.apply(console, arguments); | ||
return stream.write(util.format.apply(this, arguments) + '\n'); | ||
} | ||
@@ -129,2 +141,70 @@ | ||
/** | ||
* Copied from `node/src/node.js`. | ||
* | ||
* XXX: It's lame that node doesn't expose this API out-of-the-box. It also | ||
* relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. | ||
*/ | ||
function createWritableStdioStream (fd) { | ||
var stream; | ||
var tty_wrap = process.binding('tty_wrap'); | ||
// Note stream._type is used for test-module-load-list.js | ||
switch (tty_wrap.guessHandleType(fd)) { | ||
case 'TTY': | ||
stream = new tty.WriteStream(fd); | ||
stream._type = 'tty'; | ||
// Hack to have stream not keep the event loop alive. | ||
// See https://github.com/joyent/node/issues/1726 | ||
if (stream._handle && stream._handle.unref) { | ||
stream._handle.unref(); | ||
} | ||
break; | ||
case 'FILE': | ||
var fs = require('fs'); | ||
stream = new fs.SyncWriteStream(fd, { autoClose: false }); | ||
stream._type = 'fs'; | ||
break; | ||
case 'PIPE': | ||
case 'TCP': | ||
var net = require('net'); | ||
stream = new net.Socket({ | ||
fd: fd, | ||
readable: false, | ||
writable: true | ||
}); | ||
// FIXME Should probably have an option in net.Socket to create a | ||
// stream from an existing fd which is writable only. But for now | ||
// we'll just add this hack and set the `readable` member to false. | ||
// Test: ./node test/fixtures/echo.js < /etc/passwd | ||
stream.readable = false; | ||
stream.read = null; | ||
stream._type = 'pipe'; | ||
// FIXME Hack to have stream not keep the event loop alive. | ||
// See https://github.com/joyent/node/issues/1726 | ||
if (stream._handle && stream._handle.unref) { | ||
stream._handle.unref(); | ||
} | ||
break; | ||
default: | ||
// Probably an error on in uv_guess_handle() | ||
throw new Error('Implement me. Unknown stream file type!'); | ||
} | ||
// For supporting legacy API we put the FD here. | ||
stream.fd = fd; | ||
stream._isStdio = true; | ||
return stream; | ||
} | ||
/** | ||
* Enable namespaces listed in `process.env.DEBUG` initially. | ||
@@ -131,0 +211,0 @@ */ |
{ | ||
"name": "debug", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"repository": { | ||
@@ -18,2 +18,3 @@ "type": "git", | ||
], | ||
"license": "MIT", | ||
"dependencies": { | ||
@@ -23,3 +24,3 @@ "ms": "0.6.2" | ||
"devDependencies": { | ||
"browserify": "5.11.0", | ||
"browserify": "6.1.0", | ||
"mocha": "*" | ||
@@ -26,0 +27,0 @@ }, |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No License Found
License(Experimental) License information could not be found
Found 1 instance in 1 package
23916
0
472
6
1