Pinsave/counterstrike
1
1 2/**3 * Module exports.4 */5 6module.exports = deprecate;7 8/**9 * Mark that a method should not be used.10 * Returns a modified function which warns once by default.11 *12 * If `localStorage.noDeprecation = true` is set, then it is a no-op.13 *14 * If `localStorage.throwDeprecation = true` is set, then deprecated functions15 * will throw an Error when invoked.16 *17 * If `localStorage.traceDeprecation = true` is set, then deprecated functions18 * will invoke `console.trace()` instead of `console.error()`.19 *20 * @param {Function} fn - the function to deprecate21 * @param {String} msg - the string to print to the console when `fn` is invoked22 * @returns {Function} a new "deprecated" version of `fn`23 * @api public24 */25 26function deprecate (fn, msg) {27 if (config('noDeprecation')) {28 return fn;29 }30 31 var warned = false;32 function deprecated() {33 if (!warned) {34 if (config('throwDeprecation')) {35 throw new Error(msg);36 } else if (config('traceDeprecation')) {37 console.trace(msg);38 } else {39 console.warn(msg);40 }41 warned = true;42 }43 return fn.apply(this, arguments);44 }45 46 return deprecated;47}48 49/**50 * Checks `localStorage` for boolean values for the given `name`.51 *52 * @param {String} name53 * @returns {Boolean}54 * @api private55 */56 57function config (name) {58 // accessing global.localStorage can trigger a DOMException in sandboxed iframes59 try {60 if (!global.localStorage) return false;61 } catch (_) {62 return false;63 }64 var val = global.localStorage[name];65 if (null == val) return false;66 return String(val).toLowerCase() === 'true';67}68 