source: trip-planner-front/node_modules/snapdragon/node_modules/debug/src/browser.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 4.6 KB
Line 
1/**
2 * This is the web browser implementation of `debug()`.
3 *
4 * Expose `debug()` as the module.
5 */
6
7exports = module.exports = require('./debug');
8exports.log = log;
9exports.formatArgs = formatArgs;
10exports.save = save;
11exports.load = load;
12exports.useColors = useColors;
13exports.storage = 'undefined' != typeof chrome
14 && 'undefined' != typeof chrome.storage
15 ? chrome.storage.local
16 : localstorage();
17
18/**
19 * Colors.
20 */
21
22exports.colors = [
23 'lightseagreen',
24 'forestgreen',
25 'goldenrod',
26 'dodgerblue',
27 'darkorchid',
28 'crimson'
29];
30
31/**
32 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
33 * and the Firebug extension (any Firefox version) are known
34 * to support "%c" CSS customizations.
35 *
36 * TODO: add a `localStorage` variable to explicitly enable/disable colors
37 */
38
39function useColors() {
40 // NB: In an Electron preload script, document will be defined but not fully
41 // initialized. Since we know we're in Chrome, we'll just detect this case
42 // explicitly
43 if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
44 return true;
45 }
46
47 // is webkit? http://stackoverflow.com/a/16459606/376773
48 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
49 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
50 // is firebug? http://stackoverflow.com/a/398120/376773
51 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
52 // is firefox >= v31?
53 // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
54 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
55 // double check webkit in userAgent just in case we are in a worker
56 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
57}
58
59/**
60 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
61 */
62
63exports.formatters.j = function(v) {
64 try {
65 return JSON.stringify(v);
66 } catch (err) {
67 return '[UnexpectedJSONParseError]: ' + err.message;
68 }
69};
70
71
72/**
73 * Colorize log arguments if enabled.
74 *
75 * @api public
76 */
77
78function formatArgs(args) {
79 var useColors = this.useColors;
80
81 args[0] = (useColors ? '%c' : '')
82 + this.namespace
83 + (useColors ? ' %c' : ' ')
84 + args[0]
85 + (useColors ? '%c ' : ' ')
86 + '+' + exports.humanize(this.diff);
87
88 if (!useColors) return;
89
90 var c = 'color: ' + this.color;
91 args.splice(1, 0, c, 'color: inherit')
92
93 // the final "%c" is somewhat tricky, because there could be other
94 // arguments passed either before or after the %c, so we need to
95 // figure out the correct index to insert the CSS into
96 var index = 0;
97 var lastC = 0;
98 args[0].replace(/%[a-zA-Z%]/g, function(match) {
99 if ('%%' === match) return;
100 index++;
101 if ('%c' === match) {
102 // we only are interested in the *last* %c
103 // (the user may have provided their own)
104 lastC = index;
105 }
106 });
107
108 args.splice(lastC, 0, c);
109}
110
111/**
112 * Invokes `console.log()` when available.
113 * No-op when `console.log` is not a "function".
114 *
115 * @api public
116 */
117
118function log() {
119 // this hackery is required for IE8/9, where
120 // the `console.log` function doesn't have 'apply'
121 return 'object' === typeof console
122 && console.log
123 && Function.prototype.apply.call(console.log, console, arguments);
124}
125
126/**
127 * Save `namespaces`.
128 *
129 * @param {String} namespaces
130 * @api private
131 */
132
133function save(namespaces) {
134 try {
135 if (null == namespaces) {
136 exports.storage.removeItem('debug');
137 } else {
138 exports.storage.debug = namespaces;
139 }
140 } catch(e) {}
141}
142
143/**
144 * Load `namespaces`.
145 *
146 * @return {String} returns the previously persisted debug modes
147 * @api private
148 */
149
150function load() {
151 var r;
152 try {
153 r = exports.storage.debug;
154 } catch(e) {}
155
156 // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
157 if (!r && typeof process !== 'undefined' && 'env' in process) {
158 r = process.env.DEBUG;
159 }
160
161 return r;
162}
163
164/**
165 * Enable namespaces listed in `localStorage.debug` initially.
166 */
167
168exports.enable(load());
169
170/**
171 * Localstorage attempts to return the localstorage.
172 *
173 * This is necessary because safari throws
174 * when a user disables cookies/localstorage
175 * and you attempt to access it.
176 *
177 * @return {LocalStorage}
178 * @api private
179 */
180
181function localstorage() {
182 try {
183 return window.localStorage;
184 } catch (e) {}
185}
Note: See TracBrowser for help on using the repository browser.