Skip to content

Commit bf88540

Browse files
committed
enabled() updates existing debug instances, add destroy() function (#440)
* dynamically updatable instances * add a `destroy()` function to debug instances So that "dynamically created instances" can clean up after themselves
1 parent 9d7c997 commit bf88540

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

src/debug.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ exports.enable = enable;
1313
exports.enabled = enabled;
1414
exports.humanize = require('ms');
1515

16+
/**
17+
* Active `debug` instances.
18+
*/
19+
exports.instances = [];
20+
1621
/**
1722
* The currently active debug mode names, and names to skip.
1823
*/
@@ -114,15 +119,23 @@ function createDebug(namespace) {
114119
debug.enabled = exports.enabled(namespace);
115120
debug.useColors = exports.useColors();
116121
debug.color = selectColor(namespace);
122+
debug.destroy = destroy;
117123

118124
// env-specific initialization logic for debug instances
119125
if ('function' === typeof exports.init) {
120126
exports.init(debug);
121127
}
122128

129+
exports.instances.push(debug);
130+
123131
return debug;
124132
}
125133

134+
function destroy () {
135+
const index = exports.instances.indexOf(this)
136+
exports.instances.splice(index, 1)
137+
}
138+
126139
/**
127140
* Enables a debug mode by namespaces. This can include modes
128141
* separated by a colon and wildcards.
@@ -149,6 +162,11 @@ function enable(namespaces) {
149162
exports.names.push(new RegExp('^' + namespaces + '$'));
150163
}
151164
}
165+
166+
for (var i = 0; i < exports.instances.length; i++) {
167+
var instance = exports.instances[i];
168+
instance.enabled = exports.enabled(instance.namespace);
169+
}
152170
}
153171

154172
/**

0 commit comments

Comments
 (0)