|
import extend from './extend'; |
|
import { hooks } from './hooks'; |
|
import isUndefined from './is-undefined'; |
|
|
|
function warn(msg) { |
|
if (hooks.suppressDeprecationWarnings === false && |
|
(typeof console !== 'undefined') && console.warn) { |
|
console.warn('Deprecation warning: ' + msg); |
|
} |
|
} |
|
|
|
export function deprecate(msg, fn) { |
|
var firstTime = true; |
|
|
|
return extend(function () { |
|
if (hooks.deprecationHandler != null) { |
|
hooks.deprecationHandler(null, msg); |
|
} |
|
if (firstTime) { |
|
var args = []; |
|
var arg; |
|
for (var i = 0; i < arguments.length; i++) { |
|
arg = ''; |
|
if (typeof arguments[i] === 'object') { |
|
arg += '\n[' + i + '] '; |
|
for (var key in arguments[0]) { |
|
arg += key + ': ' + arguments[0][key] + ', '; |
|
} |
|
arg = arg.slice(0, -2); |
|
} else { |
|
arg = arguments[i]; |
|
} |
|
args.push(arg); |
|
} |
|
warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); |
|
firstTime = false; |
|
} |
|
return fn.apply(this, arguments); |
|
}, fn); |
|
} |
|
|
|
var deprecations = {}; |
|
|
|
export function deprecateSimple(name, msg) { |
|
if (hooks.deprecationHandler != null) { |
|
hooks.deprecationHandler(name, msg); |
|
} |
|
if (!deprecations[name]) { |
|
warn(msg); |
|
deprecations[name] = true; |
|
} |
|
} |
|
|
|
hooks.suppressDeprecationWarnings = false; |
|
hooks.deprecationHandler = null; |
|
|