68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 
 | ||
|  | /** | ||
|  |  * 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'; | ||
|  | } |