source: imaps-frontend/node_modules/debug/src/browser.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 2 weeks ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 5.9 KB
Line 
1/* eslint-env browser */
2
3/**
4 * This is the web browser implementation of `debug()`.
5 */
6
7exports.formatArgs = formatArgs;
8exports.save = save;
9exports.load = load;
10exports.useColors = useColors;
11exports.storage = localstorage();
12exports.destroy = (() => {
13 let warned = false;
14
15 return () => {
16 if (!warned) {
17 warned = true;
18 console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
19 }
20 };
21})();
22
23/**
24 * Colors.
25 */
26
27exports.colors = [
28 '#0000CC',
29 '#0000FF',
30 '#0033CC',
31 '#0033FF',
32 '#0066CC',
33 '#0066FF',
34 '#0099CC',
35 '#0099FF',
36 '#00CC00',
37 '#00CC33',
38 '#00CC66',
39 '#00CC99',
40 '#00CCCC',
41 '#00CCFF',
42 '#3300CC',
43 '#3300FF',
44 '#3333CC',
45 '#3333FF',
46 '#3366CC',
47 '#3366FF',
48 '#3399CC',
49 '#3399FF',
50 '#33CC00',
51 '#33CC33',
52 '#33CC66',
53 '#33CC99',
54 '#33CCCC',
55 '#33CCFF',
56 '#6600CC',
57 '#6600FF',
58 '#6633CC',
59 '#6633FF',
60 '#66CC00',
61 '#66CC33',
62 '#9900CC',
63 '#9900FF',
64 '#9933CC',
65 '#9933FF',
66 '#99CC00',
67 '#99CC33',
68 '#CC0000',
69 '#CC0033',
70 '#CC0066',
71 '#CC0099',
72 '#CC00CC',
73 '#CC00FF',
74 '#CC3300',
75 '#CC3333',
76 '#CC3366',
77 '#CC3399',
78 '#CC33CC',
79 '#CC33FF',
80 '#CC6600',
81 '#CC6633',
82 '#CC9900',
83 '#CC9933',
84 '#CCCC00',
85 '#CCCC33',
86 '#FF0000',
87 '#FF0033',
88 '#FF0066',
89 '#FF0099',
90 '#FF00CC',
91 '#FF00FF',
92 '#FF3300',
93 '#FF3333',
94 '#FF3366',
95 '#FF3399',
96 '#FF33CC',
97 '#FF33FF',
98 '#FF6600',
99 '#FF6633',
100 '#FF9900',
101 '#FF9933',
102 '#FFCC00',
103 '#FFCC33'
104];
105
106/**
107 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
108 * and the Firebug extension (any Firefox version) are known
109 * to support "%c" CSS customizations.
110 *
111 * TODO: add a `localStorage` variable to explicitly enable/disable colors
112 */
113
114// eslint-disable-next-line complexity
115function useColors() {
116 // NB: In an Electron preload script, document will be defined but not fully
117 // initialized. Since we know we're in Chrome, we'll just detect this case
118 // explicitly
119 if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
120 return true;
121 }
122
123 // Internet Explorer and Edge do not support colors.
124 if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
125 return false;
126 }
127
128 let m;
129
130 // Is webkit? http://stackoverflow.com/a/16459606/376773
131 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
132 // eslint-disable-next-line no-return-assign
133 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
134 // Is firebug? http://stackoverflow.com/a/398120/376773
135 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
136 // Is firefox >= v31?
137 // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
138 (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) ||
139 // Double check webkit in userAgent just in case we are in a worker
140 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
141}
142
143/**
144 * Colorize log arguments if enabled.
145 *
146 * @api public
147 */
148
149function formatArgs(args) {
150 args[0] = (this.useColors ? '%c' : '') +
151 this.namespace +
152 (this.useColors ? ' %c' : ' ') +
153 args[0] +
154 (this.useColors ? '%c ' : ' ') +
155 '+' + module.exports.humanize(this.diff);
156
157 if (!this.useColors) {
158 return;
159 }
160
161 const c = 'color: ' + this.color;
162 args.splice(1, 0, c, 'color: inherit');
163
164 // The final "%c" is somewhat tricky, because there could be other
165 // arguments passed either before or after the %c, so we need to
166 // figure out the correct index to insert the CSS into
167 let index = 0;
168 let lastC = 0;
169 args[0].replace(/%[a-zA-Z%]/g, match => {
170 if (match === '%%') {
171 return;
172 }
173 index++;
174 if (match === '%c') {
175 // We only are interested in the *last* %c
176 // (the user may have provided their own)
177 lastC = index;
178 }
179 });
180
181 args.splice(lastC, 0, c);
182}
183
184/**
185 * Invokes `console.debug()` when available.
186 * No-op when `console.debug` is not a "function".
187 * If `console.debug` is not available, falls back
188 * to `console.log`.
189 *
190 * @api public
191 */
192exports.log = console.debug || console.log || (() => {});
193
194/**
195 * Save `namespaces`.
196 *
197 * @param {String} namespaces
198 * @api private
199 */
200function save(namespaces) {
201 try {
202 if (namespaces) {
203 exports.storage.setItem('debug', namespaces);
204 } else {
205 exports.storage.removeItem('debug');
206 }
207 } catch (error) {
208 // Swallow
209 // XXX (@Qix-) should we be logging these?
210 }
211}
212
213/**
214 * Load `namespaces`.
215 *
216 * @return {String} returns the previously persisted debug modes
217 * @api private
218 */
219function load() {
220 let r;
221 try {
222 r = exports.storage.getItem('debug');
223 } catch (error) {
224 // Swallow
225 // XXX (@Qix-) should we be logging these?
226 }
227
228 // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
229 if (!r && typeof process !== 'undefined' && 'env' in process) {
230 r = process.env.DEBUG;
231 }
232
233 return r;
234}
235
236/**
237 * Localstorage attempts to return the localstorage.
238 *
239 * This is necessary because safari throws
240 * when a user disables cookies/localstorage
241 * and you attempt to access it.
242 *
243 * @return {LocalStorage}
244 * @api private
245 */
246
247function localstorage() {
248 try {
249 // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
250 // The Browser also has localStorage in the global context.
251 return localStorage;
252 } catch (error) {
253 // Swallow
254 // XXX (@Qix-) should we be logging these?
255 }
256}
257
258module.exports = require('./common')(exports);
259
260const {formatters} = module.exports;
261
262/**
263 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
264 */
265
266formatters.j = function (v) {
267 try {
268 return JSON.stringify(v);
269 } catch (error) {
270 return '[UnexpectedJSONParseError]: ' + error.message;
271 }
272};
Note: See TracBrowser for help on using the repository browser.