diff --git a/src/common.js b/src/common.js index 61eaf893..66ecae44 100644 --- a/src/common.js +++ b/src/common.js @@ -65,6 +65,7 @@ module.exports = function setup(env) { function createDebug(namespace) { var prevTime; + var lastId = 0; function debug() { // disabled? @@ -118,11 +119,19 @@ module.exports = function setup(env) { logFn.apply(self, args); } + function id () { + // disabled? + if (!debug.enabled) return; + + return lastId++; + } + debug.namespace = namespace; debug.enabled = createDebug.enabled(namespace); debug.useColors = createDebug.useColors(); debug.color = selectColor(namespace); debug.destroy = destroy; + debug.id = id; //debug.formatArgs = formatArgs; //debug.rawLog = rawLog; diff --git a/test/debug_spec.js b/test/debug_spec.js index 142fbe79..237ced91 100644 --- a/test/debug_spec.js +++ b/test/debug_spec.js @@ -62,6 +62,21 @@ describe('debug', function () { expect(log.log).to.have.been.calledOnce; }); }); + + context('with `log.id` function', function () { + it('increments internal id when enabled', function () { + expect(log.id()).to.equal(0); + expect(log.id()).to.equal(1); + expect(log.id()).to.equal(2); + }); + + it('does not increment internal id when disabled', function () { + debug.disable('test'); + + expect(log.id()).to.equal(undefined); + expect(log.id()).to.equal(undefined); + }); + }); }); });