| 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; |
|
|