| /* eslint-env browser */ | 
|   | 
| /** | 
|  * This is the web browser implementation of `debug()`. | 
|  */ | 
|   | 
| exports.formatArgs = formatArgs; | 
| exports.save = save; | 
| exports.load = load; | 
| exports.useColors = useColors; | 
| exports.storage = localstorage(); | 
| exports.destroy = (() => { | 
|     let warned = false; | 
|   | 
|     return () => { | 
|         if (!warned) { | 
|             warned = true; | 
|             console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); | 
|         } | 
|     }; | 
| })(); | 
|   | 
| /** | 
|  * Colors. | 
|  */ | 
|   | 
| exports.colors = [ | 
|     '#0000CC', | 
|     '#0000FF', | 
|     '#0033CC', | 
|     '#0033FF', | 
|     '#0066CC', | 
|     '#0066FF', | 
|     '#0099CC', | 
|     '#0099FF', | 
|     '#00CC00', | 
|     '#00CC33', | 
|     '#00CC66', | 
|     '#00CC99', | 
|     '#00CCCC', | 
|     '#00CCFF', | 
|     '#3300CC', | 
|     '#3300FF', | 
|     '#3333CC', | 
|     '#3333FF', | 
|     '#3366CC', | 
|     '#3366FF', | 
|     '#3399CC', | 
|     '#3399FF', | 
|     '#33CC00', | 
|     '#33CC33', | 
|     '#33CC66', | 
|     '#33CC99', | 
|     '#33CCCC', | 
|     '#33CCFF', | 
|     '#6600CC', | 
|     '#6600FF', | 
|     '#6633CC', | 
|     '#6633FF', | 
|     '#66CC00', | 
|     '#66CC33', | 
|     '#9900CC', | 
|     '#9900FF', | 
|     '#9933CC', | 
|     '#9933FF', | 
|     '#99CC00', | 
|     '#99CC33', | 
|     '#CC0000', | 
|     '#CC0033', | 
|     '#CC0066', | 
|     '#CC0099', | 
|     '#CC00CC', | 
|     '#CC00FF', | 
|     '#CC3300', | 
|     '#CC3333', | 
|     '#CC3366', | 
|     '#CC3399', | 
|     '#CC33CC', | 
|     '#CC33FF', | 
|     '#CC6600', | 
|     '#CC6633', | 
|     '#CC9900', | 
|     '#CC9933', | 
|     '#CCCC00', | 
|     '#CCCC33', | 
|     '#FF0000', | 
|     '#FF0033', | 
|     '#FF0066', | 
|     '#FF0099', | 
|     '#FF00CC', | 
|     '#FF00FF', | 
|     '#FF3300', | 
|     '#FF3333', | 
|     '#FF3366', | 
|     '#FF3399', | 
|     '#FF33CC', | 
|     '#FF33FF', | 
|     '#FF6600', | 
|     '#FF6633', | 
|     '#FF9900', | 
|     '#FF9933', | 
|     '#FFCC00', | 
|     '#FFCC33' | 
| ]; | 
|   | 
| /** | 
|  * Currently only WebKit-based Web Inspectors, Firefox >= v31, | 
|  * and the Firebug extension (any Firefox version) are known | 
|  * to support "%c" CSS customizations. | 
|  * | 
|  * TODO: add a `localStorage` variable to explicitly enable/disable colors | 
|  */ | 
|   | 
| // eslint-disable-next-line complexity | 
| function useColors() { | 
|     // NB: In an Electron preload script, document will be defined but not fully | 
|     // initialized. Since we know we're in Chrome, we'll just detect this case | 
|     // explicitly | 
|     if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { | 
|         return true; | 
|     } | 
|   | 
|     // Internet Explorer and Edge do not support colors. | 
|     if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { | 
|         return false; | 
|     } | 
|   | 
|     // Is webkit? http://stackoverflow.com/a/16459606/376773 | 
|     // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | 
|     return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || | 
|         // Is firebug? http://stackoverflow.com/a/398120/376773 | 
|         (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || | 
|         // Is firefox >= v31? | 
|         // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | 
|         (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || | 
|         // Double check webkit in userAgent just in case we are in a worker | 
|         (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); | 
| } | 
|   | 
| /** | 
|  * Colorize log arguments if enabled. | 
|  * | 
|  * @api public | 
|  */ | 
|   | 
| function formatArgs(args) { | 
|     args[0] = (this.useColors ? '%c' : '') + | 
|         this.namespace + | 
|         (this.useColors ? ' %c' : ' ') + | 
|         args[0] + | 
|         (this.useColors ? '%c ' : ' ') + | 
|         '+' + module.exports.humanize(this.diff); | 
|   | 
|     if (!this.useColors) { | 
|         return; | 
|     } | 
|   | 
|     const c = 'color: ' + this.color; | 
|     args.splice(1, 0, c, 'color: inherit'); | 
|   | 
|     // The final "%c" is somewhat tricky, because there could be other | 
|     // arguments passed either before or after the %c, so we need to | 
|     // figure out the correct index to insert the CSS into | 
|     let index = 0; | 
|     let lastC = 0; | 
|     args[0].replace(/%[a-zA-Z%]/g, match => { | 
|         if (match === '%%') { | 
|             return; | 
|         } | 
|         index++; | 
|         if (match === '%c') { | 
|             // We only are interested in the *last* %c | 
|             // (the user may have provided their own) | 
|             lastC = index; | 
|         } | 
|     }); | 
|   | 
|     args.splice(lastC, 0, c); | 
| } | 
|   | 
| /** | 
|  * Invokes `console.debug()` when available. | 
|  * No-op when `console.debug` is not a "function". | 
|  * If `console.debug` is not available, falls back | 
|  * to `console.log`. | 
|  * | 
|  * @api public | 
|  */ | 
| exports.log = console.debug || console.log || (() => {}); | 
|   | 
| /** | 
|  * Save `namespaces`. | 
|  * | 
|  * @param {String} namespaces | 
|  * @api private | 
|  */ | 
| function save(namespaces) { | 
|     try { | 
|         if (namespaces) { | 
|             exports.storage.setItem('debug', namespaces); | 
|         } else { | 
|             exports.storage.removeItem('debug'); | 
|         } | 
|     } catch (error) { | 
|         // Swallow | 
|         // XXX (@Qix-) should we be logging these? | 
|     } | 
| } | 
|   | 
| /** | 
|  * Load `namespaces`. | 
|  * | 
|  * @return {String} returns the previously persisted debug modes | 
|  * @api private | 
|  */ | 
| function load() { | 
|     let r; | 
|     try { | 
|         r = exports.storage.getItem('debug'); | 
|     } catch (error) { | 
|         // Swallow | 
|         // XXX (@Qix-) should we be logging these? | 
|     } | 
|   | 
|     // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | 
|     if (!r && typeof process !== 'undefined' && 'env' in process) { | 
|         r = process.env.DEBUG; | 
|     } | 
|   | 
|     return r; | 
| } | 
|   | 
| /** | 
|  * Localstorage attempts to return the localstorage. | 
|  * | 
|  * This is necessary because safari throws | 
|  * when a user disables cookies/localstorage | 
|  * and you attempt to access it. | 
|  * | 
|  * @return {LocalStorage} | 
|  * @api private | 
|  */ | 
|   | 
| function localstorage() { | 
|     try { | 
|         // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context | 
|         // The Browser also has localStorage in the global context. | 
|         return localStorage; | 
|     } catch (error) { | 
|         // Swallow | 
|         // XXX (@Qix-) should we be logging these? | 
|     } | 
| } | 
|   | 
| module.exports = require('./common')(exports); | 
|   | 
| const {formatters} = module.exports; | 
|   | 
| /** | 
|  * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | 
|  */ | 
|   | 
| formatters.j = function (v) { | 
|     try { | 
|         return JSON.stringify(v); | 
|     } catch (error) { | 
|         return '[UnexpectedJSONParseError]: ' + error.message; | 
|     } | 
| }; |