This repository has been archived by the owner. It is now read-only.

Only warn once when the deprecation warning wrapper is called multiple times #2641

Closed
wants to merge 1 commit into
from
Jump to file or symbol
Failed to load files and symbols.
+15 −6
Split
View
@@ -569,21 +569,30 @@
NativeModule._cache[this.id] = this;
};
+ // Wrap a core module's method in a wrapper that will warn on first use
+ // and then return the result of invoking the original function. After
+ // first being called the original method is restored.
NativeModule.prototype.deprecate = function(method, message) {
var original = this.exports[method];
var self = this;
+ var warned = false;
+ message = message || '';
Object.defineProperty(this.exports, method, {
enumerable: false,
value: function() {
- message = self.id + '.' + method + ' is deprecated. ' + (message || '');
+ if (!warned) {
+ warned = true;
+ message = self.id + '.' + method + ' is deprecated. ' + message;
- if ((new RegExp('\\b' + self.id + '\\b')).test(process.env.NODE_DEBUG))
- console.trace(message);
- else
- console.error(message);
+ var moduleIdCheck = new RegExp('\\b' + self.id + '\\b');
+ if (moduleIdCheck.test(process.env.NODE_DEBUG))
+ console.trace(message);
+ else
+ console.error(message);
- self.exports[method] = original;
+ self.exports[method] = original;
+ }
return original.apply(this, arguments);
}
});