You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					68 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					68 lines
				
				1.6 KiB
			| 
											3 years ago
										 | 
 | ||
|  | /** | ||
|  |  * 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'; | ||
|  | } |