| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
/** * Module exports. */module.exports = deprecate;/** * Mark that a method should not be used. * Returns a modified function which warns once by default. * * If `localStorage.noDeprecation = true` is set, then it is a no-op. * * If `localStorage.throwDeprecation = true` is set, then deprecated functions * will throw an Error when invoked. * * If `localStorage.traceDeprecation = true` is set, then deprecated functions * will invoke `console.trace()` instead of `console.error()`. * * @param {Function} fn - the function to deprecate * @param {String} msg - the string to print to the console when `fn` is invoked * @returns {Function} a new "deprecated" version of `fn` * @api public */function deprecate (fn, msg) {  if (config('noDeprecation')) {    return fn;  }  var warned = false;  function deprecated() {    if (!warned) {      if (config('throwDeprecation')) {        throw new Error(msg);      } else if (config('traceDeprecation')) {        console.trace(msg);      } else {        console.warn(msg);      }      warned = true;    }    return fn.apply(this, arguments);  }  return deprecated;}/** * Checks `localStorage` for boolean values for the given `name`. * * @param {String} name * @returns {Boolean} * @api private */function config (name) {  // accessing global.localStorage can trigger a DOMException in sandboxed iframes  try {    if (!global.localStorage) return false;  } catch (_) {    return false;  }  var val = global.localStorage[name];  if (null == val) return false;  return String(val).toLowerCase() === 'true';}
 |