[Pkg-javascript-commits] [node-debug] 01/03: New upstream version 3.1.0

Paolo Greppi paolog-guest at moszumanska.debian.org
Fri Nov 3 08:32:19 UTC 2017


This is an automated email from the git hooks/post-receive script.

paolog-guest pushed a commit to branch master
in repository node-debug.

commit f6d7aec7e1b1f3f9e52ef263d433b161bb0ea41b
Author: Paolo Greppi <paolo.greppi at libpf.com>
Date:   Fri Nov 3 09:15:58 2017 +0100

    New upstream version 3.1.0
---
 .eslintrc                            |   3 +
 .gitignore                           |   5 +-
 .travis.yml                          |  14 ++-
 CHANGELOG.md                         |  52 +++++++++-
 Makefile                             |  44 +++++----
 README.md                            | 182 +++++++++++++++++++++++------------
 component.json                       |  19 ----
 example/browser.html                 |  26 -----
 example/wildcards.js                 |  10 --
 examples/browser/colors.html         |  28 ++++++
 {example => examples/node}/app.js    |   6 +-
 examples/node/colors.js              |   8 ++
 {example => examples/node}/stdout.js |   2 +-
 examples/node/wildcards.js           |  10 ++
 {example => examples/node}/worker.js |   4 +-
 package.json                         |  14 +--
 src/browser.js                       |  32 +++---
 src/debug.js                         |  37 +++++--
 src/index.js                         |   2 +-
 src/node.js                          | 135 ++++++++------------------
 20 files changed, 361 insertions(+), 272 deletions(-)

diff --git a/.eslintrc b/.eslintrc
index 8a37ae2..146371e 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -3,6 +3,9 @@
     "browser": true,
     "node": true
   },
+  "globals": {
+    "chrome": true
+  },
   "rules": {
     "no-console": 0,
     "no-empty": [1, { "allowEmptyCatch": true }]
diff --git a/.gitignore b/.gitignore
index f459ae9..f0cf3a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,10 @@
 node_modules
 *.sock
 build
-yarn.lock
 npm-debug.log
 dist
 coverage
+
+# lockfiles
+yarn.lock
+package-lock.json
diff --git a/.travis.yml b/.travis.yml
index 6c6090c..a764300 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,14 +1,20 @@
+sudo: false
 
 language: node_js
+
 node_js:
-  - "6"
-  - "5"
   - "4"
+  - "6"
+  - "8"
 
 install:
-  - make node_modules
+  - make install
 
 script:
   - make lint
   - make test
-  - make coveralls
+
+matrix:
+  include:
+  - node_js: '8'
+    env: BROWSER=1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3eaa74b..820d21e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,54 @@
 
+3.1.0 / 2017-09-26
+==================
+
+  * Add `DEBUG_HIDE_DATE` env var (#486)
+  * Remove ReDoS regexp in %o formatter (#504)
+  * Remove "component" from package.json
+  * Remove `component.json`
+  * Ignore package-lock.json
+  * Examples: fix colors printout
+  * Fix: browser detection
+  * Fix: spelling mistake (#496, @EdwardBetts)
+
+3.0.1 / 2017-08-24
+==================
+
+  * Fix: Disable colors in Edge and Internet Explorer (#489)
+
+3.0.0 / 2017-08-08
+==================
+
+  * Breaking: Remove DEBUG_FD (#406)
+  * Breaking: Use `Date#toISOString()` instead to `Date#toUTCString()` when output is not a TTY (#418)
+  * Breaking: Make millisecond timer namespace specific and allow 'always enabled' output (#408)
+  * Addition: document `enabled` flag (#465)
+  * Addition: add 256 colors mode (#481)
+  * Addition: `enabled()` updates existing debug instances, add `destroy()` function (#440)
+  * Update: component: update "ms" to v2.0.0
+  * Update: separate the Node and Browser tests in Travis-CI
+  * Update: refactor Readme, fixed documentation, added "Namespace Colors" section, redid screenshots
+  * Update: separate Node.js and web browser examples for organization
+  * Update: update "browserify" to v14.4.0
+  * Fix: fix Readme typo (#473)
+
+2.6.9 / 2017-09-22
+==================
+
+  * remove ReDoS regexp in %o formatter (#504)
+
+2.6.8 / 2017-05-18
+==================
+
+  * Fix: Check for undefined on browser globals (#462, @marbemac)
+
+2.6.7 / 2017-05-16
+==================
+
+  * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom)
+  * Fix: Inline extend function in node implementation (#452, @dougwilson)
+  * Docs: Fix typo (#455, @msasad)
+
 2.6.5 / 2017-04-27
 ==================
   
@@ -10,7 +60,7 @@
 2.6.4 / 2017-04-20
 ==================
 
-  * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo)
+  * Fix: bug that would occur if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo)
   * Chore: ignore bower.json in npm installations. (#437, @joaovieira)
   * Misc: update "ms" to v0.7.3 (@tootallnate)
 
diff --git a/Makefile b/Makefile
index 584da8b..3ddd136 100644
--- a/Makefile
+++ b/Makefile
@@ -15,36 +15,44 @@ YARN ?= $(shell which yarn)
 PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm))
 BROWSERIFY ?= $(NODE) $(BIN)/browserify
 
-.FORCE:
-
 install: node_modules
 
+browser: dist/debug.js
+
 node_modules: package.json
 	@NODE_ENV= $(PKG) install
 	@touch node_modules
 
-lint: .FORCE
-	eslint browser.js debug.js index.js node.js
-
-test-node: .FORCE
-	istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
-
-test-browser: .FORCE
-	mkdir -p dist
-
+dist/debug.js: src/*.js node_modules
+	@mkdir -p dist
 	@$(BROWSERIFY) \
 		--standalone debug \
 		. > dist/debug.js
 
-	karma start --single-run
-	rimraf dist
+lint:
+	@eslint *.js src/*.js
+
+test-node:
+	@istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
+	@cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
 
-test: .FORCE
-	concurrently \
+test-browser:
+	@$(MAKE) browser
+	@karma start --single-run
+
+test-all:
+	@concurrently \
 		"make test-node" \
 		"make test-browser"
 
-coveralls:
-	cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
+test:
+	@if [ "x$(BROWSER)" = "x" ]; then \
+		$(MAKE) test-node; \
+		else \
+		$(MAKE) test-browser; \
+	fi
+
+clean:
+	rimraf dist coverage
 
-.PHONY: all install clean distclean
+.PHONY: browser install clean lint test test-all test-node test-browser
diff --git a/README.md b/README.md
index 4aeab13..8e754d1 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,11 @@
 # debug
-[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug)  [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master)  [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) 
+[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug)  [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master)  [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers)
 [![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors)
 
+<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png">
 
-
-A tiny node.js debugging utility modelled after node core's debugging technique.
-
-**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)**
+A tiny JavaScript debugging utility modelled after Node.js core's debugging
+technique. Works in Node.js and web browsers.
 
 ## Installation
 
@@ -18,7 +17,7 @@ $ npm install debug
 
 `debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
 
-Example _app.js_:
+Example [_app.js_](./examples/node/app.js):
 
 ```js
 var debug = require('debug')('http')
@@ -27,7 +26,7 @@ var debug = require('debug')('http')
 
 // fake app
 
-debug('booting %s', name);
+debug('booting %o', name);
 
 http.createServer(function(req, res){
   debug(req.method + ' ' + req.url);
@@ -41,81 +40,128 @@ http.createServer(function(req, res){
 require('./worker');
 ```
 
-Example _worker.js_:
+Example [_worker.js_](./examples/node/worker.js):
 
 ```js
-var debug = require('debug')('worker');
+var a = require('debug')('worker:a')
+  , b = require('debug')('worker:b');
 
-setInterval(function(){
-  debug('doing some work');
-}, 1000);
+function work() {
+  a('doing lots of uninteresting work');
+  setTimeout(work, Math.random() * 1000);
+}
+
+work();
+
+function workb() {
+  b('doing some work');
+  setTimeout(workb, Math.random() * 2000);
+}
+
+workb();
 ```
 
- The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
+The `DEBUG` environment variable is then used to enable these based on space or
+comma-delimited names.
 
-  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
+Here are some examples:
 
-  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
+<img width="647" alt="screen shot 2017-08-08 at 12 53 04 pm" src="https://user-images.githubusercontent.com/71256/29091703-a6302cdc-7c38-11e7-8304-7c0b3bc600cd.png">
+<img width="647" alt="screen shot 2017-08-08 at 12 53 38 pm" src="https://user-images.githubusercontent.com/71256/29091700-a62a6888-7c38-11e7-800b-db911291ca2b.png">
+<img width="647" alt="screen shot 2017-08-08 at 12 53 25 pm" src="https://user-images.githubusercontent.com/71256/29091701-a62ea114-7c38-11e7-826a-2692bedca740.png">
 
 #### Windows note
 
- On Windows the environment variable is set using the `set` command.
+On Windows the environment variable is set using the `set` command.
 
- ```cmd
- set DEBUG=*,-not_this
- ```
+```cmd
+set DEBUG=*,-not_this
+```
 
- Note that PowerShell uses different syntax to set environment variables.
+Note that PowerShell uses different syntax to set environment variables.
 
- ```cmd
- $env:DEBUG = "*,-not_this"
-  ```
+```cmd
+$env:DEBUG = "*,-not_this"
+```
 
 Then, run the program to be debugged as usual.
 
+
+## Namespace Colors
+
+Every debug instance has a color generated for it based on its namespace name.
+This helps when visually parsing the debug output to identify which debug instance
+a debug line belongs to.
+
+#### Node.js
+
+In Node.js, colors are enabled when stderr is a TTY. You also _should_ install
+the [`supports-color`](https://npmjs.org/supports-color) module alongside debug,
+otherwise debug will only use a small handful of basic colors.
+
+<img width="521" src="https://user-images.githubusercontent.com/71256/29092181-47f6a9e6-7c3a-11e7-9a14-1928d8a711cd.png">
+
+#### Web Browser
+
+Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
+option. These are WebKit web inspectors, Firefox ([since version
+31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
+and the Firebug plugin for Firefox (any version).
+
+<img width="524" src="https://user-images.githubusercontent.com/71256/29092033-b65f9f2e-7c39-11e7-8e32-f6f0d8e865c1.png">
+
+
 ## Millisecond diff
 
-  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
+When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
+
+<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png">
 
-  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
+When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below:
 
-  When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
+<img width="647" src="https://user-images.githubusercontent.com/71256/29091956-6bd78372-7c39-11e7-8c55-c948396d6edd.png">
 
-  ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
 
 ## Conventions
 
-  If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".
+If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".  If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment varia [...]
 
 ## Wildcards
 
-  The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
+The `*` character may be used as a wildcard. Suppose for example your library has
+debuggers named "connect:bodyParser", "connect:compress", "connect:session",
+instead of listing all three with
+`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do
+`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
 
-  You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:".
+You can also exclude specific debuggers by prefixing them with a "-" character.
+For example, `DEBUG=*,-connect:*` would include all debuggers except those
+starting with "connect:".
 
 ## Environment Variables
 
-  When running through Node.js, you can set a few environment variables that will
-  change the behavior of the debug logging:
+When running through Node.js, you can set a few environment variables that will
+change the behavior of the debug logging:
 
 | Name      | Purpose                                         |
 |-----------|-------------------------------------------------|
-| `DEBUG`   | Enables/disabled specific debugging namespaces. |
+| `DEBUG`   | Enables/disables specific debugging namespaces. |
+| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY).  |
 | `DEBUG_COLORS`| Whether or not to use colors in the debug output. |
-| `DEBUG_DEPTH` | Object inspection depth. |
+| `DEBUG_DEPTH` | Object inspection depth.                    |
 | `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. |
 
 
-  __Note:__ The environment variables beginning with `DEBUG_` end up being
-  converted into an Options object that gets used with `%o`/`%O` formatters.
-  See the Node.js documentation for
-  [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
-  for the complete list.
+__Note:__ The environment variables beginning with `DEBUG_` end up being
+converted into an Options object that gets used with `%o`/`%O` formatters.
+See the Node.js documentation for
+[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
+for the complete list.
 
 ## Formatters
 
-
-  Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters:
+Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting.
+Below are the officially supported formatters:
 
 | Formatter | Representation |
 |-----------|----------------|
@@ -126,9 +172,12 @@ Then, run the program to be debugged as usual.
 | `%j`      | JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
 | `%%`      | Single percent sign ('%'). This does not consume an argument. |
 
+
 ### Custom formatters
 
-  You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like:
+You can add custom formatters by extending the `debug.formatters` object.
+For example, if you wanted to add support for rendering a Buffer as hex with
+`%h`, you could do something like:
 
 ```js
 const createDebug = require('debug')
@@ -142,14 +191,16 @@ debug('this is hex: %h', new Buffer('hello world'))
 //   foo this is hex: 68656c6c6f20776f726c6421 +0ms
 ```
 
-## Browser support
-  You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
-  or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
-  if you don't want to build it yourself.
 
-  Debug's enable state is currently persisted by `localStorage`.
-  Consider the situation shown below where you have `worker:a` and `worker:b`,
-  and wish to debug both. You can enable this using `localStorage.debug`:
+## Browser Support
+
+You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
+or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
+if you don't want to build it yourself.
+
+Debug's enable state is currently persisted by `localStorage`.
+Consider the situation shown below where you have `worker:a` and `worker:b`,
+and wish to debug both. You can enable this using `localStorage.debug`:
 
 ```js
 localStorage.debug = 'worker:*'
@@ -170,23 +221,12 @@ setInterval(function(){
 }, 1200);
 ```
 
-#### Web Inspector Colors
-
-  Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
-  option. These are WebKit web inspectors, Firefox ([since version
-  31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
-  and the Firebug plugin for Firefox (any version).
-
-  Colored output looks something like:
-
-  ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png)
-
 
 ## Output streams
 
   By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method:
 
-Example _stdout.js_:
+Example [_stdout.js_](./examples/node/stdout.js):
 
 ```js
 var debug = require('debug');
@@ -208,13 +248,29 @@ error('now goes to stdout via console.info');
 log('still goes to stdout, but via console.info now');
 ```
 
+## Checking whether a debug target is enabled
+
+After you've created a debug instance, you can determine whether or not it is
+enabled by checking the `enabled` property:
+
+```javascript
+const debug = require('debug')('http');
+
+if (debug.enabled) {
+  // do stuff...
+}
+```
+
+You can also manually toggle this property to force the debug instance to be
+enabled or disabled.
+
 
 ## Authors
 
  - TJ Holowaychuk
  - Nathan Rajlich
  - Andrew Rhyne
- 
+
 ## Backers
 
 Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
@@ -290,7 +346,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s
 
 (The MIT License)
 
-Copyright (c) 2014-2016 TJ Holowaychuk <tj at vision-media.ca>
+Copyright (c) 2014-2017 TJ Holowaychuk <tj at vision-media.ca>
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/component.json b/component.json
deleted file mode 100644
index 2ca5172..0000000
--- a/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "name": "debug",
-  "repo": "visionmedia/debug",
-  "description": "small debugging utility",
-  "version": "2.6.5",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
-  ],
-  "main": "src/browser.js",
-  "scripts": [
-    "src/browser.js",
-    "src/debug.js"
-  ],
-  "dependencies": {
-    "rauchg/ms.js": "0.7.1"
-  }
-}
diff --git a/example/browser.html b/example/browser.html
deleted file mode 100644
index 0090418..0000000
--- a/example/browser.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>debug()</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <script src="../dist/debug.js"></script>
-    <script>
-      // type debug.enable('*') in
-      // the console and refresh :)
-
-      var a = debug('worker:a');
-      var b = debug('worker:b');
-
-      setInterval(function(){
-        a('doing some work');
-      }, 1000);
-
-      setInterval(function(){
-        b('doing some work');
-      }, 1200);
-    </script>
-  </head>
-  <body>
-
-  </body>
-</html>
diff --git a/example/wildcards.js b/example/wildcards.js
deleted file mode 100644
index 1fdac20..0000000
--- a/example/wildcards.js
+++ /dev/null
@@ -1,10 +0,0 @@
-
-var debug = {
-  foo: require('../')('test:foo'),
-  bar: require('../')('test:bar'),
-  baz: require('../')('test:baz')
-};
-
-debug.foo('foo')
-debug.bar('bar')
-debug.baz('baz')
\ No newline at end of file
diff --git a/examples/browser/colors.html b/examples/browser/colors.html
new file mode 100644
index 0000000..ce96907
--- /dev/null
+++ b/examples/browser/colors.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>debug()</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <script src="../../dist/debug.js"></script>
+    <script>
+      debug.enable('*')
+
+      for (var i=0; i < debug.colors.length; i++) {
+        const d = debug('example:' + i);
+        d('The color is %o', d.color);
+      }
+    </script>
+    <style type="text/css">
+      body {
+        padding-top: 100px;
+        text-align: center;
+        font-family: sans-serif;
+      }
+    </style>
+  </head>
+  <body>
+    Open your
+    <strong>Web Inspector</strong>
+    to see the <code>debug</code> output
+  </body>
+</html>
diff --git a/example/app.js b/examples/node/app.js
similarity index 74%
rename from example/app.js
rename to examples/node/app.js
index 05374d9..d4a1991 100644
--- a/example/app.js
+++ b/examples/node/app.js
@@ -1,11 +1,11 @@
 
-var debug = require('../')('http')
+var debug = require('../../')('http')
   , http = require('http')
   , name = 'My App';
 
 // fake app
 
-debug('booting %s', name);
+debug('booting %o', name);
 
 http.createServer(function(req, res){
   debug(req.method + ' ' + req.url);
@@ -16,4 +16,4 @@ http.createServer(function(req, res){
 
 // fake worker of some kind
 
-require('./worker');
\ No newline at end of file
+require('./worker');
diff --git a/examples/node/colors.js b/examples/node/colors.js
new file mode 100644
index 0000000..c144ee4
--- /dev/null
+++ b/examples/node/colors.js
@@ -0,0 +1,8 @@
+var debug = require('../../')
+
+debug.enable('*')
+
+for (var i=0; i < debug.colors.length; i++) {
+  const d = debug('example:' + i);
+  d('The color is %o', d.color);
+}
diff --git a/example/stdout.js b/examples/node/stdout.js
similarity index 94%
rename from example/stdout.js
rename to examples/node/stdout.js
index e15322d..c999c4c 100644
--- a/example/stdout.js
+++ b/examples/node/stdout.js
@@ -1,4 +1,4 @@
-var debug = require('../');
+var debug = require('../../');
 var error = debug('app:error');
 
 // by default stderr is used
diff --git a/examples/node/wildcards.js b/examples/node/wildcards.js
new file mode 100644
index 0000000..ca99aef
--- /dev/null
+++ b/examples/node/wildcards.js
@@ -0,0 +1,10 @@
+
+var debug = {
+  foo: require('../../')('test:foo'),
+  bar: require('../../')('test:bar'),
+  baz: require('../../')('test:baz')
+};
+
+debug.foo('foo')
+debug.bar('bar')
+debug.baz('baz')
diff --git a/example/worker.js b/examples/node/worker.js
similarity index 84%
rename from example/worker.js
rename to examples/node/worker.js
index 22225f6..07e3bc5 100644
--- a/example/worker.js
+++ b/examples/node/worker.js
@@ -4,8 +4,8 @@
 // DEBUG=worker:a node example/worker
 // DEBUG=worker:b node example/worker
 
-var a = require('../')('worker:a')
-  , b = require('../')('worker:b');
+var a = require('../../')('worker:a')
+  , b = require('../../')('worker:b');
 
 function work() {
   a('doing lots of uninteresting work');
diff --git a/package.json b/package.json
index 288e632..ada43cf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "debug",
-  "version": "2.6.5",
+  "version": "3.1.0",
   "repository": {
     "type": "git",
     "url": "git://github.com/visionmedia/debug.git"
@@ -18,10 +18,10 @@
   ],
   "license": "MIT",
   "dependencies": {
-    "ms": "0.7.3"
+    "ms": "2.0.0"
   },
   "devDependencies": {
-    "browserify": "9.0.3",
+    "browserify": "14.4.0",
     "chai": "^3.5.0",
     "concurrently": "^3.1.0",
     "coveralls": "^2.11.15",
@@ -39,11 +39,5 @@
     "sinon-chai": "^2.8.0"
   },
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "browser": "./src/browser.js"
 }
diff --git a/src/browser.js b/src/browser.js
index 7978ce7..f5149ff 100644
--- a/src/browser.js
+++ b/src/browser.js
@@ -20,12 +20,17 @@ exports.storage = 'undefined' != typeof chrome
  */
 
 exports.colors = [
-  'lightseagreen',
-  'forestgreen',
-  'goldenrod',
-  'dodgerblue',
-  'darkorchid',
-  'crimson'
+  '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
+  '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
+  '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
+  '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
+  '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
+  '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
+  '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
+  '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
+  '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
+  '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
+  '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
 ];
 
 /**
@@ -40,20 +45,25 @@ function useColors() {
   // NB: In an Electron preload script, document will be defined but not fully
   // initialized. Since we know we're in Chrome, we'll just detect this case
   // explicitly
-  if (window && window.process && window.process.type === 'renderer') {
+  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
     return true;
   }
 
+  // Internet Explorer and Edge do not support colors.
+  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
+    return false;
+  }
+
   // is webkit? http://stackoverflow.com/a/16459606/376773
   // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
-  return (document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
+  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
     // is firebug? http://stackoverflow.com/a/398120/376773
-    (window && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
+    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
     // is firefox >= v31?
     // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
-    (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
+    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
     // double check webkit in userAgent just in case we are in a worker
-    (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
+    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
 }
 
 /**
diff --git a/src/debug.js b/src/debug.js
index 6a5e3fc..77e6384 100644
--- a/src/debug.js
+++ b/src/debug.js
@@ -14,6 +14,11 @@ exports.enabled = enabled;
 exports.humanize = require('ms');
 
 /**
+ * Active `debug` instances.
+ */
+exports.instances = [];
+
+/**
  * The currently active debug mode names, and names to skip.
  */
 
@@ -29,12 +34,6 @@ exports.skips = [];
 exports.formatters = {};
 
 /**
- * Previous log timestamp.
- */
-
-var prevTime;
-
-/**
  * Select a color.
  * @param {String} namespace
  * @return {Number}
@@ -62,6 +61,8 @@ function selectColor(namespace) {
 
 function createDebug(namespace) {
 
+  var prevTime;
+
   function debug() {
     // disabled?
     if (!debug.enabled) return;
@@ -118,15 +119,28 @@ function createDebug(namespace) {
   debug.enabled = exports.enabled(namespace);
   debug.useColors = exports.useColors();
   debug.color = selectColor(namespace);
+  debug.destroy = destroy;
 
   // env-specific initialization logic for debug instances
   if ('function' === typeof exports.init) {
     exports.init(debug);
   }
 
+  exports.instances.push(debug);
+
   return debug;
 }
 
+function destroy () {
+  var index = exports.instances.indexOf(this);
+  if (index !== -1) {
+    exports.instances.splice(index, 1);
+    return true;
+  } else {
+    return false;
+  }
+}
+
 /**
  * Enables a debug mode by namespaces. This can include modes
  * separated by a colon and wildcards.
@@ -141,10 +155,11 @@ function enable(namespaces) {
   exports.names = [];
   exports.skips = [];
 
+  var i;
   var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
   var len = split.length;
 
-  for (var i = 0; i < len; i++) {
+  for (i = 0; i < len; i++) {
     if (!split[i]) continue; // ignore empty strings
     namespaces = split[i].replace(/\*/g, '.*?');
     if (namespaces[0] === '-') {
@@ -153,6 +168,11 @@ function enable(namespaces) {
       exports.names.push(new RegExp('^' + namespaces + '$'));
     }
   }
+
+  for (i = 0; i < exports.instances.length; i++) {
+    var instance = exports.instances[i];
+    instance.enabled = exports.enabled(instance.namespace);
+  }
 }
 
 /**
@@ -174,6 +194,9 @@ function disable() {
  */
 
 function enabled(name) {
+  if (name[name.length - 1] === '*') {
+    return true;
+  }
   var i, len;
   for (i = 0, len = exports.skips.length; i < len; i++) {
     if (exports.skips[i].test(name)) {
diff --git a/src/index.js b/src/index.js
index e12cf4d..cabcbcd 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,7 +3,7 @@
  * treat as a browser.
  */
 
-if (typeof process !== 'undefined' && process.type === 'renderer') {
+if (typeof process === 'undefined' || process.type === 'renderer') {
   module.exports = require('./browser.js');
 } else {
   module.exports = require('./node.js');
diff --git a/src/node.js b/src/node.js
index 3c7407b..d666fb9 100644
--- a/src/node.js
+++ b/src/node.js
@@ -23,7 +23,22 @@ exports.useColors = useColors;
  * Colors.
  */
 
-exports.colors = [6, 2, 3, 4, 5, 1];
+exports.colors = [ 6, 2, 3, 4, 5, 1 ];
+
+try {
+  var supportsColor = require('supports-color');
+  if (supportsColor && supportsColor.level >= 2) {
+    exports.colors = [
+      20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,
+      69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,
+      135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+      172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+      205, 206, 207, 208, 209, 214, 215, 220, 221
+    ];
+  }
+} catch (err) {
+  // swallow - we only care if `supports-color` is available; it doesn't have to be.
+}
 
 /**
  * Build up the default `inspectOpts` object from the environment variables.
@@ -52,30 +67,13 @@ exports.inspectOpts = Object.keys(process.env).filter(function (key) {
 }, {});
 
 /**
- * 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;
-
-if (1 !== fd && 2 !== fd) {
-  util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()
-}
-
-var stream = 1 === fd ? process.stdout :
-             2 === fd ? process.stderr :
-             createWritableStdioStream(fd);
-
-/**
  * Is stdout a TTY? Colored output is enabled when `true`.
  */
 
 function useColors() {
   return 'colors' in exports.inspectOpts
     ? Boolean(exports.inspectOpts.colors)
-    : tty.isatty(fd);
+    : tty.isatty(process.stderr.fd);
 }
 
 /**
@@ -85,7 +83,9 @@ function useColors() {
 exports.formatters.o = function(v) {
   this.inspectOpts.colors = this.useColors;
   return util.inspect(v, this.inspectOpts)
-    .replace(/\s*\n\s*/g, ' ');
+    .split('\n').map(function(str) {
+      return str.trim()
+    }).join(' ');
 };
 
 /**
@@ -109,22 +109,30 @@ function formatArgs(args) {
 
   if (useColors) {
     var c = this.color;
-    var prefix = '  \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m';
+    var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c);
+    var prefix = '  ' + colorCode + ';1m' + name + ' ' + '\u001b[0m';
 
     args[0] = prefix + args[0].split('\n').join('\n' + prefix);
-    args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
+    args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
+  } else {
+    args[0] = getDate() + name + ' ' + args[0];
+  }
+}
+
+function getDate() {
+  if (exports.inspectOpts.hideDate) {
+    return '';
   } else {
-    args[0] = new Date().toUTCString()
-      + ' ' + name + ' ' + args[0];
+    return new Date().toISOString() + ' ';
   }
 }
 
 /**
- * Invokes `util.format()` with the specified arguments and writes to `stream`.
+ * Invokes `util.format()` with the specified arguments and writes to stderr.
  */
 
 function log() {
-  return stream.write(util.format.apply(util, arguments) + '\n');
+  return process.stderr.write(util.format.apply(util, arguments) + '\n');
 }
 
 /**
@@ -156,74 +164,6 @@ function load() {
 }
 
 /**
- * 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;
-}
-
-/**
  * Init logic for `debug` instances.
  *
  * Create a new `inspectOpts` object in case `useColors` is set
@@ -231,7 +171,12 @@ function createWritableStdioStream (fd) {
  */
 
 function init (debug) {
-  debug.inspectOpts = util._extend({}, exports.inspectOpts);
+  debug.inspectOpts = {};
+
+  var keys = Object.keys(exports.inspectOpts);
+  for (var i = 0; i < keys.length; i++) {
+    debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+  }
 }
 
 /**

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-debug.git



More information about the Pkg-javascript-commits mailing list